From 5dd87bc7bb2fa36791359395602be9f06d218f1e Mon Sep 17 00:00:00 2001 From: Rbb666 Date: Sun, 17 Dec 2023 21:19:16 +0800 Subject: [PATCH] [bsp/renesas]add ek-ra8d1 bsp --- .github/workflows/bsp_buildings.yml | 1 + bsp/renesas/README.md | 1 + bsp/renesas/libraries/HAL_Drivers/drv_gpio.c | 2 +- bsp/renesas/libraries/HAL_Drivers/drv_log.h | 27 + bsp/renesas/ra8d1-ek/.config | 1050 + bsp/renesas/ra8d1-ek/.cproject | 222 + bsp/renesas/ra8d1-ek/.gitignore | 5 + bsp/renesas/ra8d1-ek/.ignore_format.yml | 9 + bsp/renesas/ra8d1-ek/.project | 28 + bsp/renesas/ra8d1-ek/.secure_azone | 184 + bsp/renesas/ra8d1-ek/.secure_xml | 246 + bsp/renesas/ra8d1-ek/.settings/.rtmenus | Bin 0 -> 1696400 bytes .../ra8d1-ek/.settings/language.settings.xml | 14 + .../.settings/org.eclipse.core.runtime.prefs | 3 + bsp/renesas/ra8d1-ek/.settings/projcfg.ini | 19 + .../ra6m3-temp.JLink.Debug.rttlaunch | 90 + .../ra8d1-ek/.settings/standalone.prefs | 21 + bsp/renesas/ra8d1-ek/Kconfig | 29 + bsp/renesas/ra8d1-ek/README.md | 176 + bsp/renesas/ra8d1-ek/README_EN.md | 143 + bsp/renesas/ra8d1-ek/SConscript | 28 + bsp/renesas/ra8d1-ek/SConstruct | 55 + bsp/renesas/ra8d1-ek/board/Kconfig | 581 + bsp/renesas/ra8d1-ek/board/SConscript | 21 + bsp/renesas/ra8d1-ek/board/board.h | 38 + bsp/renesas/ra8d1-ek/board/lvgl/SConscript | 16 + .../ra8d1-ek/board/lvgl/demo/SConscript | 17 + .../ra8d1-ek/board/lvgl/demo/lv_demo.c | 18 + bsp/renesas/ra8d1-ek/board/lvgl/lv_conf.h | 66 + .../ra8d1-ek/board/lvgl/lv_port_disp.c | 146 + .../ra8d1-ek/board/lvgl/lv_port_indev.c | 136 + bsp/renesas/ra8d1-ek/board/ports/SConscript | 16 + bsp/renesas/ra8d1-ek/board/ports/fal_cfg.h | 38 + bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h | 82 + bsp/renesas/ra8d1-ek/board/ports/lcd_port.h | 36 + .../ra8d1-ek/board/ports/mipi_lcd/SConscript | 13 + .../board/ports/mipi_lcd/mipi_config.c | 226 + bsp/renesas/ra8d1-ek/board/ports/mnt.c | 165 + bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h | 49 + bsp/renesas/ra8d1-ek/board/ra8_it.c | 20 + bsp/renesas/ra8d1-ek/buildinfo.gpdsc | 164 + bsp/renesas/ra8d1-ek/configuration.xml | 1015 + bsp/renesas/ra8d1-ek/docs/picture/front.png | Bin 0 -> 146838 bytes bsp/renesas/ra8d1-ek/memory_regions.scat | 30 + bsp/renesas/ra8d1-ek/project.uvoptx | 769 + bsp/renesas/ra8d1-ek/project.uvprojx | 666 + bsp/renesas/ra8d1-ek/ra/SConscript | 26 + .../CMSIS/Core/Include/cachel1_armv7.h | 411 + .../CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h | 888 + .../CMSIS/Core/Include/cmsis_armclang.h | 1503 + .../CMSIS/Core/Include/cmsis_armclang_ltm.h | 1928 + .../CMSIS/Core/Include/cmsis_compiler.h | 283 + .../CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h | 2211 + .../CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h | 1002 + .../CMSIS/Core/Include/cmsis_version.h | 39 + .../CMSIS/Core/Include/core_armv81mml.h | 4228 ++ .../CMSIS/Core/Include/core_armv8mbl.h | 2222 + .../CMSIS/Core/Include/core_armv8mml.h | 3209 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h | 952 + .../CMSIS_5/CMSIS/Core/Include/core_cm0plus.h | 1087 + .../arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h | 979 + .../CMSIS_5/CMSIS/Core/Include/core_cm23.h | 2297 + .../arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h | 1943 + .../CMSIS_5/CMSIS/Core/Include/core_cm33.h | 3277 ++ .../CMSIS_5/CMSIS/Core/Include/core_cm35p.h | 3277 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h | 2129 + .../CMSIS_5/CMSIS/Core/Include/core_cm55.h | 4817 ++ .../arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h | 2366 + .../CMSIS_5/CMSIS/Core/Include/core_cm85.h | 4672 ++ .../CMSIS_5/CMSIS/Core/Include/core_sc000.h | 1030 + .../CMSIS_5/CMSIS/Core/Include/core_sc300.h | 1917 + .../CMSIS_5/CMSIS/Core/Include/core_starmc1.h | 3592 ++ .../CMSIS_5/CMSIS/Core/Include/mpu_armv7.h | 275 + .../CMSIS_5/CMSIS/Core/Include/mpu_armv8.h | 352 + .../CMSIS_5/CMSIS/Core/Include/pac_armv81.h | 206 + .../CMSIS_5/CMSIS/Core/Include/pmu_armv8.h | 337 + .../CMSIS_5/CMSIS/Core/Include/tz_context.h | 70 + .../ra8d1-ek/ra/arm/CMSIS_5/LICENSE.txt | 201 + .../ra8d1-ek/ra/board/ra8d1_ek/board.h | 63 + .../ra/board/ra8d1_ek/board_ethernet_phy.h | 61 + .../ra8d1-ek/ra/board/ra8d1_ek/board_init.c | 62 + .../ra8d1-ek/ra/board/ra8d1_ek/board_init.h | 58 + .../ra8d1-ek/ra/board/ra8d1_ek/board_leds.c | 71 + .../ra8d1-ek/ra/board/ra8d1_ek/board_leds.h | 75 + .../ra8d1-ek/ra/board/ra8d1_ek/board_sdram.c | 246 + .../ra8d1-ek/ra/board/ra8d1_ek/board_sdram.h | 46 + bsp/renesas/ra8d1-ek/ra/fsp/inc/api/bsp_api.h | 111 + .../ra8d1-ek/ra/fsp/inc/api/fsp_common_api.h | 387 + .../ra8d1-ek/ra/fsp/inc/api/r_ioport_api.h | 206 + .../ra8d1-ek/ra/fsp/inc/api/r_transfer_api.h | 381 + .../ra8d1-ek/ra/fsp/inc/api/r_uart_api.h | 267 + .../ra8d1-ek/ra/fsp/inc/fsp_features.h | 304 + bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_version.h | 90 + .../ra8d1-ek/ra/fsp/inc/instances/r_ioport.h | 527 + .../ra/fsp/inc/instances/r_sci_b_uart.h | 218 + .../cmsis/Device/RENESAS/Include/R7FA8D1BH.h | 43948 ++++++++++++++++ .../cmsis/Device/RENESAS/Include/renesas.h | 150 + .../bsp/cmsis/Device/RENESAS/Include/system.h | 58 + .../bsp/cmsis/Device/RENESAS/Source/startup.c | 151 + .../bsp/cmsis/Device/RENESAS/Source/system.c | 845 + .../ra/fsp/src/bsp/mcu/all/bsp_clocks.c | 2535 + .../ra/fsp/src/bsp/mcu/all/bsp_clocks.h | 1126 + .../ra/fsp/src/bsp/mcu/all/bsp_common.c | 325 + .../ra/fsp/src/bsp/mcu/all/bsp_common.h | 582 + .../src/bsp/mcu/all/bsp_compiler_support.h | 120 + .../ra/fsp/src/bsp/mcu/all/bsp_delay.c | 189 + .../ra/fsp/src/bsp/mcu/all/bsp_delay.h | 87 + .../ra/fsp/src/bsp/mcu/all/bsp_exceptions.h | 58 + .../ra/fsp/src/bsp/mcu/all/bsp_group_irq.c | 131 + .../ra/fsp/src/bsp/mcu/all/bsp_group_irq.h | 83 + .../ra/fsp/src/bsp/mcu/all/bsp_guard.c | 55 + .../ra/fsp/src/bsp/mcu/all/bsp_guard.h | 46 + .../ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c | 41 + .../ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h | 470 + .../ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c | 123 + .../ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h | 229 + .../ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h | 68 + .../ra/fsp/src/bsp/mcu/all/bsp_module_stop.h | 241 + .../src/bsp/mcu/all/bsp_register_protection.c | 133 + .../src/bsp/mcu/all/bsp_register_protection.h | 74 + .../fsp/src/bsp/mcu/all/bsp_rom_registers.c | 256 + .../ra/fsp/src/bsp/mcu/all/bsp_sbrk.c | 106 + .../ra/fsp/src/bsp/mcu/all/bsp_security.c | 637 + .../ra/fsp/src/bsp/mcu/all/bsp_security.h | 47 + .../ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h | 232 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h | 376 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h | 454 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h | 58 + .../ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h | 97 + .../ra8d1-ek/ra/fsp/src/r_ioport/r_ioport.c | 922 + .../ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c | 1817 + bsp/renesas/ra8d1-ek/ra_cfg/SConscript | 20 + .../ra8d1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h | 5 + .../ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h | 62 + .../ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h | 5 + .../fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h | 11 + .../ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h | 560 + .../ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h | 178 + .../ra8d1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h | 13 + .../ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h | 16 + bsp/renesas/ra8d1-ek/ra_gen/SConscript | 20 + bsp/renesas/ra8d1-ek/ra_gen/bsp_clock_cfg.h | 58 + bsp/renesas/ra8d1-ek/ra_gen/common_data.c | 11 + bsp/renesas/ra8d1-ek/ra_gen/common_data.h | 20 + bsp/renesas/ra8d1-ek/ra_gen/hal_data.c | 89 + bsp/renesas/ra8d1-ek/ra_gen/hal_data.h | 24 + bsp/renesas/ra8d1-ek/ra_gen/main.c | 6 + bsp/renesas/ra8d1-ek/ra_gen/pin_data.c | 644 + bsp/renesas/ra8d1-ek/ra_gen/vector_data.c | 29 + bsp/renesas/ra8d1-ek/ra_gen/vector_data.h | 32 + bsp/renesas/ra8d1-ek/rasc_version.txt | 3 + bsp/renesas/ra8d1-ek/rtconfig.h | 257 + bsp/renesas/ra8d1-ek/rtconfig.py | 137 + bsp/renesas/ra8d1-ek/script/ac6/fsp_keep.via | 1 + bsp/renesas/ra8d1-ek/script/fsp.ld | 768 + bsp/renesas/ra8d1-ek/script/fsp.scat | 986 + bsp/renesas/ra8d1-ek/script/memory_regions.ld | 28 + bsp/renesas/ra8d1-ek/src/hal_entry.c | 53 + bsp/renesas/ra8d1-ek/template.uvoptx | 213 + bsp/renesas/ra8d1-ek/template.uvprojx | 424 + bsp/renesas/ra8m1-ek/README.md | 2 +- 161 files changed, 125123 insertions(+), 2 deletions(-) create mode 100644 bsp/renesas/libraries/HAL_Drivers/drv_log.h create mode 100644 bsp/renesas/ra8d1-ek/.config create mode 100644 bsp/renesas/ra8d1-ek/.cproject create mode 100644 bsp/renesas/ra8d1-ek/.gitignore create mode 100644 bsp/renesas/ra8d1-ek/.ignore_format.yml create mode 100644 bsp/renesas/ra8d1-ek/.project create mode 100644 bsp/renesas/ra8d1-ek/.secure_azone create mode 100644 bsp/renesas/ra8d1-ek/.secure_xml create mode 100644 bsp/renesas/ra8d1-ek/.settings/.rtmenus create mode 100644 bsp/renesas/ra8d1-ek/.settings/language.settings.xml create mode 100644 bsp/renesas/ra8d1-ek/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/renesas/ra8d1-ek/.settings/projcfg.ini create mode 100644 bsp/renesas/ra8d1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch create mode 100644 bsp/renesas/ra8d1-ek/.settings/standalone.prefs create mode 100644 bsp/renesas/ra8d1-ek/Kconfig create mode 100644 bsp/renesas/ra8d1-ek/README.md create mode 100644 bsp/renesas/ra8d1-ek/README_EN.md create mode 100644 bsp/renesas/ra8d1-ek/SConscript create mode 100644 bsp/renesas/ra8d1-ek/SConstruct create mode 100644 bsp/renesas/ra8d1-ek/board/Kconfig create mode 100644 bsp/renesas/ra8d1-ek/board/SConscript create mode 100644 bsp/renesas/ra8d1-ek/board/board.h create mode 100644 bsp/renesas/ra8d1-ek/board/lvgl/SConscript create mode 100644 bsp/renesas/ra8d1-ek/board/lvgl/demo/SConscript create mode 100644 bsp/renesas/ra8d1-ek/board/lvgl/demo/lv_demo.c create mode 100644 bsp/renesas/ra8d1-ek/board/lvgl/lv_conf.h create mode 100644 bsp/renesas/ra8d1-ek/board/lvgl/lv_port_disp.c create mode 100644 bsp/renesas/ra8d1-ek/board/lvgl/lv_port_indev.c create mode 100644 bsp/renesas/ra8d1-ek/board/ports/SConscript create mode 100644 bsp/renesas/ra8d1-ek/board/ports/fal_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/board/ports/lcd_port.h create mode 100644 bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/SConscript create mode 100644 bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/mipi_config.c create mode 100644 bsp/renesas/ra8d1-ek/board/ports/mnt.c create mode 100644 bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h create mode 100644 bsp/renesas/ra8d1-ek/board/ra8_it.c create mode 100644 bsp/renesas/ra8d1-ek/buildinfo.gpdsc create mode 100644 bsp/renesas/ra8d1-ek/configuration.xml create mode 100644 bsp/renesas/ra8d1-ek/docs/picture/front.png create mode 100644 bsp/renesas/ra8d1-ek/memory_regions.scat create mode 100644 bsp/renesas/ra8d1-ek/project.uvoptx create mode 100644 bsp/renesas/ra8d1-ek/project.uvprojx create mode 100644 bsp/renesas/ra8d1-ek/ra/SConscript create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h create mode 100644 bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/LICENSE.txt create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board.h create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_ethernet_phy.h create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.c create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.h create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.c create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.h create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.c create mode 100644 bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/api/bsp_api.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/api/fsp_common_api.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_ioport_api.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_transfer_api.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_uart_api.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_features.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_version.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_ioport.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_sci_b_uart.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/r_ioport/r_ioport.c create mode 100644 bsp/renesas/ra8d1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/SConscript create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/SConscript create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/bsp_clock_cfg.h create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/common_data.c create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/common_data.h create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/hal_data.c create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/hal_data.h create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/main.c create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/pin_data.c create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/vector_data.c create mode 100644 bsp/renesas/ra8d1-ek/ra_gen/vector_data.h create mode 100644 bsp/renesas/ra8d1-ek/rasc_version.txt create mode 100644 bsp/renesas/ra8d1-ek/rtconfig.h create mode 100644 bsp/renesas/ra8d1-ek/rtconfig.py create mode 100644 bsp/renesas/ra8d1-ek/script/ac6/fsp_keep.via create mode 100644 bsp/renesas/ra8d1-ek/script/fsp.ld create mode 100644 bsp/renesas/ra8d1-ek/script/fsp.scat create mode 100644 bsp/renesas/ra8d1-ek/script/memory_regions.ld create mode 100644 bsp/renesas/ra8d1-ek/src/hal_entry.c create mode 100644 bsp/renesas/ra8d1-ek/template.uvoptx create mode 100644 bsp/renesas/ra8d1-ek/template.uvprojx diff --git a/.github/workflows/bsp_buildings.yml b/.github/workflows/bsp_buildings.yml index 0ebdb051e3..6c37892351 100644 --- a/.github/workflows/bsp_buildings.yml +++ b/.github/workflows/bsp_buildings.yml @@ -202,6 +202,7 @@ jobs: - "renesas/ra4m2-eco" - "renesas/ra2l1-cpk" - "renesas/ra8m1-ek" + - "renesas/ra8d1-ek" - RTT_BSP: "gd32_n32_apm32" RTT_TOOL_CHAIN: "sourcery-arm" SUB_RTT_BSP: diff --git a/bsp/renesas/README.md b/bsp/renesas/README.md index 9c1e12f1db..e74624ebfb 100644 --- a/bsp/renesas/README.md +++ b/bsp/renesas/README.md @@ -17,6 +17,7 @@ RA 系列 BSP 目前支持情况如下表所示: | [ra2l1-cpk](ra2l1-cpk) | Renesas 官方 CPK-RA2L1 开发板 | | **RA8 系列** | | | [ra8m1-ek](ra8m1-ek) | Renesas 官方 EK-RA8M1 开发板 | +| [ra8d1-ek](ra8d1-ek) | Renesas 官方 EK-RA8D1 开发板 | 可以通过阅读相应 BSP 下的 README 来快速上手,如果想要使用 BSP 更多功能可参考 docs 文件夹下提供的说明文档,如下表所示: diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c b/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c index e8c6cac611..ca9827dc9f 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c @@ -173,7 +173,7 @@ static rt_int8_t ra_pin_read(rt_device_t dev, rt_base_t pin) if ((pin > RA_MAX_PIN_VALUE) || (pin < RA_MIN_PIN_VALUE)) { LOG_E("GPIO pin value is illegal"); - return -RT_ERROR; + return -1; } return R_BSP_PinRead(pin); } diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_log.h b/bsp/renesas/libraries/HAL_Drivers/drv_log.h new file mode 100644 index 0000000000..fc8d3e99ec --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/drv_log.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-11-15 SummerGift first version + */ + +/* + * NOTE: DO NOT include this file on the header file. + */ + +#ifndef LOG_TAG + #define DBG_TAG "drv" +#else + #define DBG_TAG LOG_TAG +#endif /* LOG_TAG */ + +#ifdef DRV_DEBUG + #define DBG_LVL DBG_LOG +#else + #define DBG_LVL DBG_INFO +#endif /* DRV_DEBUG */ + +#include diff --git a/bsp/renesas/ra8d1-ek/.config b/bsp/renesas/ra8d1-ek/.config new file mode 100644 index 0000000000..cb796468ff --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.config @@ -0,0 +1,1050 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=12 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMART is not set +# CONFIG_RT_USING_NANO is not set +# CONFIG_RT_USING_AMP is not set +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=1000 +CONFIG_RT_USING_OVERFLOW_CHECK=y +CONFIG_RT_USING_HOOK=y +CONFIG_RT_HOOK_USING_FUNC_PTR=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=256 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 + +# +# kservice optimization +# +# CONFIG_RT_KSERVICE_USING_STDLIB is not set +# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set +# CONFIG_RT_USING_TINY_FFS is not set +# CONFIG_RT_KPRINTF_USING_LONGLONG is not set +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +# CONFIG_RT_DEBUGING_AUTO_INIT is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_MESSAGEQUEUE_PRIORITY is not set +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_SMALL_MEM is not set +# CONFIG_RT_USING_SLAB is not set +CONFIG_RT_USING_MEMHEAP=y +CONFIG_RT_MEMHEAP_FAST_MODE=y +# CONFIG_RT_MEMHEAP_BEST_MODE is not set +# CONFIG_RT_USING_SMALL_MEM_AS_HEAP is not set +CONFIG_RT_USING_MEMHEAP_AS_HEAP=y +CONFIG_RT_USING_MEMHEAP_AUTO_BINDING=y +# CONFIG_RT_USING_SLAB_AS_HEAP is not set +# CONFIG_RT_USING_USERHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +# CONFIG_RT_USING_MEMTRACE is not set +# CONFIG_RT_USING_HEAP_ISR is not set +CONFIG_RT_USING_HEAP=y +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=128 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart9" +CONFIG_RT_VER_NUM=0x50100 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 +# CONFIG_RT_USING_CACHE is not set +CONFIG_RT_USING_HW_ATOMIC=y +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +CONFIG_RT_USING_CPU_FFS=y +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_M=y +CONFIG_ARCH_ARM_CORTEX_M85=y + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 +# CONFIG_RT_USING_LEGACY is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=4096 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 +CONFIG_FINSH_USING_OPTION_COMPLETION=y + +# +# DFS: device virtual file system +# +# CONFIG_RT_USING_DFS is not set +# CONFIG_RT_USING_DFS_V1 is not set +# CONFIG_RT_USING_DFS_V2 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_3 is not set +# CONFIG_RT_DFS_ELM_LFN_UNICODE_0 is not set +# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set +# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set +# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +# CONFIG_RT_USING_DM is not set +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set +CONFIG_RT_USING_SERIAL=y +# CONFIG_RT_USING_SERIAL_V1 is not set +CONFIG_RT_USING_SERIAL_V2=y +CONFIG_RT_SERIAL_USING_DMA=y +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +# CONFIG_RT_USING_I2C is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +# CONFIG_RT_USING_NULL is not set +# CONFIG_RT_USING_ZERO is not set +# CONFIG_RT_USING_RANDOM is not set +# CONFIG_RT_USING_PWM is not set +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +# CONFIG_RT_USING_WDT is not set +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +# CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set +# CONFIG_RT_USING_HWCRYPTO is not set +# CONFIG_RT_USING_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE is not set +# CONFIG_RT_USING_DEV_BUS is not set +# CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set +# CONFIG_RT_USING_KTIME is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB is not set +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# C/C++ and POSIX layer +# + +# +# ISO-ANSI C layer +# + +# +# Timezone and Daylight Saving Time +# +# CONFIG_RT_LIBC_USING_FULL_TZ_DST is not set +CONFIG_RT_LIBC_USING_LIGHT_TZ_DST=y +CONFIG_RT_LIBC_TZ_DEFAULT_HOUR=8 +CONFIG_RT_LIBC_TZ_DEFAULT_MIN=0 +CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 + +# +# POSIX (Portable Operating System Interface) layer +# +# CONFIG_RT_USING_POSIX_FS is not set +# CONFIG_RT_USING_POSIX_DELAY is not set +# CONFIG_RT_USING_POSIX_CLOCK is not set +# CONFIG_RT_USING_POSIX_TIMER is not set +# CONFIG_RT_USING_PTHREADS is not set +# CONFIG_RT_USING_MODULE is not set + +# +# Interprocess Communication (IPC) +# +# CONFIG_RT_USING_POSIX_PIPE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set +# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set + +# +# Socket is in the 'Network' category +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Network +# +# CONFIG_RT_USING_SAL is not set +# CONFIG_RT_USING_NETDEV is not set +# CONFIG_RT_USING_LWIP is not set +# CONFIG_RT_USING_AT is not set + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_VAR_EXPORT is not set +# CONFIG_RT_USING_RESOURCE_ID is not set +# CONFIG_RT_USING_ADT is not set +# CONFIG_RT_USING_RT_LINK is not set +# CONFIG_RT_USING_VBUS is not set + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LWIP is not set +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set +# CONFIG_PKG_USING_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_RYANMQTT is not set +# CONFIG_PKG_USING_RYANW5500 is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set +# CONFIG_PKG_USING_WOL is not set +# CONFIG_PKG_USING_ZEPHYR_POLLING is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_LUATOS_SOC is not set +# CONFIG_PKG_USING_LUA is not set +# CONFIG_PKG_USING_JERRYSCRIPT is not set +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_3GPP_AMRNB is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_CAIRO is not set +# CONFIG_PKG_USING_PIXMAN is not set +# CONFIG_PKG_USING_PARTITION is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# CONFIG_PKG_USING_ARM_2D is not set +# CONFIG_PKG_USING_MCUBOOT is not set +# CONFIG_PKG_USING_TINYUSB is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set +# CONFIG_PKG_USING_FLASH_BLOB is not set +# CONFIG_PKG_USING_MLIBC is not set + +# +# peripheral libraries and drivers +# + +# +# sensors drivers +# +# CONFIG_PKG_USING_LSM6DSM is not set +# CONFIG_PKG_USING_LSM6DSL is not set +# CONFIG_PKG_USING_LPS22HB is not set +# CONFIG_PKG_USING_HTS221 is not set +# CONFIG_PKG_USING_LSM303AGR is not set +# CONFIG_PKG_USING_BME280 is not set +# CONFIG_PKG_USING_BME680 is not set +# CONFIG_PKG_USING_BMA400 is not set +# CONFIG_PKG_USING_BMI160_BMX160 is not set +# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_MS5805 is not set +# CONFIG_PKG_USING_DA270 is not set +# CONFIG_PKG_USING_DF220 is not set +# CONFIG_PKG_USING_HSHCAL001 is not set +# CONFIG_PKG_USING_BH1750 is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_TSL4531 is not set +# CONFIG_PKG_USING_DS18B20 is not set +# CONFIG_PKG_USING_DHT11 is not set +# CONFIG_PKG_USING_DHTXX is not set +# CONFIG_PKG_USING_GY271 is not set +# CONFIG_PKG_USING_GP2Y10 is not set +# CONFIG_PKG_USING_SGP30 is not set +# CONFIG_PKG_USING_HDC1000 is not set +# CONFIG_PKG_USING_BMP180 is not set +# CONFIG_PKG_USING_BMP280 is not set +# CONFIG_PKG_USING_SHTC1 is not set +# CONFIG_PKG_USING_BMI088 is not set +# CONFIG_PKG_USING_HMC5883 is not set +# CONFIG_PKG_USING_MAX6675 is not set +# CONFIG_PKG_USING_TMP1075 is not set +# CONFIG_PKG_USING_SR04 is not set +# CONFIG_PKG_USING_CCS811 is not set +# CONFIG_PKG_USING_PMSXX is not set +# CONFIG_PKG_USING_RT3020 is not set +# CONFIG_PKG_USING_MLX90632 is not set +# CONFIG_PKG_USING_MLX90393 is not set +# CONFIG_PKG_USING_MLX90392 is not set +# CONFIG_PKG_USING_MLX90397 is not set +# CONFIG_PKG_USING_MS5611 is not set +# CONFIG_PKG_USING_MAX31865 is not set +# CONFIG_PKG_USING_VL53L0X is not set +# CONFIG_PKG_USING_INA260 is not set +# CONFIG_PKG_USING_MAX30102 is not set +# CONFIG_PKG_USING_INA226 is not set +# CONFIG_PKG_USING_LIS2DH12 is not set +# CONFIG_PKG_USING_HS300X is not set +# CONFIG_PKG_USING_ZMOD4410 is not set +# CONFIG_PKG_USING_ISL29035 is not set +# CONFIG_PKG_USING_MMC3680KJ is not set +# CONFIG_PKG_USING_QMP6989 is not set +# CONFIG_PKG_USING_BALANCE is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_STHS34PF80 is not set + +# +# touch drivers +# +# CONFIG_PKG_USING_GT9147 is not set +# CONFIG_PKG_USING_GT1151 is not set +# CONFIG_PKG_USING_GT917S is not set +# CONFIG_PKG_USING_GT911 is not set +# CONFIG_PKG_USING_FT6206 is not set +# CONFIG_PKG_USING_FT5426 is not set +# CONFIG_PKG_USING_FT6236 is not set +# CONFIG_PKG_USING_XPT2046_TOUCH is not set +# CONFIG_PKG_USING_CST816X is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_ILI9341 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set +# CONFIG_PKG_USING_AIP650 is not set +# CONFIG_PKG_USING_FINGERPRINT is not set +# CONFIG_PKG_USING_BT_ECB02C is not set +# CONFIG_PKG_USING_UAT is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_QPID is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_KISSFFT is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_MORSE is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set +# CONFIG_PKG_USING_CorevMCU_CLI is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects and Demos +# +# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set +# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set +# CONFIG_PKG_USING_SEEED_ITG3200 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set +# CONFIG_PKG_USING_SEEED_MP503 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set +# CONFIG_PKG_USING_SEEED_TM1637 is not set + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set + +# +# Uncategorized +# +CONFIG_SOC_FAMILY_RENESAS=y +# CONFIG_SOC_SERIES_R7FA6M3 is not set +# CONFIG_SOC_SERIES_R7FA6M4 is not set +# CONFIG_SOC_SERIES_R7FA2L1 is not set +# CONFIG_SOC_SERIES_R7FA6M5 is not set +# CONFIG_SOC_SERIES_R7FA4M2 is not set +CONFIG_SOC_SERIES_R7FA8M85=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_R7FA8D1AH=y + +# +# On-chip Peripheral Drivers +# +CONFIG_BSP_USING_GPIO=y +# CONFIG_BSP_USING_ONCHIP_FLASH is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_ONCHIP_RTC is not set +CONFIG_BSP_USING_UART=y +# CONFIG_BSP_USING_UART3 is not set +CONFIG_BSP_USING_UART9=y +# CONFIG_BSP_UART9_RX_USING_DMA is not set +# CONFIG_BSP_UART9_TX_USING_DMA is not set +CONFIG_BSP_UART9_RX_BUFSIZE=256 +CONFIG_BSP_UART9_TX_BUFSIZE=0 +# CONFIG_BSP_USING_SCI_SPI is not set +# CONFIG_BSP_USING_SCI is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_I2C is not set +# CONFIG_BSP_USING_FS is not set +# CONFIG_BSP_USING_SDHI is not set +# CONFIG_BSP_USING_PWM is not set +# CONFIG_BSP_USING_CAN is not set +# CONFIG_BSP_USING_LCD is not set +CONFIG_BSP_USING_SDRAM=y +CONFIG_BSP_USING_SDRAM_SIZE=0x8000000 +# CONFIG_BSP_USING_G2D is not set +# CONFIG_BSP_USING_JPEG is not set +# CONFIG_BSP_USING_ETH is not set +# CONFIG_BSP_USING_LVGL is not set diff --git a/bsp/renesas/ra8d1-ek/.cproject b/bsp/renesas/ra8d1-ek/.cproject new file mode 100644 index 0000000000..d2c6e6484c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.cproject @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/.gitignore b/bsp/renesas/ra8d1-ek/.gitignore new file mode 100644 index 0000000000..9ac428c1b3 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.gitignore @@ -0,0 +1,5 @@ +/RTE +/Listings +/Objects +ra_cfg.txt + diff --git a/bsp/renesas/ra8d1-ek/.ignore_format.yml b/bsp/renesas/ra8d1-ek/.ignore_format.yml new file mode 100644 index 0000000000..af51bf92aa --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.ignore_format.yml @@ -0,0 +1,9 @@ +# files format check exclude path, please follow the instructions below to modify; +# If you need to exclude an entire folder, add the folder path in dir_path; +# If you need to exclude a file, add the path to the file in file_path. + +dir_path: +- ra +- ra_gen +- ra_cfg +- RTE diff --git a/bsp/renesas/ra8d1-ek/.project b/bsp/renesas/ra8d1-ek/.project new file mode 100644 index 0000000000..dbce321609 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.project @@ -0,0 +1,28 @@ + + + ra6m3-temp + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.rt-thread.studio.rttnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + diff --git a/bsp/renesas/ra8d1-ek/.secure_azone b/bsp/renesas/ra8d1-ek/.secure_azone new file mode 100644 index 0000000000..2eb395eda8 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.secure_azone @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/.secure_xml b/bsp/renesas/ra8d1-ek/.secure_xml new file mode 100644 index 0000000000..214de30d74 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.secure_xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/.settings/.rtmenus b/bsp/renesas/ra8d1-ek/.settings/.rtmenus new file mode 100644 index 0000000000000000000000000000000000000000..bed57a56a0a5cc87f3e0f1b47d44308bcb5b7f5d GIT binary patch literal 1696400 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

$g` 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 p+h&FIq3f6;76I?La zuKo;_?~Ip%VIKG^5enSo&zaGI&uscw2DjzFR7}vaOvXhc`Patq#oCl(S91$X652eAF3-X zFKty}!>oFm=D{vj%$$l*Yd4$c&0I8uFplylFxtUPiLjPkik*5#_9nMQB-!Q&5Af>Q zk~h|318T)hwJCw20{jyJ)J_GP^>9g2{7F&i5G7rqJs%i~IH{CRS3gN>wsQ=6#OaiMDp}dcyORd3e<@z!7CegM6>D3ayIRv6C+c$T^&?f z7e-uZ(ZHHbpp2^}v)Oik$kc5BL$WBMBHr3U@PdU-YVKXU;7JU-%JNA6gXjZ{h11JEenI)b!wU?8ZUbN8k=KC&MPN^ zUL0?(e)h9gBFI=kmMnx|(sp9}9xao}#K_5M2G0GT>)%bHn0Mr(lU-9cxCzGw@SU3e zkKUACp-p5tffosc&fOwm;?+7477^xVe3Y2<#ZI_$NL@{T-e}b$(;VNHNPJ3wLDv7b z>+YT%huz=FSvOQ+XRF z%ZPqI2K~rIUz-o9H8GeU0iNrM`fB%-PuwR01DTsiQA?Sp#7gc(vxq(ubn<~t7`w>( zuGsZ#D8Ze*I?FG5zo6(5Wb(*o#j`f1SDX$D_|1?hWg$i23_$~wDqfeL78>4xE~ERj zP9@Sah=dMb2mg~iNczJK$U*&hOYF|{57qkc3E|-+_HRJ~dUr(Sm~NFKSXR;Y#BFa3 ztxJw|zqjN!z%LreCzSplY5PfYQbIVffdC}TG>VǼ-03~qW6;ROu8p-P_5e=XVZ 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ࡵT49m2X~R%#Mey*f)g{NMiV=@Q7%gc)dnd$D_@< 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 qNii=>J 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�n9O6!Wm0a{|E%3y@vx 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

#j|rodX+7$s$8>pomuLL{jk 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

q;}k3V0U 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„X$m;GxTrmp{i8vjHE7|=y^|TVyWsw$ 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

&PaDx))Qq4E-3ctu({= zi9tuk3E30=8jy^O+3}tGL@Zo6T%f>f+l+WTrxn1mwLpY*AS9w6`~{a4kPmxO><9!o zr79rz-sD!yw?ouMq@mSjfKa*1_c zxTPoOET}8Tj2%qBwe%7|i!fbF>DrII<7G7sW%6y^h&7hOZ1;=#LswO`BSu+K(5?tp z{2xivV{psmhr?ip^qj5?_9AQ=obEo@EGbv+-H{ISmIlnPG+Z!NXtWc|wEyDMlmo0t zi7&})$1L^_UJI1AM0{;T2js{*4?u%r7Uxf} z%Dc$Vz}2NFGJezO1r4`=H{+id;>`qhBi+A>y@O>&m?)Ro?<^oQ^>BJRz3#QgwawGE zmyr^x0-^3_ffE};8Dbfq88V?w*5*)B_+(^owFT|EV#*k$qMahkvFzw?qI6^Y{;Hu& zrcRW^UfMoqKfD;CHr1hN8LeZ<75Shbw_DXB3{ zx7$3UAXm<`Ej!3;E3GY{^mAfGr)^fQHvf@!)&*$zq5L|u$q0j6P#CuS6)q% zw#vFc@V7w&z2};Z)sM173TUScGPJV@KF^O7?-ulm$AN`$&~qxB-63leC3Ls$BGt2!5#&2=(njdLU!MCr1>Yc!*;8M+ zwa|lSI>(#8FObadH?yhbk5PDQ@ZX0^CGKLmqP;TY7EyNFmrCEe^wSZUCPt4G_a!F0 ztSd`O@u^3sN>k#(MFR>tNBEs&g^9dIgFPq;+rQAr%tlK+d~g)Ue>tdanB2OJle(iH zNS74A%`-=dm-C)lqoTR0pKVS3?G-D`1s(p0kEb zNmHBO)=@Q$qodhLktxI_i3O_ed=TFXAQy8%H{fv+<+tP3v7u(4VdJsz85wd{0PzAd zNlxTRk9!S-qIN`U)%>E5k!`QFsZD8{TTfX{-{gaDzVUGmVVYq@bGIXw`BbMl3U;bN z*4U@!B+ITH1)uqjau%!o2wLZ-!hE`~%&47DgDq_acj=XZU|#IV=vC##@u z9POwRd7e0&d~mSXVSmAH#O(T-BQ^^VkCB88=N}ZnSH$9coc16orA&TW1N6oD*Ps8Q<5gk>J~LkZZ4qFoHM9)Wi`CHHCx) zkr9lxGk*-`R4WeZv0mE(ig5bVp9l+xg-(x*KhKfO{2=pfg)K=p( z?pbNp`NS_%lb~MX=`Y|xStZJ5?Cdd?QzwFiHtjUgxL417B(u38C@p3s{rb;|hn*>< ziXFQPu$-CDP+WvCt-vqJx-e11-i-{i&sr5;1(n=3tMC5kBCv z=9390Blf2cNR*{9?zg3*ecMadiCZxR*^Ri?*={^L2I;hYvKy`Rv<2q`cam+# z6`=Vz@Wruj@|xK5lz^A35UBElu+k3~mP4v(XWl`ND*tNJ0AR2H#*A&cRAGeHwzdGK zJSDi^)l=Hz{rTg{m7tC@b(9{yzYqtt=-^il=DO z63x+J-Da-ir;Ao#Qtj5sg5+y2a)H$MKv0pC8rlD#*WxLEz_VX|^CyF@V!I3tY zyz?fh--ffep~I!j?I55P1Q<-hulA2&wOK$H9*CPDO;p9G#qX@Y_`h%(-r5;FBghQ!pd`?%Z$(VuG*fi-whJ^1L;B~i$Ek9=<3@ur*zt-vYM%UhEJZ( zI!Xvwqpj-{n?&@tStpy!)9I#BK?RZstVhFQL+C|9&wM*_uUOOuXR?y7nrraKn0QmM zYXb9|JBpo_xwv9YUoSg8^~0guOtK=<$eNk62qJUTHb^WZdnAU%FZ=gCkUWT#00-d$ zMz|?;FZ9aI^>BpsNb9V}%%}v?Ov*9WM`fjLJALgs&^;l~9aN{s5N~lXuq92&?&L7$ zcom}utb_sI)F>Hseu*T94RjQ#-wp8Y`gc8D$e)};r{iP7S^wIi8oY#3R|(2)oleiK zSEwk6He8f=_uA`;B)f=;m52>kUz)pkYM3T4d6xoOGYN-09q+hu05ddm%6Kl@p)5C| zK4k@r5KB~2Oa;5Z=_toD37*J^&!N5npC380pH5-&Ot%nO#dP*vC zEok=>zN+&|AN``-mxvPLm4qS`p){!K*_`xAnV6_Nf34l|Iz2u$wnf|FLH=y+u2umn z#|5oRi1$Vf(lqF9CMM=!v?s$az08Vi+-JtUQ_U1Ye?sIf*SOp5lKB#v$JfpE1x01K zVAE|M>_FJ`^7<^w5W7Z_QfI3_&oRBD+jg)^8vcy|DCEvmzKP4L4*rFSiZ#S9mMETZsBYqF*1MByeKldnh)Ap zVorR&&$N4AQ5rkAB;b!%bYd|0EQu#4D@hS)ATBC5R$Fq$^{XhLX*8^to5`9vMQ8YB z0O>^E!Of&^^P1zx%HpU!TFy;OT{hnRg3)zvT6-P+k+ZlOyNaH?U76~_)MO`089Sfl zYs@VVSUvXd+lYn@RRC$}moF1m^iOc&@8j13=yXAxcNg9zR+FmcXl7MNciY^nev0u$ zwAhs>x#LB1U@vOe0DMibg~O6t)fNo4kf^T`d>dhp*IT$XP%77JaVOPG<;JBi5X;^? zH=E1{}bsr4vHYz-c7nsoYqMko`BMd1T++`^0jZim+(xrO1ojC9ATneaa_)L8#XAwk^p z6SHoi%j`4VN@ov*It=NH&_H&L$Q(d^*eH+jWs~}~Z#_2esPF=A{90+i4#IWce7%>& z6S&I=oVx`poi^qWxf#oY(e@&xX&T|b9E6a`R82&?J(hfD@#!sDd#-lAi=2Yt;)y{f zFXy;%{V_6qN92LSmMXKJF!5uC+59xf(x|kg@!K4O+`9qA!ot|i;+H?nZ5(+_l8ahE+0=nGtOPBr!R`BBo>G8TsP<`{c_dDQ}oAZ}N z0@Z54`!|MZI0h(;4<8rU2B_PkL@GUe5iiR%48opnOtZg->k?~ETIW%x58Q0#X?alA zdc-2N1VDmue)h-VMb`rQqG_}>V-#dRU%^^D*fA&FIkKiL^Ki0>IWh*t0}BHZ23K~j zXh8#{@(z(s{0BA=39z?T(26xvawE!--$z?E_m7qnR{M(f;=4tsDj41}t7G+*Xunt$ z_Y$D(nyx>~ur(~S!feiDbZmIose4$zd&Z#{WB+TBC${s>N7VZ?U7_=r#f2Iw0#a^Y zT2EdU!oBH@LrtC`(5~*TV-#XIj|~Y`PTvPC`Xw!dZKZ%Avc3r3L95l~8Sy#Z&d7rD z;2ewQ^~;V?RF}|@j_p}w0DOpH1(kLO!|qD~+lAar)W>L+gctBIz`*Dp;pMTo4-`vb{Iw zl%I8PVa$}|#o;N$FWSt8L{<UmOM`31(LkwbG zD6{%E1EIW>aWIV@4^hCchc8ZE5 zjoiLy75@&#hYQkk?M>i;uM%zAnd`G7Dmhq%O`!iCW*cxr?JU$68U@@&sY zAa?GMsp5@0{Go*s2$YDx#l{mX0Z(_Ybe`CZ%Jh6${xu@|Ti~~g;VC~Yc#Za&oFc-u~YFrSld|A%o1nN)C zpu2Y*sN#}mkRnOMPH5Lq2qIpcu0C$*a{eM@j)z+bPGoXlHaHo27tpN$Cm;aU77Q8H zbK*lf{RYFOax!wO$dtMEADKbAB1oFC7udTpm0IO1aN^{4c{2A>mS}d}1ptpMa;PGN zqj^Oi@V5^Wl%UF3;l8E=A!KKT;>N* zq`u9xx;z_nX~(@gT?9UHEHv)2c&FLvj`%{MEtkFf%K+|tg!b0=^FLnx#f|Mtopq7T zHL2W`VLJeQBN8o^DinuBKzdkP8NcN3p^K~-xcHz`u(t{hTc6PQ(HIh`9xWO4Mn+x4rExSQp&4@L^C;J8dqa1m)CF)d|^p1f^3v}Pfd}k7MboD<&!Nz^Ay<(L*YMPordy3E$PpyJ@(>!5CIvVo^l_v7vkf$DhL2nh#iPpfAt)S`6$OGz)4YG6~nY&QXfJG0|zg{2%Jz}S=K;q|W zexLICi0;?@Snv^6$oAuvFUmq^nOnE=HGEmX`Q3b0pxd9vTJJ=% zWj1}N!+X_?>E!>)P#N_I)MdJ|?)u2*441VW^-^B}^|svL+&G1y?u#8#BH3Hm|XTp!K1XcJ&m%X>RQF z9>6trvReJ6n*380{ZnUIxD132c9wi0$u<4`J5p-zLYR*b#b%oA&@c&zoIZ&D8uX53 z=^5EcucB#bz@iUh5gs9Wqfd4!#3Qd!JS(2gc_@#X2|`92C5s zMPgzT*>lFgQ4}c+@K@bGW71`iX1t?TZ2=5{kG||c)={8$dQG?4a?wV`-%xI^;o_vV zyiJg>OU!HW+CP(~oOH;wQ2ybP&wiwcOsJubjBKamv$6l$Ca@cHem`Fio%4Zev`Gsg zy3#lXx6uKr(n92>T!uOY0eNB&L@gmGYON6WaX03lsEw8X^ooIxhdViG!L0wzu$hN7z@fozD^qsh7onRSNZL5SmXoWF;q^>CE zqR7X- zgCov{VNw2|-yLWYX!PCB#hxz$##G)At?>8roy45Z^$sV)UMsdW9xR_j+Fu?8<%31y zNA`UhGts4kA)=t}qy8e?`=Kr3O~m@{(iAB>zVU0YxW=+g=jm{wDD=PmTcg**-9M1q z-*NhUPJu+ea`rfukFb}F#g_OXct8jKhq&Z%%#I~CMu5l>oDo_^30TR%lNW1uOAz)7 z!Mq208N(}E3(up%1m2rI>@lSi>A}QGL;gyk8n|LlVBluOOw;VZTF%;7#IJZo6SQ6> zd_7Ip4yuvK_83`Njb}uOPTw^zVTT+4i)+hq9@~>w@D~#dVQslVsO=KJ`Uk0eLgT>( zI+ohyRqO6AEq8ZOX$`dZZ80OMz!c{d320^w6aC zIoE|ji^0nG-d%3x&*QKh%tMq^DvM`K^FXFzOplUrACtY_`cRny^o6k>?9jy{5Eudc zie7J9Kj0Vk{&^&{Rr9Z^7b7AHE%JXQQSJp=|>eRbm@KGf8TWN$wOHL zLgoL#@d~7=3#)dZI2+(D-4&oK1)ruhR|R-))3xJK*bUE~CQ(dy7#nT+ltz3?65%pV z_}2W_Z^>myJTD~)!5I5pjYROegF>~0KvZgA%@F+1GKc8IsxatIqaKe)*NXOz>%AAm z*o=GLt}&Y{B&j>B#V5}Djg|DbV2v!}@(lG(RWuseHa|uLti@5;c({_Qyxl?31e7M# z>kFL<+pe&zQ9M}qXt$!vMX=Yq;#~lNr?^gOtid5<|81uTI?QEAGdk?*fdhKR$P;+w z^}f~kBYf1V@_YKDr~>h4_JBLN|8i;9w6Z{D5Lw)$VcIFO>JiD<5@8gK7dxz)Hu}w+ zGil~)^Rod0=Y0!L%_5yWqnAIdt?5bl@z4Q)hPqO_ zu98nJeb@xS^pUkVZC53xZ$jkk2u4Adea535BM#?@9adXOk_gf~>zuRXgoA0b5bYtd zy2@ru?OYZQvgFfifFe^Hbhfqy9WEMzRZ_vIl?_v6!9zMu#r;Fn?s1gq(8lM}$Kb?+ zG7VD~&vj0R`s4%SlF7_{18`Gb0*orJW`yMVde%iN>6%LToa1IY_HCi*b2&cF$?6_>d#!6?}mOrXs z1`xCx4kp9!8YoDpwXGm$xNm;G`||MC-x^)PsecT&JRuGyN_)sWi(`f^=?V(GODsfZ zIoy4@H2)8YrMh(CVocS6eus(y{o)S6->SJ7`KN!*inBcBMBxoSQ9_WuL^Eio1&b&I znC@Q3rM8d?cFwwABIbtXHxQLT&mSK3?Su=P_6W2QmzxX}PWhUV9>06*U0yRcug};Z z;ffWg$aL1MdVc3X4HkFOS3VU$Bw9+06%;q4;z|wW!=MYqM+bHakP^*joVRVx7Ghw& z7oZBGdz(i%RZvE9oocc!J>t002zIc)wy0Ji8C9s@@t8#L6GU@n)`JnqhD~WpuX>hZ z6TUcT^y4LH%FPVNg^+V&DQz4Y`MK&>Jpt%jq^=01aE2R~FU(_oEq>M`#;65WYl1=g z7Nr49*YWJ!yIg-i*_9PL(iuL2R}o)N-8>J=}et!wMA>M z(E>V76bmu#yk?xW-qes%XmTOm?rF9)^G;`Z49ApF!S2Sy%<#Ir)b+}0)*4A)lB z6ZAM!YM=^l4dj}s-t!X<)Cz!VpIN=iOeBqYkzKdN)2!unm;Cs4m&xvFNr(sa7Xncn zOf%&8{Wx8CTwA5`Yd+0t5_0X;nX>wKLxFimHhzQ`t0Eij_JkQA16{CI@Pl|~8;gQL z+Yb=Y{U%=gwzni8E_abIo$L9@Zq$xx9O^!V_hb|rmSHF1-@aQxnw@@jF}m$i8Nv2D z*N*_V!C!uF#KEy^%0-+$f|(#w3Jl|Js##z3jy4=smO}zTGofTt{7j3JQ~gk#yvmIw z7Y_a^*LWkxU17G#`S@?;;RYhtvEv0s=r6|`2LL@l!oLXsI7+r&oTlZeLURH%4zAqq z-P{!3^GntE3Xd$EH_Jt4MOQ-#@}c_0%!2^m*O9f66|Mkz!Rf+(J7(ZtkC&xgQDK%U z#0Z*5{@JJ%<1V2FRlKvp$VZSlQwGS+MN{f${gW#qo|%Mkv@DB?^q=H+x3Klh1JZCW z61+0}Fl+FYeqY=-?tA8S8T?Wsx9)|=f=)T$<(HtbuV8}qnf$tl7rzLkiH1X2KKxla zA<#R@;ouY^#RNb|zGoN1yj`Tu0a))1vBijlN-2ewTXLPVb;c4(>NtocSlCs@xS4u( za*I)?Au4ZtMwO4r%c-L`lxw}mOD}nh9?L#@$uY6tE>jS7>^m8|Us@9L2>zDGw8(C#QMrv2 z>NajbbXB!;+V^It|12H2okJR9!1k`=cD!-SFGG%+3aS8R3x)VM!6;Xv!uX?-@upEm zutn+Yh*M$gt1ujiAQs#KuNT|2R#cTAdC-Yprlm>+fDRyO^6Kh^`nn_oGD;JcI6w1P zT#IC82oao;LMAq$P*;3Qi32bhx5&g9k4J$f5cpsRw;$*s6++t?U*gDcfqxtt^iYJ5 z*aV(s>00FAA|ej7~`4xiM5f`v|>_I3^)IfVb?BiHi)T85zQfjm>1s5-N^m zj8#{;^)c5v60l?_a$#ZOXmzR9Myba>K2Ae`dMBK~ZAXsM?MA|B9!ZC+UqE@zuJwsf zgvZM%^Q#XD)l&C^gefT3fjGl9p#+tS5Y|FL0RA0Is$2TUK>~=EITcYAYoTdd(TAn5 z?&d%-)oR)~%@{|ck5CQe0Z}mw%RIs&8i0lhHqgWz)Q0p)y>wn_c?Y! z8)++!w?SglF6xnbm6*o;V;-YXdGrUr2QjuCHD%&Xj-~>HC4aiSNl66&K}$I_biI0n z*aWTr(?c)@c7h_GG0w(b__Ts!=fPMo0tWclU=~*mzi|L&-W7IiGArw+FcRZn8%E?w zg`Fz>q|pMd(2(dbT1DF8r=o#Me&KC5EKmvr^?ZJvh3@~D?To@;+#laKV`wk0vqY{*2ie!$(tTk_hM$zxP8-(XmU zq@B1=zeKM64~)AYv%-%HU!krKkW_ixZ}|2d?V;J|iI;CtcMaJtbmd-H=_=F9zT0LC8!0` zWTG`w|FHI6ta;F1a6)f}4F$uy1!8z8Uf5SVwly*567*MRxVtr4Xy|yWd&pH1-BOJO z%AA2zcOccu;YmDv8I4lSjgr-C-EV-~UfIMTHIoL5=Elo`gsW@auBTW#!rbxv*o>N2 zyBq+|6^)c=t&}SlGIC?Xm*PNQXQ>V580qN3BwXH%c=epq(@od$=|oF~COQmqxeSW% zEwCb|0+&wJp%v$a&x||4(6)-3Bh|_oVnF%%ghix*z+~-yYx|vnU#8)f+M2DES`w@0 z8>owDa^D(380IV?^p*2h9UF2mJ$H=fXX?v$E9S0n?%%Dc2D*W5CIvq7Q@1q9{{RsGpeg9ta08Bf^jMnJ1)Kgz?bKa z`MVFF!BTmF!?o;gc|;-yVB?20=puVxe~5lpH6qEUXYVa=3VEG(!pr(o*U^-3nQ-Ya z{Z>jxhMxj{k;1)pq)Ju{6+uCEUkDO)qIQ5P9G*bo(b0)VY~Ar;fL53^ zD{}qva8l}_W{JAg+N<4pIh2ZtJR)_-2 zFsp|OJT?)lS9O^GAyvn&2va6S_uc)w=UflX&vBCKXR?iFM`GbZ}sM2W#~vVZLsuJ}Pyvx9F z?qD_r%gDjW+Lhq3jrNg82ROr#DZ8qF7dL{4LkFO<=<{U(PyneL(G1^5Ge-_(Wjwp1 zywH4BsHOptTj;)f<5`d>3v=iNK&O}EV@($L2rR{1KmQ`i@XcAm=Ue^|lLo`d&bCHe zg_}*brS4s8h2C9;nulC%6aJ3Kqx+?S0|v^5s#iNZx5_ym!DTSr39x5!EE`L?G;V>$ zpu{$2$~o8W49Pr+$6_r4SjV38!@KWSY>!X}Zl^_7GDHbQmGQTAT=yk3*8=;f!bG=6 z&`O+|^z5$0L|FDLjt@WkVvWtmpc52;>wOca;>1g`kPYyQ5H}^q$21UPU^0-*jnJUa z$(fuBj-=#V2ma7NIWp+A@U$K15!j6WE-Toz@Rx@m|RJ7@5 zq`CKApI=fFF#!wOu*%vtaXt6CyAXJ1ZyyYQa`+F3gfZZg1>o6y&bY64#7i|v9nn%n z4TP=Uw{rq~H$9ZCZ0J!&888=9xSAUN4~zUEGp>&gCp-s02SAUx_A- zk(>idLGqSn(^7NfpB4VpuF|}Aa(>;$e|j>Mk|1`sMAs^zuxKI zWTXU))`o(|J-*ak?{Ggo&~m%)aFl(WSZq*KPLzT4q;OvL(dykUraa`D4#Snvs^^% zRQ9!uCLEsEa|0)CIIC=TZhgSMScfu`l~I;`#Ba|rgp|JTzv%#B@-c$8Z_4l9`v~L( zwT7Xb{m=>wX~j;6AEpwNgISGN4qGHM6wauDRC1~()LeXu1^t3u{>bIDKyrN*2-F@T z`8XeC7P7}RSPCkk-c%$t702P;gHAwio@PaPP|Oof4Nq3IqwMwB!&3O3{W&k*BX5TN zm+_tVM)n;vpSN(KBiD!4WGdvlQpe%j&hC&X2t}lSyy)wiGLdD0^&P16Nb3~H zxC=3z+w8}84k6>{g25?GJpIQF2t2yU%VHFTE%H85@g3VmFPG`>xa}MUX6-&i{n!x=Evlf z%mTdnpR)$p`h}TU-qjG3*RYiV_!~9IpSxix1oOb>$Ma{6@?$q>hj!F)aq~x#G?2hj zE*X)ePN0|z2RPV1J{qndj-x)SvX?>!GGj~_%q_8ceMLF`u1FYs6 zt*JFE#@jkBi;Y%P*9WO_5ri&XI1@Qr*_eT52*|FZ0k|y=MVGW60^MZ~Ccq96N1#%o zm`2~rxU(yt9yHKl>4x5@3yP&5Ls6xf5kBM-M}r!pYZ?%P6H?1=Iy*xR{j11m?sum^E*|%Tm~{~n&PBd1W>Cnc z8;F6!Nla1S8D$n{#?|mM{(FvEni@+4BX^ft6dzV&S&JV^AbQV=e8#;N75x5pgD!T= zy3dHGClVu=rNh4JIRZfvN~$$!ezs&=IHye66;Yv6BlwYX&DCtzyxB+7&d={__`{EQ zCi@A?(O+Y&dSB}yWYmRGU*_BvT4ubzN<9u}b(+{isH z@yH1nFbbN3Q3X?Ytn^f!s+%n7WW>u69ahMOYeyXj@RtP~0j+1qHxmG0z`MiG&s=NWjsvdSE=x9%C`9zGb4JC;M~+5!9y6{7Zl1lG83Fk< z665GCx`3d<0GblSRmA3A1ecr-4&_BvM-Y-IvZ1Ag#f7+C^g9j@O!-LoBuLeVc8 z@1hBe=9B|eln5iri2QB1FQnRqZKE9r!1?rxT^{Dqi;?K`i30%p)EEcO(lCAbz;O<$ zJvq@<3|EnWp}1e}!Fat*2@<6-ynv zjOhE;%ZYC-M@($dD8kqvdJ_23BNNJb$#R>MKMEMvM}_7WKtikQx0WJX3 zMZV6+nG-AWXnUiR`!2w#Ee}Ezeo{CdCo4 z$27s4SKH*|6NjnXC&Ip&^cHE?Q<)P-!k?{d*Rm=|WHnAQt)s{DxmF0Rfw)4r{_9PZ z$%X+q7A20Y?lMy_TXS^%lK2Y-Z-Ch3&r$}l(ovG-=!lp)F&kK_aIZ#luCbb+a7EH+ zPbUs&Q^^lrCUrd26$e={7g+pQ&OhEjUKM?aVE>b?SbH8 zQKoRk@$BkHBS3wH;Ht;$?OF)k-CgpGzLZbu zN0FDIAeC3~Gwpv8L6Vk(>CYbPK9VeKE(v=FQ->7z8Wc~+QM@{6yzvm2LRetk8Eb(6 zn>ebL-}WkpgKeWXeSF=po-vRh-9p07XDH|3kR}%|lJb0VL)mc})c7(`^;-$v^oQEs zG7I-?Mb|2olY#SeLA2B73syT2K6KvGrEGT;3^T#nXt?ygAZIpQ`6^r~YVVE2DmjLu z!9~8o9q6>0q()A9Hb1_q^J%)Uhw)2wCUZt7b55C#B-~uRkBJ&#-3v8M;%(p<5=b6v zPz*o!YcRjqrbY0&O2BR;HjA%QNOsnC^*?4OyE#_2nHDm>E4yB=FjatPytTi+=0{uK z1g*_+N=t2(uyVVE-0@o+N!MF%F+^hGmtNO*<5ka^}f;j!G={!j#1>|_7 zzdjZA$OK46q5_qDFTeAK+=19b&Ss&)C^v>d$ay%k-B$1}DuytV3#2{+x1Rz5G2S@6 zgG2ZSYlaZ?dyb6+yLJ78}Z-mWus^DrJ1t3}h zhMJ%?sC>iu{Wt1B^t@ie(oeSQAv+rytr2DlDw!nHP!~Q-H1rHjmY>uN9%eM-vzuzW z#Wcs9j^ZTjmgF|$F}3*F?u_9f+UE2#HNnt-%EIDnpZ!VY#<*&!Uc}d8fC9#*X($E1=A0mv?Nu{Z1B1Y^R_H+Obw39YjnbrkO*4WU zJY6eXXE|S#q`nCT=ZEgbd`3;lQq2R+lig=by@zqs&iSqdjkx*F@H?!_HuS7k5OG*s+uT>b(12kE$>m ze}%Vw$S9|ZqPM38Ag6RnB>L7{eiD`*mIJQo$VfuaEb`J$Hn78yZ^3rsqBtfSch%Fgox12e3BTOO zXUfx?31ul7lmx~0P>*n*AT)$f0QcuG$dORuzZa>N&a+7VJSn+e1Kq!3JX$<%4&&woI%1TihY>_#?tOaEVV$vOpq4K zENjD!SoI z4eP7E6W;yMyxBkxtUyCnAQOs zHm`?NO&RvuybC^~1)-&J=HRJ5AhC?#S33f0!j;O-a6{Jvr6?I=OlvAdx@P3mN;+3# zmrCo7DmqNP=HjV4)?6X6Om%H7Y8)UhkS$R$3YqEB%2Qr-jS7^TSxmw`Kgq$ObBQhL zVPckUz!PFDIy-pzKi%)1MI(%`LmK8VxEHvYSJmyHZE=D68ZxM&%MKA|h@OlnvoPB} zDXS%>a}V%*0-2F4dSxf#kx#L{*y&TB=4HrS_$OD8?_0E=VY2$3Nuzbt4}8xF94eYrS(arY0gWlJZPD z%53xf^1qj2OxuVTPULTDw374l@wPxx1q(PMp4U0mFw!V}^pF_#CAD?b#mi4{bBrrG zj`n6|8X&j-$GPgVSlUE}m9TT~P>?*)aY=g2fGA4M&U?XT;l)Qh6P1(*#)(6k2ae=!a+-Q8`i;< zRSpuYk2Qx#lC&)cLg-Mw75E?WL ziSP`ET6Rw=$IxBLRzVJZ2zVr3B};w^p?i_Hi97>yvy($;#76iNCrHJo`C%{h{z*TY z#H*QT_BExQGC!wwOEQI9yT*jhxR({+Qd#{PWHy*t9q7FXxm_&cV)qo4VQQRN6Xq;- z{cWyM!p*q8wV_auj^CmOKJYWz2K*(Qxe4Q&6(1VlUmqmz(+e4>G#|piB)s>443`@f z%4qiT$#M8Yz&{AC#TMB&p3+_NRa}e}!)cRZT&yJx8@MrZ{y4U@?g_t?#qa02B1PgH z?|>A8NgQh6Eu9-(c$iL|lTUH~tvu?Qh{dJ{k{UJqE1oS6Sde9?PHyjH9Myzd37~ts zM0z!?kBAdps>P5B8&j%L<34c?J{yHwAT`?)*#U0GoQbzbBn;qolgFRgFNIBO&kMG| zfEpbYj9A$Za5pP>>VYa-5d#d1jZ>pP-`}q_`a5u944X;(R zEJ`n39^`snIM1(ZGCi9C_(jGk@7?Q--XK@H#;R~++Eb~g_Z1CDJ_~Q~#>P$y^stCu zWb_;;02uz;>>cD`GUsz8WL9W#2?e%ZUaV1>K4>5Rxl zPlW}#jUeF;+}!flyP)g-D7Ls4nd!6Im8Bo1I$Z9W!K$gHUrqyZMGiax!NGFSjJP+@ zu9pi{XFTdU=aLuiPEakJtpXRbr%#q0CF-eC1Dp8gx9Ha=?sqnIAAP(P=&FI5#z8h@ zmU)+K9};w(1CAU*2=GU|RdGbAy9s-$)bUmxcLDuS^CEFi*W#>^*nJq+-#XNcn&`_u zifUc!p2u+yZ#D(u@+?0wo4pA~YaPK9i5m&^;BogdT~$SV+VX*W0tH#Vh9^D8MIx&z}s?se{!eV2y>` zMnRbR|CVnpvDeR|3xoR;T12~gf{7gqd+R{~PTRfN8_Et$AVcd;X)%^1x^*KWPLFXT6ZHq%l}ws(5ir}k_uq(k8x0$nN3 z+g@wj0D2@zdB0@?dWtd-!ZnM7rK$vLo8c962O`5JMFtoyewJ}ZZQa>cH}zo0CfStQ z;hS3H+rpmV5cs1Qd4C;FItN>~tL+O>*CgFArG5Wh(Eg^M5TV3bg`32Z!!c+AszF6} z<_V0o?}%maJMf8c=D(b@4*&)1p4cYI3BI!WQ7J8c zEN2vVK9folb(^xdg!UMT!VnU@1KG{BZs3zCN(^I3{~y8(y#w48 z6&;>##dn9BEaHh|?q-S>`2?ulp})? zJLIA@Aaf)JyqoLK(11IxNfZiAG1%BHb9a5@)w;NZrWmf>xsz^0JzHZXUEmMHC2q8E zX)9DhKE9P3H}yYbS1FWk(;gc+D`?k44B^)eS#0=y-$}u^b9`VIwh$k^v6yrLWcMt( zfW{;{%Kkdsr1v%Dj*RWJHJe*>1f=WjTs@=GqWcFHsV~L6`|@!sCl^y1D5-@Wf}&u{ z#2^7`#f~u35{?_$loOvGnoB66@Ga>2jpPBi6<0HN@FYsSph}ASW9t^wa^Zf^NiBK} zN_HulFx$Zs%C1Q9uDBLmbZpFM=!XKp90?igDWtVU@m~=VIaAwJ_1)nYZ?W4AF)2Lq z=oSvx3t6CosPQPoBP;FR?71yBF?iMiyS>ZD@&S~Wcy*MD!zHfdKIww>qRqpA9+S7e zf(=s;u(O;+a4s3QXoOmmz-x`M9~X^X)ksxV7(0lz)j`tSY7W^Ujdy1+0U+l-PF6OD z4wTFnv)QO86%`)`{L+xJcG$v(bz>D52kxy)H`~9=R~;AuLJEVbt%xbW#IpTanVD)% zSWfJA?(u8*nowudj;1D2MVAKRQ5jz6}q)0!ohZM$2{cCbb*N z4rHP|UcpAJ`{C-)u1~STg893`^1}gn!(7gkf`#jP2OGQ>oWu#6e&l>%wasS8;-bx?84tz6Ov~4GO_V{GuAxo^T}50sQTbdxUbs7%h6Tslf&2zd zz^0X9n&)7jGpayu;H#lQTcL-G6wui<7sVXjVulNiXK6=5j#Z-=DnQs7>vp>mUFC1s zou2uU3Nq$E`RRZ3tzdcOALSrPdg02bIO-nV`SD$Ovyd)&jGXP>ZQ0a~=dkU-WXF zT2@m7gadlPwB_k=IDhPetqT`W;M|fc-4XQy|JpU+?l=rTUK3vVD!jIruU}4f19YSs zz6RE`zBYUevBXMM`-9+hzT4X#bzrVDuPXsk#tcJSp)q+fDWpTt>B+A&&G{iv+`I5i zIFk$1rxu@}b&rHuYvp$p%eNa6{UH*ax7j;lc$d5K%QaQAt@c6mNHFQKNmqBLBqOGk zYGnL|;(vXf-WsT<5oHZ>J@ZQlJTE5sPvlEwiYBYSdD&_Gsy-Myvzdh4Cve(AyN;A^ zKWu6@roVQnVxQ7tKoQ%D7Hcsh3CNncTITF=;N1fN3gj#!khh3zu5FpV7k!`4t?|}l zs?#PITWSxGsAUwN4WUkb+>B~PocXZq>S)yYJQ0%fk2>BQrs=Y?B@5Iv?8>Im_(foN z0g^m0_5~*9wN)Kc3j|f?T?WK$YjNgd5waK1WqK1>A5nipxN(82XP=_kj;y#INNQ8f z%tbh6lfciso9#~K3}fLc2!o7*ijH4q-(Mt4>WmOgO#DO;K7PA8xpN=hqzvVHJN*VT zLi+28c_E9nDB+}0Z8sGq!RK$06GODYm4@5zKaPCW)`Z4w|B!^B$AtolB1m_2qyysp zU~?iU_o6hga7Y?j-~7uF_{_*u2d+HoDH{3cLXLs63Xq5dK9BH*qEIB1`Rbq6qt@&Q z-eHF_TX@=h4cRdh`a`k|^Ld=WYmq|WS#WLmlBpk55PM2pTwH#6f&9-LV3dAE`KrmzJNO8r38>E@1Ik!WS0?^hru=hqEnv- zRUG9Zn}J1L$GzE`j4?Ru-|pjiJn*2AvZuNNcnpdx#I)$GB(ep~%<_(r-~bliqJn4J zr%SE2L~h$;lw=ZYN%Vwhb+>5|oI=OHl^7kmP4)No5e=1s6-cTro|&eX zsUf}LFJzpk>KYGQZ7zgi!+S)o3<*QkL0P+!eZl9vCk%>&-}S-O-PjsUMp#9yemZ)T zVEqsg89QMNAwaqk$5tj-vm_Tz)LX}j4KVH2J1ngM4~$4ft?i-*FU@CX53HGXhNGOt z__HM>xodNXOuCN`A_*#3*Ga@NBUmw|Q1{x}z?VTuw%sp2SEYy*aR>S}B`V$)u!g+k zu7}+n0;Hw4xYY}iwd)lP#awR0AdLpjbs>t9nx>~Ck^lq%8O?*|q zT#6ZwP`j}phHsO0cpqIQV8_WfI4?DNk$|G65mxb`;)itCoOf>9-aWmoy-r8VXw~8* zF=I_Cqpo}~u<-Ai$s|nph;+;AJ5_B3+s~5wAl@EzOr7~2zaFRhWIX$!W9G2JuA<;) zT_zCnLi3n&5|n_>s~+Qy@*Y;t={9Y9XOF4s!Jq3>GsNj8h-3Bf5?ZP#)iveiM_@(6 z(>xUK);JoW8gaR!JCnp8nBtH3rjF#KaqMcaHt!iCy|4xR&I6t;v>`0*c`^-y9o+at zg9VRUw2gy~a6MVP0@;Qd z2{Rp7ewGWUp}Rdow70@))f_NPEPxm^k6H>gieX`yMA`*v1=PO5x<6j5@lV&d#m8#u zK_JX4NyAdiM?!)#h`x67Dz2R*lQox<2ezt*QV8TPUFpDF+E6!F`c!0e455v^)?9S6 z_o?E+SlL0@%0EuY$iUN9d5`f=VLO1W?nX^Bxa<#I=9?HdEznHmN zlYAK*mb;u2KI?fP4?+t;Qr-8+AhJfh5z8JmD%D-~m;Cbm`y4Whg{s3EC;!{_iVQrY zUHgWi1~H_3H}X8VJa8)e_(Ht*1O}=f42^r}{CgZrX!)cMgBfciHo|0A#l6JDyC-uT zKUg1yYjs&96Q+bzbjE#ZKT)n%D$(z8LhDMXjKLbiiyhCd??zw6rVdk~z<>_mIqzpu zRsT@%SmWbI_R>=PlI!Wbak$pR0%Nd@HXyrT4K#r&zMpMJ4m+NWy=$b4WzYm!a4V4N(ZS;oC*0&zw;BIS}me#zO+MCZ8{C zF{94X<oZN`O}oOTFplrl}}z)KoxQV z#5hy0`h}vmK&GF7;peI1KG6n6O>}eK%%E);2;O^d0wIS$WX z?v*WJfZtjZUWDYNGlzg&Yc7oqNA*Z?k&=~Pk;jkQ5rLb}*Ef@Wssj-G_pC!Z(H#2u zk!FoCv{5CHH{_doX&g z`guWc;(=aY%Gieq*vrCJ&S-(ryOUI|ieARw?TZb|4lKwW$E9d=`^t_yR zcuxQ!ln5XmJk7mS*O-^cPY;6hS78)UW0Li{kq$1AAomwp0A2}UxXqO4Da}ogZn_gD zI6-svOU8NWs;LQ0$R$VGuv>?AK95==>iIXbJ1qq(3&&8wWha9R>5%24^C*Sw(*z*4 zbaJB#B*b>^(@t$zwY~*PdlZl9A%3fcu4#4Z?fiEhtY}M3*C<()q|zva8GrnoHK@$> zK$8bH`m=i>6zM0G$DDAbU!y7tUxBF`TQpi?!KVnYQTe=z2on0pgtYNSb}3f0vzC;7 z2Dqr@S@LEM5jUhzIt-3bBq@ZVUxlMCzZO@-HZTV3@a} zBfI!`8_?XLew?*1OF_ z_S}t*Bjq4%{Kw|=osKUVWqHbL8A=4*D(YahvbQTIj z4KfLFO4>GSRG_7N}uK(+e3uDTm*sh$Dh&)reE+VsDN7b(p55NLx}Afq z;$QV2+KcBN3z8vB39z+=HJuyj8dwVMaD~n=W zIc+C7j@td4%%`o7fL|O4#rJ8G(lmrjt*l!Y@pGe$8~ZE}jK8fwEM=&LhosqeG`tD@IVt9(Lx z07GKFPyTkmovV^$WzmSnF=4{tT^APd@Ryxb!LMa&7B z(1`AyqWm8);LjF;uco^WZ3ETZH)hZaQBa?+fa^QT*F+q9X2A!>&rZ*3(-_wMsj!?T zf+YoZuK8WwbxV-2k_z}16iO+#s#lt2_*U_xWHAT$e|>wWP% z(d(ia_5&+<*Vt%E$E%Y3iWkS|yoIQ7itA~M27)_i^?4-&_AUx`hTs16SO@ihxvI_L zb6Uqsm{(!?Py09nCXXCMCEm}cwmdxIza@1wwkT7}qM$+bkPUoD{MEw^O%+?dLsxFG z?7XDRMP;(O{DDPiXN8#m1UE8ZGL0ak^s=Y-njYTWqmzP?7OCg_|HSc;Q>i#U5IJh~ z;hvYM>S$)u3`>Np;V-_mv%beh_TzmrY=iZwI}prN`~Q30bU_vUp;L*C9Gwb!V(E)A z@-Ho-DF3NQ?wyX^ONZRK|3`Jp*!?)&-9w0!_>77aLH!J)J-8Ni9zwPq@=wDJzI%ly zt8UptMCgt_>Q>-0U~xc%+Xt(>v-wNM(;?-BuuklqRR4QGh&$skkP{n_1z z&!!&&ucBV|+=Mr9v}7{3&Ir#~&s?@Mnd1=Rq0M10HA*eUvF`X=UVJs27;?a z%Nv+Jbm7aC)?qfjTLJo716>o6Q)hJ$Td(*Umznp#SvVko6jkQ)RMUi12>@sJwuAuu znH%pYK^~6uC`~wHvNp^(+jBE1l_<4>5$2yQgI1cll&7JlPhekX4Y{pFS;%EaOlVP3 zH>$0vE0Pl`M%oruaiKXGhT^#M-|Mb?)(hRr10>S9DFf-e!gS6lC*%}NpX1!JVs9cg z`V3^fzM|*-L^3>E1FMzbQTJHREo&*r6ItJTw|mut&3dt7!7$6~T3ddg;;Azgqj^3} zJ$N}NIR$J(l*`;aTT&t*v{8_Cb&1(_6a4b%-anCzgMO}sc<%dl)o6WA@gIyjMj(9} z9PRVh0b6rZ>2UB$R*fcIPUiFPx+kZD&(t)CfrNVnKcmFymmsu3OfG#&wKp{#jzy)n z4|iKo_*x40#F+O_00#*wA5P{Bb)D%ZgHu1UeM39le26etD!iW}hYdk`Q0sSr)$bL0 zWXU)Uy|AT9$De^3>kI82jT?X z7cXD8NKSPPVp_evw@~mUgsn3;pP|GCcY;<`q)nusG+D+fi;x`~GCq-x5(wCGy+Hvq zgH68nJBsRo>niO<^Wi7r-Su#}n>#=k;N;}>RF9_B+(pFQ)^}Ns!ZpsxkPXhl|+#qURUbi$p;|gZ6qHhMiwG%Q^=y z@^wURh9 zE^-s^E@%TWeGg~ZWKwPY*8P>ZZ(HlkQ7nR;sSb_3O z%SvIS(h@Ctc)&!1NNSEYa9vf?Gcypy&K>5zg}Qh;DG1?1y#qhT2~?2cdG-TW_z?ss z3neWC0m^vTWljcv1!4Fm$|8t!YD=v9f0a6>6qxqx#igeqL|rp)XU=h{pa*g2f*%;0 z@dw32z^jas<=w=b zx0u+*vt?(&b`{+2Z@`(Nx`HwYdl3YnI9dRspBRdl_(6D&BA`1PG-g_(Ufvp}QJ=bXm%Wo9IUrB;_T3<=?H$uZSE5AY056aG<`U z*+3|z8WbK(l22-aMn1VcX?c_kLxx-2Qm)Vs)h}>e-#W}#aGa4`>=-0^@2F2I3#LAlGGRNB#HEV=#Qz0x6WBB~)NO zI>Fr@xs{_?(5=bV?AD>o`8XbaSH45)e#s?gYUds_c2MX#i6J-M#vW-f#-OAkj^ zUZfIMe`}=2@g4k_!Cs1LWcL@*&h2i6n9HDAT|K>FvkU=v{eMkI6-xqi*12K1Ib zk%0q1e%Mu28+XOYwPWH09n&(5ikkIs(OGKo9cPs@z;`R8gA~#Ap{7Y1(N$rN3 zAy@J-W^%gmRQ>Kb)oG7loBC>&3p+M1-}w=g*TXsJ0zM+lO-ESjufpcFXHc;;_VS#^ zH6v$VhHYVc=eP1b`*$SH$XmerC5{}8Z|MS4MIfNOIa4PuA)sF9>KidRFL#6JUpB}emSZKQw9(W zT(wpaU>!zy#)`X0(1JEt1_uyt-|6V|a7)tt!cQl_2uF3?s0NO@-U_5C84X)4!f@); z=OxiTVQZz}W6a}DG=``S$HUwMowb3^P1#MFaaVT6K9(MP4&p&ibhR?y-Nae>)D_`Y z`NA4QWbFNAU%zC7XU2#kOu{46Wv}ci5D&2t%8*!j zG+CMLT-teHb1bqUVnVnw=ThMo@E*fL_e2AGL?TK3JWpK+q*#zN)O1+^Ko)^%gVCjwaE{#~5BM@K84M<9sg?okk1G%|<#V@-1X=RipY^+Il%8#e8 zk+LyTGviN(Z#ZLkK80_v+Fo}qhU2tV4jRa1uVuCi701#PtLRjZJPBCXQ@qq@&Ypym zQdU{`4|Zx2qiSOP{UpAnn;EeyTP0PP#w($z6>%us+RwIJ%+x(t%WPN<;UTZCV3kW1EhaR8 zOqtE#*ZQ!+)VDcpNdmbHg$grtjlqd^ll0FX7$-@b5RM`gefxJU&~D*1^e{&W7B-J` z7~WzvujaS4wknS?yvnEBLyZwYpI!;_gSy2PF!d8ZhmXgr+BLd7!X4%~+P*^o+wKV0 zBwyt~SST}PWbOQIHG21ZK=;+QrPkfh-}p|#0%Pwo8@L&H$~GZTZ}6KN!;ckwXi^QU z&>{NVCrwom@OMAH`k_#3?ex&;>QZFg6b_Z%YiZ_6+vfi;1oFvcG^)`A9*;>N<6fh# z_2XrtKEwNvfbc-Bd4_jMGfZerm-Z86D()k?aX-iLCArvXDTgJo!Lh`>vj_^{7eP5U zzyA>-lqPw{yrx(QOI!)__<&o^CQKXVE=9fYuZ=mR8<%C+7gCwFxQbg10*LtlH9*S0 z`oz9q1wlH%yhm8!*@_&W$(gVQ=`ymCxjP=tSBNmIz6Hu}s-u`yd^DJ#`}p3FoEs2l zBRy_Ek`pDqfs#c=`Bv+s>!<#TPMK3=L0B;ssAVdBn`&(fw=-&@OVf)oo6@U2MbcAb z_)9fhCq4Qh6dh93!3=<{*a%YGs|Dw0ZnuQhYAwo;*3WAM5@z6Dq$z>>)^ttXVPaEm z3xefkCXd&F{IvRdKtMHs1K3xx-1FgMstM?}!?<9x*2dY7L8)%9GtNunK<4U&Yayej z-5Gg7b7qpB4oOfg0!Uq%-@FJFrdSa2BcXzLZOewK!O_p%rxBCy8t zA67KQet%LSYm0Olw6+$0*Pf|kv#3_=r=>EA6hn29uB`%4j4p-t>HE}jkf-PaF+G^C zN6t3@|2q=5>j(JZSfK}@r$PD%J0ouSC^_#Q6A8Z7EC_&Mpmr`?Y}Wi(7pNF5K`&F#;=8hT zO!+S4eS)bD@iL@IS`D;5JMIF>9P$ln)KQc(H_t_F-`>GCP3ic|RF2J2htW~uaxA!N zw}G|)&rwkXodkJ9mrLySdw&Mr@XMPF4s8i`o}JGT4&}W0*~1Xk`6EvB5c4=Oo+BiW zMlQHHwNcLZ5gc_%9M1#LM)~>D%LmzH!y;!F8{f)rAK5XAenwxwNJIRnL>kSYJRNuG;UObLP=bMfb zc1Kv97->Jo#^uPr>~whf369+BtlMKLr&YKYjK`Qi9L;n$m8C~jPBbWpIJzBlott}G zvq8E-bR5dBgx&wbTep`;a5G`RQFuq6s6T?@*19pS!#vtY&{V+cC^R|MXsY0=UEfa| znrTm2*3GQtWxk2*d?Wee!Vz#RS54$c3GcI+ri_((ZVc(MVUn zy4&fvTP;IlE`wu4scL7JaYXw^k8XyA_Kj0q4uH?PVYSiaAYFjm5gage>qMJ#X9Y#h zr65x3TkRYmQdCg<#Sj4ewW45XS+lFe7+?2D`w)hl)nGAvfGmIfW?Z2JVF<|oSm!># zf*R|;!;gxp8dUPB;}|xp?0!R?HL7{(*Jn1{Uf>j^uyjNIZOPy|Z99v-pfdgTA!uA4 z1Kb$#v{RkBspGjw+U&i;oM*?moEcOYD>Jgf+4y?*Z2K@yF1$HO0`QNKjq4zJ+;#w# z5=xF{v;1{PM)WZ`jZ;7uyritd&0M+OLrt~Yj70Jq0;hQ;F!ktllrNR7Ay)TN7#JeX zc~@1PcT4vcW;Uh$5&)6uW%5k}YO3S)7Yshc-i4Cz5!r2*_eUa~cItD-xW1)|=e+iY z>}Wz5AOqLc`sWS%jEYZ~urWoUNig%kkZZw8`XuC_)ro;miy> z=hUQe%iI#^L<9#A%t5of!)1i)hV2ECccX7?O3X+ASGk`0ihf14l|z*IG*ZpMuN;lv zmJuMA`x_R76~H9t^&V`>HgRz@v}{-Y=&bGfk@=MG_!d453+08*3br%#S+)pEx(WL{ za2HtA?9xYX8~IZMCY;`kC_3VOJ+Da7y;L@gl{U55$}P+3j;O8}G3X)2>j8j^pVqlo z>YLd}F@YPW(q*M=y!b58E4Xkwi2D9f77EaAd+{NK#B;$l{M`w>j{x(l*9)K zuM$2&2R?MCDEC{~&eFb7y@FpVei{jpG~q2=?%p=YxsntMCeix;39g283@ zX|N%dcnW%invM@8jn)+@_k4ii`Gr(i*8SBYF5tBr!>bq(V5vW0&$rg)v~-msZ?mNo zbz4=n*9|OoB5P)gCD)+kp9J|}fJ8n4O%8S?qbQe;%YLyCU)b!UUz@-CmI{fenWOc7WI|HtG~^?7!0w$Yop2!KYTVTQMSOWBpgKyGY&BYQ_T$hQ92D~ z6^9OGcu6fN@Y#ms@Ed9(z}iOAXZvA?F4E+&L2P%4|JmyT8c;z0rx$lVxGn`VXJYA! znUzCHsSRY*=DhLW8A|X0J^BC)>W1M;&U&~--x$M0I^>d@YaSv`5jTfMQLpa`C~CK5 zJdU!hS%_$xSge3&K2~iWF$}CEsI6Fj4_UmyvPNvEB(?9G%>7d%7nr3^tZ-OVJ zk!(i|>EEUf^0P1{2=t}9lK!z>3Cp&~vDJf@E%MA?BB zT0#CLK6mJD!xVZqio|I4aA^OkO2pPVZ{SFEvfA`i9^1GDM7PV% zGXi#M4HkiCN4T{-Tl2(-8Zp^PKCTrgR2q1hZSu{fr~+X2Dh3q>YqK#Ritw+Hg)!Bw zmJzbVyaZ3AcJrb!ZXrG-vX0FwTugFL#b2#J<7kGUYKsM%g9aflTG>r*u6Sv1u4A5* zekiUo9{6JuV1gq&Xp~sLOBglzPk~i|<>_k-Snw&+kTS0E+c>R`A`K$vE)7G@lo({s z!va5^nD*DLI+fTTH@olE84no%6KhkMx5^D=`5syVR2I$+RJs?(b+~jWd&Yx$1^(J=xpbChO1X@fZzQwR-2f ztYN$>Hb{T(!bpl?!}4*#mA9dLbGUJX-OE;>I+0gjxkgqhuVOhLAw>Ui9rW>CG06W8 zXh8C{S_GX2{TU~2eSLvW@NOKjU8A_(lXlT`#-txR@S02x6wBd!3%9q6{%4s##&#qz zH0whXOrrs{O#34$yEjcN3b}R$4qGk!l1_Lq6KrMB2J%Oucj?|6LSG=HU^Y3O%oiuD z{o;reAcjKfPAiS?4-`-zb!3#Z%{jAhF^E62T*c!nnv9hakaCDS?u$!);=JP}S8py4 zuq0u-;vsn0KiUbsHz^M%aoSveomlOHoYfad6jMAbSr(Sh*h2wWPY1xJ)dmhax3Un8 zl-#64GnUPd!$BFf$?OjqBm`65MVfbh7M84~BH-E^tmW9rz(Hp!rpx-KB zlq_EPCez;Cj(O_ow&TeK6>y`|gO>P^V9zollf+B$HJaT$=By)vq%A zGRKvtiIm7#Y!{s9iAqIj1gZsrF43vxF{gKu`!=|4Tkha`a^v~f1DkW4=Jh_2vD(=i>Bt>mp^PM!*?Wc%u0=LB zr*jM^JX`W*1opB%!Yd6dw{-B1!$@b(!VP-6y z6D!(?pwmG3D@#6tyBS}y@M}#*y{^#8U)x0$REnw=>sm19xmp=?uTmn`S z((CnOHzllm(iyqOVA6&l=z7u_LKn9A6v?4!a)-i>iy7lWb#aWd7&5(W40CD|WQbz{ zrF8#CM`zuwdmnXx-_ae+)WiUpg9`hvlF9u6;)=BfBwlB2Q`?*cBfT8svlhC{*Lkyu=Y-DBU> zUqY24$#m=A{DVe{2Va|QfeWddT!yL$-s$1SfFgA#N zmWZ3Qu<7DgD)j?d{w4$x_fzYJJ+njYiToJtH zMi~E$Rqvg9!S#zIfEu@9y)H$PGD&u$FYCwEB<{*?O+*Ecq#U z(qR}wZkI;;u+k0kIIPq8-*pi0nDG&TWnGGmH~cdD4%(05V_4{1+t;l%Wt7c6%kmvZ z?b1Sf=NHQ9CVXUWJX;}^yS3!l3+OO#N^3-%7kT zTS4{!TpOW@$D!Y!c;hg8?5O%k7wV?8I5r9L_{*eCWH(?X0KJ1)nzU>z_)(q)+oT2= zYHS!dDu8V{%UBhkH-e?Z**CPe&!}M=7BS=2CL^UZHceYFTHA-xI6$-b9+onF7&Y}j zs5EbWYaYGUp(HNI45?bhgwqXXn*sG_*K@MKoh?|V5Fr>gqvO`!%M*EJTBr z&^#|4Y!H%uhM~GnLG_X9R|^Pe9^4(mTq+eJ9VH4UM- zw-5bHT&XmC^uIds9NN*@UyckBg9tmC#*rk(ys)*j&K=j|RmRBnLo(GhIk-M0uf;MW z_*I2RAxBtZ#)GFT8`or;Tt zo@P3gvg*3ERB);Yv6WO`rIDJvKa|4yj}F{RzEzm|ab1F_<_huJr!vX$qSE@2Wmssj zmFz9~5HhU40Ju#i^@rw}IZ&m+3>E718e3JT3ieAYxp3A)Us9}jhq?MY<6Ft$sNZ-- zRm#|4oNT<8H7H$Cdk^u8Lh(<6q`xt_J{jR{z$Jdh z?dF4tCVS;y4`}>Qd-ItSl~U9c+X2)1tSDNRCNxhZ9HDKK^L@7%!!E+vKUBBd59>J% z;Ez`~n}}5T6B&TOTvV({2~@+>$%nI?N|4-lyvsHupEzRWDtk)jVr)}hed3=RL}oRt zb+OHgu+1@Z$mPrL#nrZ;k3)xTGvCY_KV~vGKcnvB>5ol*OR*hanYXA>4Z?Xw1j{J9 zY82sOsI$5uH?4N+a?%KGT(gmQ1OxoXx(;GBS7oehxR|O(;E!Tx?OYbDX0i&wx=bn? z`Fkz!CRXS!Q^LogFTki4v8HXmnBF!lHnl{nhOek7AHmcv3dGYP8}eP{lAMx2LM;-& z{8~nYyQRFq3{)m#I`MkK@h3?BHFW){K<5q5A`L(XNn2Gvy;${E*Ee-^SSlg)i%axk z;P3IM{B3>}ew4%Ff3cjH4zsxx*jEtc1~g_ko}9@s1P~i-DPDZW(B=}gh+~szA=u^H zrBl9`aBF~n|`gStlDuwub z3`GiK7-B){3cUbsn7-$8RvIjuw)`*ducPN5tz1zkR*fvUQ4JzW*DNbH?-69UeD?i2 zk*MnuN)1^~=Ae0qwC!?nEpVTUt+}auZgme#w2mGLbuQVXj+|8KKzGZWlq`z0%1T42 z{MYuPaCr$DMDqtnQNpk!jQhhbL3sK!!<4Hl?Gr;nNX>>ts2u~5J)2;StV9-T0Pl9|H(wG?wUke)-aA5GnI@9MEC?t z55>|Pg8fBv6T{b~6;%|?JUC>b`>bx6fX(T{C`V9v97z>yn$%!ZfI(1hc>in;EJCRs zx6ymq1u}R54f-bWc-wD_3_vuTfAjmP4=Lf;DNpMy!Qai&_TMJJ_f`F%2k_%nL zc4N~;8Ea?DoHisJdm&Wx*{VF=At%E%0erN>Z}BQSmZ!Ts$Fus;H&P^1XKc~U z3a)i-zV65m6{BFs6nkK663OKITJcXOi|z`y9bcBTd(w%jI8}{TC95eB*YAlcLekK# zW9k!!TH53rPYx%RdAQ(ohBwG-bwh!vfx!o$z*@gFnw%$WCPi_Qe@}x`l8e zb8plB^yZwR8C*xvU+>zxob{|zD;2b3>J7GQidB9QIe$kOG0iQ?HX}ert`)gf{$_{D z)YcLt%l%+wzbyS&857iFztXNK2boeU@W>nkw4kL+!5dM<#Uo)%5u!Owx)PkFC^Xvq zid0I)z92th&F@@io;b@a{uY|{#Q0W#W+NF9JssoFx3~fU$wl@<8K7lxL3j{?Zg~Na z#|%RT@fw*CYR0c+pv4v-cj|~WlfFT!*GXkJD+A;SmU>xg=VT7NRmOQ&Jz|>Mbk47z zO!NChbhx~j#TEYw!m=7yh>-lFw9)vLTzH}Nc1IIpBPPYZE=;b^r{is@Wu{f^>s+oI z%5-HE8-*8N@Aj)R2L^EquV0t`@rb1?xU-#0WQ~ljPV0vPKc< zk$E(_nY8&z`MwTPfYdDcZ#b&iazviFUMxu$)`hA>kzc+yPDMkl(n*oe2>$$qA2E@S z3>uC93JM}^sU`QYb1SY5am6U*m5~ZTOGm`3#Y%fou21LQ!kFlF0!UqD3o{8Ddw2cL zQiYbJ;OtTKfT`za1iS?kq!HU)?1`mQiK}$5q6f?ScdMh00>YGxSA$aWFghDZQw(jV zKA(MwO?zAPyVXe?aJ;hwEfag7Jvb{y-^qeS{=W z?2_gt??I!ypT6lpP*NbvVuAETD&UJiEUP*CoJt-;0q87@C711{h66=E2!#C&O9Igb zsmQ=?kA%LqqX}~Wf`MQ`GgZqy)+8?w0XTgX}sx}o~ht9kup~LQ=*SoNO#W7$9u8tY1 z$W#j9@Bp&fu>#m@Gv8ovYF#rWiR z>>LBy^f)}!T1g%<%%ntVqbQCKTV{O}IZp~sm1dEhH>kldT*5>^4Kd za!>}YI8LRNX-*`M@}RR%zLvyHI18_h5xl~BQXDOe@X z?;7ijM9(*{X4hFU@!&{p_6H(!T6FJcxk*%Wj zabygIo?b5*ijOrz^+;g+7^IeKEnKgBsY&93v(Aw?*owdZ$5E4cFk!1J-cj}I#V}Qiy*FQ zcfs;vM&@gwg%y-xt1tF-V)wcyZ9+yuFh;{-(cP(#V5Y*K9#ZV`&7wCX4w(S7QWTs6 z3=As6!khgk6SkT;Va$n}I%LMzu>Y{JO%!jxj{s&o4CeFG#N=L0vUt0EX{$)}JB)I% z*TTJGYPxiY^#;7*eo1P=KwEC|VS4E!`P)q#p8m|eV=1NG*TN=Cfjq;1&Q@wOTNes# z8omy5ZjOSkG3iamo_3x}wlZGxtq9}ZH1v2YVazUA`;2ECF9Rf3;rxCff-_r$GGHup zaWkhrbk#@&MAHERC@CkR(eL)R6~4>9wr#uDu0o|+=6rAXNX?Zdl3&WnLa(}~wlof> z2A0h?O-NaV|6U(eOw1p z+QT&7a&d}t8INpbZ8^GhqD+P#<5dktB}K9c07}nMOmO2ckNYcA(0c!^ke9-MEdd6rL}`E4(U97}3+a(Lha;$iv*qhRBg+eSjYv zx~`S|HTQDR?I-AAhbFnt=JTO=q_A$?;SLat(olxIyo7KoKI4%^6o>D`Z$klB)W@~{KV*pxI z6h#s{QV4Eqn_Wvl78I_?ATT8~W=9{fK+ZMjz#tZt_MeSCy*H@>{(qY5t*vA$E-@b_ zK=_NJj@B{l;|EKK2>crz2bJ1D9HAlL;p&SWg$3+SPDc|54^=#Q+hvxse_sT~+hA$n z%H?Bh`=Na(I`Fonvc7SWTyqU`oE=eQk+*%UYzH|X-I)$D?#Vcvk_W4Vv#zAScF0WA za7+>HspKEssRu}K_oJ?V7(jUE2?9~n@VIo-KQGM#3Mhe!sRCnTf!Z-gtA`lHJdB~Z4!MnlZ=jf? z;=yhZcX{>kYHtUq9|puC=U)k47~ra7Nx{7A%+iL=3s!5e2UI3|)jt`Vyw~Ex9+pT# zX`3HUU_>u85|2%byz<|}&@QhvmaBg5UWuQG;i;#@%XMHU+_n&9xg5p6ZFp67(OxZ= zu*aItf_t&|7#X+)OlbCIaAY_vb)$z{7oY~(YK!k?X%-Ti%!aTfofe@FP04qr5`k9{_(`T?vM5WCpET6FxIA#O?-J1PrhXN&vZ>kr< zI?dq-zTpeTnRMVtv7Jd}BJT+-fYX=LDr>_WZieo&8vwZI6X?FePc8sxKe>l-RJBQc zRrY8ijI$Jn{Xxg+Qp0ufG3P%F@&H83s>cMJIChL;susHJzuu%P#~6=W;-$jDEzj7ssZw> z*zm6igdUM_8@mZAn?BC-)mw_Nk46XxB0MP{DJx$v zVMSKANSCcM=EJ!hGx8w6s&H<{6MO}>qL-NnWHTU@<4#q=$3vEyUxOX_2TQpfp=rut zr!u)0;E6OvsB6A+eusEE-&4P%QQR!MK|+WgjTNC*8$`v&^te+z_O%YRtEDe!kUqbf zabzccE`Z#1er`W1Z>O9P=rx9l6Wc8}(@nf47{fh+q>D{X$#)*c6wW4Q+tL>Phepy!Mew)Kyz>wF-KZux|7dws*gZkI2x7y=5{QYC% zH$0G2DMoxqW&WB7xC)h#e)K`}!k>O* zB-OeMq-bfb!jEgMt9Z@l<)x`K5fBZAa)7>qkmmj*h7p)=e643p$r&TqEjt!g6DK6*VKcxoA{ z^X5O2oGb%Q6d;^k?~N@q2(-&br0FgjCW47p*U}Ftu!>kYs+4?pRn@~CG9;^6Sh9qj z?e{3j_;4a<;2S!25q*ja>aksGZceUIXlK>%@q3WMJtvkuJn9x=8y|Q#r33E;iHd5u z_S)p6t9E9uykHP0g+MC87%QoP>yvPB1HcK z^UOxhg;o=or6NpI=0f`zu&JxK`n+bs)CfTX*|hDUiy#7%SXl=5hx;dM`H9=P|G)d#~1Z_2IEcuYLXb76R2pn?g_q?%cf>gly#^ZU~@jILf`Na{^>#WSl`jCy4yh zJEs3@H-PuuxPfMdtZXB&SmR*7bC;*H5s>U-|3+w<`)@uTj&FF=B6T6Tvq_uuJQ*FA zHC01XF6+3pu$|ma%9*?uAEM1!s;O!?|FRho^7@TK9>l?FYjddD_NCBJtETW(9`UGZ zBXAO(+ka#y5&|poGy}pR4DL&S=8okqJphO2?S?w0o_&eoT2u`YhyO$oe}5UZkGx=~ zWI49C@Fc}WTq7fgX@;yZZy|B@=ooh8R@`aSh!P zZ*qtA8cyd{Dl-DGd>Ci#jMY~?JZ|!YfNVwml$U~z`ZI;Nn=7(;Vtw<;56J_@#8t;s z%1-?P+u0o}W6UFi64HKj3tFonSI)dn>ir!(M|{ zDtHZcJb%rneqoJ3nRw+x%*+I}2~zayB%-GJ#jKMhbDY zB@Q2LX|!UXHhu!?iOcouh67oa`|s)Q|2)z71<5Y-$TB?r33nbrAhp$ga5pgbO~{8E zmPCW*zf4&pr^B^y3H^>0f8CFYEqvR&zbPOM)p7V!9bTX5(iwd;Gy*|9?8+piS+l9Swbbps%Edyj&b<#sv0mrB-Eg)FQ>aCzRnWzm zo-dmpMUUOs7b>SX{KAD!B23R9Rk*?K2Nq|^Vas~U$v0e5&YHg}C&TA-3Y!?ZmpiMh zc8K2tZMYA_&8&c#;hq64F;6znp!^$O;J7_;=v*MMbl`Q~*2{13lg9*$8*wc79Ny0G zLd1t?vFzrTlv3!k!rGbI#mF}yRXjBB$Zs5Vl-||CK5}#QwHwd{sU5U+q3wxBCE~9$ zSlAiHU?MmNW}dEOIY8?;){C4BEZ=1;?4X#J*o zQH@^ZWp;XUpvb3p+}MHQS;#OopP;Y5-*muE1qcQ=HD>AvIVTbZDL8@0v|iq!ClD3e zfVQal-&*|HkY;bKq`>sBb}R7enUK8GHs-N->oB|Nwwt#1YND}Ga#F_+j&-Rkm;F#} zN7@iB35B|B*LqYKtV1zA*Av)_fPdo$XA*dct#iT}I{TDY{F7EJ6T+u`eRYokj5S?g zoe^P0`ujs?IEKhh(s=ObncmoP@hAgII?f{n3%FQ(uhZMHj3NeYy&R$P@s}CTo`&qL ze(f&X+M}1X)J3Ga;avMia5rEgMv8k7vfGcNjg;Be!%@WFE+F2Tv^(-4vAk1T_z( zB=P@<0vmZkm-A}$0S{;uEZ*uNHgoRL*f7^tgM#kd8)H1saIf%h~cJa6Mv&j?) zh>lEu;gt9TYNrvqEE&t86=-1oa#l~2*Kmlf?3y-nNR^9M@RN+x)asX&mrc)nG`dDe z*ZMThA2s{g0Y9xzpK5+Kr3AMb?EPn6vsM8@o-Ga=>*Q-lSIg*$mB@JL9S!QF(R4p# znBDWuqS$d|HpxF?s~}jU=Ihxx_fA$`kHwH{O2m4l#*%2n@I^xmf0U{gYbJb%S^k#2 zgnkxwdSQiUpU-9`l?XT$U`eElGTnRPCH}>jy*1s%aT)Hh7Z#{#~#fqhcpjLW1XXoZxaoMtOw z)rUfH0rAO;ro|mrq~$n%O| z{`SmY>8>2!hE{>W=;(a(g5Y2FUUef^&s*->T#g?kgCL9gI#6Wk_08vvpV!P^#mRZ7 zK-rGfJ4Dmx;?GW?Ah{Qz`*=-t$FV3w^}{9m)tWEIHjtfTGMEMqYLTtF>Gd_Xwc+- zF`2->pccTW5wH!8Fm_7Gul>yTeZv_GHT?T0xDx+>XiB?3Euo+;N}KnOA1|D=b&~81 ztRAsk>5VGA6JEN?Yl@jy-oP82j)udJAA|C=l*3Snt=O~iGF8kq2-}P)hdDX>+T6s6 zPQZMaLvwtV7G2AJD(aiHh{6PxUAh6E4d-!y>a7zc# zn^|v6I&xH3qFLH@UfWr+VYB&C$gdzfnY&CJ=FXd80LFw!n9YAk>#SU#!2LnMd@*jo zz86(1u;hSvyBV{e$67Ouza={C7WjP>GvsRCtb(U_1XjPECy|%#Yjo)Xoog%e2-L&; zW7+fsRCKW~CeNaGoMR2ixwEm(Cl;PhY{kq+56uL4qsK)j#)(uuR!rjVh}`m5BYvMK zZa~u_WVcQ83IsxReI(M&!gq#`E+u1`$`<8$x#BCjVMT{m>vz~^o*vTOqwexBdDjDl zfmvx?lQUhY{0G*gtM4Ym1&`p4-kw?n@0pMzB5jd}#sO%Yof1$)j)E*w&Wu@w*{_dE z3Iu_;TR^>T#e0tVkJ^b2@}`tIyOXNTAufk4?h$s}|f>7nAi{7&j=zTEP2 zuCgcCc%`CVFS-xJ$tlM;b)Z>a_#|3ZCs4YIi_hU4redpNiZYQy3^zaa`_Htt0!@<$ zXwz#sgBKz?^##f{H=ZO{(6Au_Kuu5?*H1Tgjoi!EQ{tDH^hD$t!cQv{fYP=5Qgh&T zD%r^rclqj39N~DO*|e62L0qJn zDeFIBPzexLMspPuXsGeq#C&4l_ImVJ%R3UEPOsN6oF0Yz6EX)qEm12x4g6%| z9bZ_%M*2p{N-1B znV&(xUKG6ayhme5Z{;psFC37W+oY%qI>HZ!$0%2a#oI|m@;5%d#XmE3pU^+LJw?k@ z*p1M8$N|k6BMNEH!+}y53nv7eKHo0SPx4+Rl7HQ4nkRy;&OwSwFC=h$R|3e^bI9hy zFUwtz1;Xy%B0WI72@58*g4Ce<+b)feL9hoz9Oge|VG_-F#z<-J4dbjwex zVR@ld>qS89_7Ti7Ya}^vwhu`E=U(@#DY>gby!8u@g0%JU;%eG?GU#K-1Z^}xrEpD) zVjw1e5Ji-_;EIQEw z?%6n-o;Qh)&;H&M!ayiGBMU|o1sZ0s6jY`-H}~()b|+l8m!3bzmT1nA!4D6&`PCo_ zj~cH?26&)^Q(?!c`Gl|nZ5bH#{~TdEZ{ne?+&E>Q>9B_^pfv4QR`MMoj|)94j0NX1 zA00XiZSOzCt~-O~d(k3Ot5oj~VA|3hW9UKsz_qO#85U zWiLxS3^LJXJwjtA>sq`g9;Bo3dm;!yvzCZ1K z_Tw|+Fue;@Hv}1F10+v-3WweXD&@7C%xH>+)a}19n9v(_6BX}_;%94{9G3W3P<$Jh zqjtoopAD{R{lz<5yNBhgAEbKNvXb1)LX9~)`|C4tYI9`CxHRBdc8q?D@jBZ?mt4_S z!lU(NAN_!YOw=esN~G$2Z}U6BsXe4gsM4vU?E90~C)&G(v6enr#>ndvhV z7THnZ90RVEf==dWUyC{8C~1%^rKrqkB#@47rX*$O6|P~pozQi&h@PAnR8Ds_42FSs z>rT8ac^s@p$+l0VfdCkFa9C=*W zW}`EnVslX`cV88(c8G4-n&~z{ftCgn)toh9qLEzgDm23ly)(4F(KlSOz`|g zF?8~{xfGXOCs*mpP4eQPs}7uT?Shl`N$;(SPOHdPf!dZGDepb`GMfX&pvQ9mkV-Q8FB zPbA&z_nOF%vIy{F-c@0i%{IDG&rh3yu!@_{>A=UFJ6l6Q#y4RMMK};6vcWL$S(8}F=I5)5P+J9G{+rooOdV*&F-`R7$V>4`%Ut?g3dX_x_ZXxP6z4>WTDtF=pFieu zkaSneMu&sM53U)5=p+s}$IVLj`Leg3${dw{}x|NKeYy_ZG8S0DV%!PiMPMwxHv<7qfV?FuYlH#X*(havP2E{{#=YlEK&Q z;64_U?dsWd5JO0FtkJ7uWNDq(_?U@ZE`?i#d8F<$v!1vXU|Jb7_7*KonH!?rF1uR| zT}3AYGw#kcZ$D3)32@4J{@`1tgWkE23P>Hsn>j<@YMo$ChP{>4S6i3YNFA zyvrCbsg8-zKqa$u6yyt~YKBoGiDH;W6;1lfK=d~idkOKgAFQ~z>gNDfD8iiVI%lRc z{W`;NQGcaX=_#?111poxO-R6@6i>m)c-sSbEk}gm09px|u=QJ4z)TtPTxmxn#TM0` zKwN_GHVlNXR%=Aq6)jgO-O(EOR!J!8b9pGK1H~cIFOd0qj-XI_vjF4{^MbQD1CIJt zs#%^4NAF)x~zSudN6c1hf-f7 zzBb3iopFheadp{vI2i1ke-zOg#yo#0r2Chv46!4L(3({f)Y8GS$J1Z_k$6a?G^U~Z zA2B@yX{C>Fm<%`0*oLa~j6pmPnE&EsvI=ORcsa+l>A~Pb>|{KsQwP`;R8A<0TcAm7+s$7ACE{({>__SyHjLOJceYg)L&e+sZ(kQJ?GzAYV82sY(?^SCwm!Y^BATN( zgoh`1a&l+MD0uvRMvrFF!0~cGa)4(-ya_>F+>XA+m`zO)*7O+Pg;k?=4{8fMlBla6 z5kd21U#Rg9Nn*gLk!J1KCdO6%#@D|wfz*jjVFtu|1zzofwl&69z*o4jR&Bx`!Zv9O zB5U2xXWm7^H5{*xO1uu<9fPMnkE8Nqvz5QyU@pC#Db6(GBUb3qIYOHW)&^EG04_mb!W=+ zyqdGoOnu>_!a70WB@mhJ;?5%jb4d!4{UNno(aaR{F*_~4DwZ1aO`8}t2i+~|Xce2N zId{^Fu=h@6%gsE+YO-4#vx+WTT0@RcX~-7at7lH_45jo3y)X)sx@vWCnH-2^E;?>I z18}sremn?r>wqp%x-@H>)i$pk-WAv~rKUaXhW(rCdH!5)t(4o4w$@lqa2D02U7r|S z@attS8j?9$G2g_@Y`EBVHLSA8J@GYZ&2|@E`)%p1#4*&@=gzP)i4;bjp=z%~5*v_o zTQs0%dr+d#*~0$>t<|}%7w$U~MqRLyl_nYGu2wXx-6@=45^6Zo!?L!9DU+IJbyFVSE>RA z#f?mr8-F4va^eY!-Kx>gSsE_VuXk%PWxf+`TV%t$A^@@~laytTga+@^xwXx!$Oe>}B+(2NUC#8+(+%z9s$Ivpuzb7QL-opK`aQfD>G5JR;M zi6B{M?ixRuR>SJal-=WlS00^!Zhx%7_u$-0AEg`X<_qZf$Vqr5 zXz#va(K3h~J$>TPlL?5p8kn41*YDQa?SDJ{Z?=ZraN1D5w~7LoNy~dR^YE2Q9g9z0 zFi&Z)WlDgD>8S0AyA=wJ94Imd#WSTbXgZ4xu1Y@zQ~O}lsG)~5FzU~lRR;kx{k$|S zB@*)2$*2m+;J`?6&0NkYj&cJ|| zW}|Y+Nez~iR8>?g6@51$yB;a zDi;EpJ-pbHBkB!vjHwx~=pk{7TvB7VB2+ow$lh|fmUI>~MQRgnd0<%FQoT4a#docQ z1{3Uk2+V8KT8q=XtOvB~|9{+{YIN^;H2MZB5C&;tJbdR!tly$cd z1S{Cj!Td4m49GfVt#kwaW@edal8G1lUd<^2?*6lQB48>F68LuBKz;$NMZ!YwipHQI zk9k4>i{CfLz3#fB<=j_ocCYX&_dA|Sd8NYLaMl;2hUcRV5C7jcYENkloNY$x@rU}Q ziY#~e0zb#TsRF7_rifOlV66wdzSt6eeInA>G-#g&G2Zy|rA)~;)-p4$M=pNRSMh@K zFE;Ttw?4o?{PT$fgYHSQ#2*X|#GcY1OPi+14%}s*MH~`+KK@lV60+!eYBWZmZAamp}6z7>DeJCs?9#7h48u2;`19(R!Nf*@5Z$r6JJ%b#=s~} z_EC@%skHSj7=wlBlu!#e^j`=+(XD@bamIS5+Mgk z`9)kILjeJ9lJuY$+aiuDd6_^i?AY#Fm0WoF_%eLYnRz{57R|=|(mKs;k`h`=Tf=o{}72=~~L9k3L^80kR;%XVkELB{r7zMazT9~`0C6z2$i$RIv zluSpilaJwXrKuzhV^9T+`kKXLmx6s}#bZ!8X9QhO%W!&Z->Z)A0zO_u^&l;zCeQn| zxgJJ5mStJLG8I}R7$>MF&4a2>9 z!{)I=dW~J)U4sbWgkjH6AlzAF3GMtFjM3+5&;U0MdmvI~@R1^;Jx05E;uQ@;XN;!> z9bDls?(MGVp9tCws8BZuMF1Ced}X!y7>`JRN_c*f3eQolX9x4JHE;0zKqmO-FX&vf zGr>u?W}aC^>Mq3J2bPuKhJ3FhyRi?1w=8tveQJ`s7z63nXG3$W^kGfetHTF%m z#4ncibO1p>zQ2c$}Wmqo`;-SrT~mfq|R^;LaHP zi2NjzzE?^B0h<=tDj4GbjT#_a7_>DC#7s$$uEI2>kUVkW7SlEB{sVIl*VAnmQvF3% zIjCf&X)JtP3`KmfG%V_RKlxHJ?X*$w_3n*owJF-c1`0`Exb>W&1QSro62^WUWZALy{ z2_)r?xggGe2^uJ37VyIIWeY<&XuDvcG!6b9P?#+G>DdAkdyXu2o9t=$(YAHX2+Rini(_Y5$I#GVS9?inm&+=hTsHFWN2)w+VR z#MC_3&<$gmkn`rRLr<;Ce+%4%pdItACXO3C=>JL&k@oiU>7MoPf&2UUC=;^#uPdae zYtt=099}BDk$6Ku5||Z2{UPyUW^`l<@La^MFI;x1N^seHeWQr?rxFzU+Dt0^mhkoX zZuFXmCxEU@K%dY>KVjVVeyXI3^YJMWSV7>!T$~g0V&4wVT(=|$52evrDTF2{o(q4s z^L?j|LYzQCS@@tyYI}}79@6{>#|+{e*z>HSPJ;`!+9u{t!f0iJ?oe!>D3L+^v{-C& zcBl|ET&JV`TRDRI^X)jJXoL<2{3>ONI3sB1^R7IUr#}e!N+yyO#(SF8x9DZo^%YNf zHf@QG+IUMP-lOguS*1h*Pt=QlR8^F3onLsBU=K}^qPec{b!!uJSr+HHjyma=gE`LL zQll{xR}2IG(CxV7!!2ED80cM#%m3+bw5w|!uXz6;ss>}%HV8#J|Eyq0kK}NW!@;Ow zwYn{M^aDwJbLw$tBXR!qsIQt!DNr9rM7-al3v_d+Lz-k%mN-7N-H((HIr_I)z=iRAyC)}uIL*yx60+N2kqt6oy;ZOS_eZ0Ts+J&Omr z%{Yx`soFaQ%JJRV!ZvRvsev|<`L3ZOu`Tqu^DYXv!~?r|Q*N(`dm~0sXt2hK&dL)P z*5@z|WY7&exIX4Hma!E?2k^ZNGY8a(jTQKdPueT^9;uoG&ZazwT}|(5gC9fv-kk15 zKTTeyzqNjpP8g@~0G=Y9s}N+S6f{lp8G8@H7W=q{=8BU+v%j3FmssgC^Rz9rlqXV0 z83^y0uj4oRrrOA}X{@t&T z$|VjnFPYSSW%)tBOGVrQA6pZxBIeJ?HQ|2q!uHz78^<0?SbfIFRklH^(V+KLV+O;f z`n~-)hbvpttMoyomh`Y@#6c>Qd~Uya1SzO7CVudcDc@n}FCg1PwY!tKi|jiv+D?bS z%wAd=ENep+cFIiNdoXvdUU**k#N13a2gY2_!`VQoE#UQF}!l|L)By!~=L_l}(%Q1dlL`}aUT_M>~Qq(<_PZa*@u zT=KrG9)y$CKuyFz5)*HV=49ikJCE0fHs2;+(mKJ2mmPD2I}PC}wl@dd(%PUDQ|ALF z#5wBs-^Wt4CHgumtHthJgSn78e=Cs75>id98rYCCnPcm$s@q`F0Hj?j>ak@A6yhT? zi+GvGk5xuWcfh8iBc))9a~hx-&2N1|w4yJWN5Y0W-*YIe-Pm%oU6^6^Bw7g6_di~W z+I@}Z7-Lc7E;(IUdLwJAK+zgD| zyJG$`1Sj`0cO%d5Z~ju<-kn`5cT05CkX_4`H4Su8#(=c}99Pe={pu>1C0Epi8_4-< ze8afmaI{9C1$wTpDwkBtHxeuT(66u~&Z=9mJk5w`h5*xXj2q=r=22uJ{EFE15|(ww^|vF7#0c++#f)w-6|m~!;@U82$J@a zqaO^0krs{NOJ3+1BU$qTXLCjzBivZ93dfTTq+E7Db23yF zc1c!Nk*3IQRr!ksU$w?iPXoIBLZLq+N>V%|=Zk4tb%cy0P($ESIv54u3`|*BpDLux z4MsmaUK2P^q1KO4W>@BKQnp~b{)pve8r{CRl=8olU9M97bC#tVrZ)yC=mlt_eToJ! zLruZsSGkMct5%d*nh-j95?O~3K4#09;xE!g79FpU9aWivK>O5VbW8u5Wyiu2hS{C2PDQ~t>aDGhrb0w9;8h|;soPW>{>hkPt zZAU0qjL{KnsdiOQg?@y$ADU9{CRadm7)e0SIm{&o-AC`ylgxBVR&modTCjvKq<_P< zd;|+E^lauk($hF=+csQ4Iz6y6G0)tn$hlJTbjsfoh399Dvx*P>&sr4*y&q2x>bklp z$$$TsdQxy?PTT@sPTKW@#u)keH7K2qIJ=nI?ma z^>35-%u_?CUEk2ltqBg{BKAH9zZ_cxh&8@LH(niHI!Yc zSOMbgWGS$q!?QtH%8Z9cDYW;*U(GJ_N759YN}o9);w2p&syae$bQ1Z?veRfU>9&~M z2|b^({z&raBm0ssjv4@f;d7+Ud6QK8(#5vN|C#az^Jd=p6Czh(zd-!CLUN zuBCr~9CWt{+mC!>AT~mGS79}^sFFwD>P4w61wv0AA@sJkFk%k_mPn>-s zkifjUw!rys>BI3jZm}BriQ_l~`$ri_5sp=#6E(Cz%`&hvZcS8qkf(L^O(yUK-<=kY zftFRQwin@qRr&7VQbs!&;UcnRn8R!JJ4BZFXko43aWKNM+VE-qI*w!X$bL%ZV(!t= zm{DBUy-TV1n>tIn__PY1MbNL-2X_JbDZh?(YB_nj9SHE} zSG9@3bgSQ!VTqkkP%1}@`o3VO-gbxO#v_)y>m-hb_g&_&P2*#N6A^g8n@E6Rqgt4s zL4uD?+HZ9_u6Ij+*|d%vvn`dcerbfX^|aK*(XtWgEcs56WO8 zvLIo~P4f-X_@<%>tJByl@w2GW3`L3y z%F_DbpM@LYL~zdO2ji-KQ-fJ29l~VD>jrA=4l7`TJyd0>;EZmHQpZee!FVbC zw5z!k{I9jUc)KDQaFWBm*tfkoM~8HNqKbz3`QG^-by$0ap+N94GZ`!%jX9vaZb)AS z%Q(ZG;*WFNtMv*EC~elH?|$}(licGP+R#Ggt+PPY8F{+U7-5SWwXe<%hJxoc`1gcU z2Ws6goGk;+MAe=HD4?>Zkei$wI>mC*rk=bVm) zROA9Kgx2hFELUFjOT}zCcQ$iPYZ=&x37UQ3E=3S>Oks?5pShC^Dpg}_U&g|Qok9Eq znRa+8G0S~3=kc%*4VBs>GZo`S$Hg&|bO2*IN_QgM>VLur9pSRi&k8g)NlL^+P|Sxb zaIN?UUoR!yJ7--s=NDr8ko!t6gDyOpa+M{P>=;V-kFD#$-3}1jVo_&=+ufBbb??H2 zevAulvRw944U6A_K`tay*L^&NdGEM9dWd-yCm--L#*=yzDaWnTh;re0NbkTWjI__z zMI-{+K(S|5U{Mp}*SYV@M&x3z7X`5gq|J(dD@L#Q(T)znruG;Y!O2V|ix>&|cP@w=J1)M-hb5z8uRQV#iFZp>HFcYmLl^xcT|j!3Vy zls0sVSN}qctizY`))iL4MWF>%#k8z%`pDBvb+-~9qH(|Nq7u5?Yu-w^Ke~qzD7db@ zuD|`s%eJl)O!x-gYQ$6T<<4YIfmP)Wkx@LI{B=u^HbE+ z6yPOnL(Ia}HNuyv3_oylcCqlYRh==7(YtU zdB<3W!yR<#ap}&&iV&SX8GPHWU%?UWF8{&e~{1!VQYIy7d+^~ z+yBn#cy4kthM;I>#1GsbI{Y2apz^~R8~4F6V3EF~Z7uGVNtsmNy}DmX?QMOcjepe| z!~WNPL|h=uqUE&WrN`V+{rADX3q~~w@co9S4~_4>x?g!$D=!BrJ^v>^g2U;e&V*0<2InI@ z5nDlZWq2UZ&_HqH%%L3hd32IO7v;+uPcUYpQ)`ejlka)#`-6E}VKxz4^0S~D^Svk` z#NjJkmL{67YH%Y^`I_vMDia?E#r=G=4dNq8)h3n<%O+xPsiFA$UL``2P{A z>D`#Hl47nwe)ArEtI9&TDv6;X-nGGefU6b%0OEc)leI?@q#GJZ36`IWx_59r%2?fB z>>61Ti6G#>bV!EjTQbM%;>eZUel56VtwZ@169tX+-OkF>#oVRhl`KRAQVZzCSLFk0 zAa>6=sx=66Dap(%!((&8gK#6nR|;esO0@IDi2o|!zO`%63S=M4`X3rw`Rd=L{6&#r z{zNeNcb8~V(`ewO*L$AMG7PNbJ?R?}3TwNLPEZfm=l|gPwN_nPj;^%3N0kVg?}R6c z<$Dx3>byoG?5kD1-r!lL!%e+E4KhYTS2W59BSI4YH^U4_HZ&_e`s+Nh=~r5=JmI6d zZs7c}b%7&vteDjC!7V`o*(Yn!)`Z9`O4XRTG4qxhB&Aj2%4T_XOiRuca^~imvOHT4 z(M)oZtD`~+lVspT@l)Y2!}(NyE7AZRRU=e^o0$@4Laq|jI=PR?dC z=)NL)1H9H$=q=qY4Nd@^)y)NXoqp(@no#4!IH?2&A#W7W2(GTjD4_7UBB}N7vbqYG z19WYa`d?fKm{pp}hQi79k)(KMT7d!{@&spXLsv%>WVZCIzmeH8{523(*So08uIx8+ zZ{9UakRNT`t3aH1KjMTx9P$AL@m(yqy}%CJs%MZKU91u-Ngu>3IWkktM}2hK6tu-A zW&g8vkZatC7heOM`X=CJoX%zLzAr_YxP9TmD^xLZbBZpLhJw6GempA0Dzi zqisVGf0$Z*)z;ny-qtC3j~D#7pWZ1sykaNW&L74O>Tm$mM2@glpiUaq0u^kzyCO|f zz4-xytQ+r1rd#dy+3yCIi1?M(+K0=3Jn4hUWX>N> z{ASS^g2BPB8azBBTSrYl+atE^nxDJ56blr*9QU_6l&S9&U==geAZwAEXPBnJ;a#R; z`@>uZw2)k#Ud4M@L(+T#$UM$8E6al2ec8UbwKUH%J4V~ijeWlo@7S`V`1n7DiAcuZycSjtPUdu1v;24CE`zl0Q@i+HNni^?m{Kmv;m%>m(uTk!i3 zc|GLS!dUrOG%{<4UVpim4kkiU`|Yj>GPAQgjK#^#FO4D+7=RMXZ8`q=i<=1&ZQDGl z>Us#Ufi%y`(f33#yIE82Z0(v-PN!oWHxxi5I=j90=k%`Xb*Hb}w8Ow-CL+6H$&gj9 z(b#Z(o#FjG>{H!i4q!~4vMg#9+?`5aC|yH`ZiPl)$ag*(-Zl)(wRX*yorDPX)cW%9 zqc3VPTb?R}W*OJ|gIn<>t^6X%^VO>Of4rKuSxue6I5uyi#xbo#6cQMqQjo+alV#(> zBTwlLu6Iv=_BDyVMD1am7P{6GIwt3l{cE3%1vnK%)<5gX?mzQOVW=#v9ur|H^xhy9 zMal44+1D{&y#x2yZ3b3LnA$+~w0P>dwE?fUuxy60X?Nti$L9!3ME%r+)6=(DqgAKk zyAO_z3IwaNE?vU|(NX8x|~ z$!w?O1JYuz_>z#enolatDN%+8#2tFg3-&9jRzqO-O|t3f7Orm$s+%FYzJ!bE77ms_ zE8?a7IR$cX=Z1bFYk6=ML-ZnfZ*rK4pT;$aWonD=-~|7_qNhs7<_ht8xO$dx>4imT zCy#Z6|m^kGyap`Y7DmivYlR<*rL7YJA_FX1fx7;eP zb|5+A#gT%jy+M1Ke<;tqz?`*RW=LUg3DxKmhLqXx3sW0-Zd2`hh9-{J9v5@a^Bul^ z5ddPPd20e!bwV8&J3_kYqRj--afB_hROxi2`(NpLmQdCQY^DcS0P5yLMh>sM>;zgD z3ZaM^LR!DM&b!9!7#5!sJldsUVY_SDoP1h$M@@d|pfMkQS^$oQnsI$noZJ0CZ0}IB$^O1A(tlw9;HM|X7RZ;jh0CsZ- zb_0ve>ymuLb|f=Rk%S!*6g4A*p(v`3i)W0N(zGUPj{7D96pt4%fqK&X(e!3>Ic%k) z!d$FGKPU8NWq=;T$8Q2lF}ZT#w$?xh!P^lB!V+v%*sEp4=c2RgclZ&jJZV`HiI2C8n4C}v4XY2Y;ml($NNyG z2U|BeO9AmuV4`yriPLPU6@Cw(0-lgy>w z#73BFo1Ox`x@~EEy!7P(I#&qumuP~bpmnu|e^NI?y2&d}QSPbybM*xp-;RuZFXG+< z-C72Y^o*)8%b~<_LP1?nU){+r*@}T1x_*(G6-}vKeU>=hU4;BjaGh|AuqHI#3((%G zT((x(mJIpZZ~5**f=+42Dt07!EMj3zc_T#Xc?lJ=3DeYAFO;$6qZ%*FnO*j-IxgniDCpNAQsZMbu^c<)BGuN@awqQmN`=MgBCBEcPVo-w~n z)Odc5vK#f7Q|6u-$xqr9C}2^10XL9O48P|(kwH;3wB_E4eXE{U(Cri=rrFshqby+{ zrTwB&m~*ZT{WVGUEbq$>wP42``myEYPke!!F(|K>JqaQW<%k2x0Mh{jrQnPX(^%=f%hy}<( z6|Zk?PXJ7P`;0yV%*!^y`u&h#GYfOA!>ut+$1xy5V*Hg19JHE`znw~y78gjre(v(dljH#t6s z$an!u0#6i*_trw(+-=J7YNC)5+I&Y>f7{IYd^M$;)pe-Y|21HNx3FXVpx1{$#^Itj zTZyS^A{ck&=du%><^w6qT*%te$oddD!m-H{{{(Dp?abjA;+l$5R?%>R3=9iP)iA-= zw(?P{#KVhY%R~=e0Du#}B7%rZ^RuKx$;2Ige8hM}wkbpIpyXDXp`xoHtXD zeO&j~$eYTbl3=T~-F`dd_l(Nd|I`Ka_h26i+QI{ixThl|n?q`mDjZg2!y`btJd_qP}Lw#)k_+i`F~Z)vVagF9 zOl98+x7rOV=daLYfrAkX6`As_9Ea~stn>A;sdt*;0oWqU+tTqoXz6{dqOREfB^!=i zkUey`S_#NSSTtH$PSw(ft`#lwafj}pzuKeArRv zy#Dg!N_0<3hTv53s=qAp*k}?iQ8kvw>{hXVV@nw120z0X`zvWK4(c!f4eI;3Y%2Vsbv}VAC{V1lmZVds3?ZVqlM+lH zOUAgyS0kYMYAJ_8#dz?Aq2*f?2HxA2uINVsa_*^yVZ*-UCwywo1?ip*e`dzHd${;~ znd^()WaB!GR8*Y5g#Ur~_i2caFi3MALJwtM9$UA0S7J~IJN7=jkTq?~(bCKz&yRr- z^PVxLUY6qq8J%3QYrrq6M3x&ML68Q1ug4! zjD_;|Loqz=Dta1dMxJGmo3Yn5oH+SgwF{y!Wp9s|lR|~&)Nx4V1wZLWgvnx5X|!^M z=M0*zg|2DqxDg40AT&X@Jp|wLB{>8>4p~dWNR}z7qmKJ4N)}N4d39pWkDCM&+en=~ zMToqn_w#chCmrIMSJ5G-1DcBmt2*mi0uOq!!~dNj-A6tE~JnSiRdK&87I-g>Q5eE6H&c zx&@=u?DXnW#^+~dX_uDXpRGdT?;n_$n5VF+s=*@g8T!J(NxEvTC8mJ_+q@WmW1}oG zi<>cd;#YY|bGc;CyvcLGCJnxzGU-GN8eu@-cWQ+m9-Em{CP*@aGY0-c ztq-(NQNTrt4^b#F7YzWskqhkfR?Vpnu1r1~c?di-J5W7;$n{n}SymZ%x zK!}dtvMFbj(}H~ovyg|20feQY?-z!NwtRX^VB-2?@vjtJ=@JstYFL_Bs7t;Ous^x+SJre!R?Er z;!0t)b8ng3%aN?8N78qBe)}Ypbet0kA-PXvQq0yq=!pOaQ0f8YlV4`Z&%C%&^7_CO z9^QA=-1m}mz1n|JX(ceLvEX}9#Gkyis7nQM=)E2u zgATO`jlNKN&I#j+H3AEWraYDJR-)Vwoqb+bY_#CmQp2B0s`L>y5_f(t_-bnHAyk;9 zfm^243?~9BNxc2`RpqI|%PYlS6zCq9DYthM#fFxyXhDOf44)MH=c-s4dsr+k?-J1-Jq34W<{w0 z3}J{LQZmF1qWMtgmx95|W2|`O)+e#aAG4fo;^;OKz*nETtBkNGX8<>RwB*Vn2$Dot zTiho>6;65v5|VQnO-~xm%j7;CA{l5I|xB!ZmYUr$vvE-{S+C!qi&je|l|5vb4 zgHhMdvWs)<4oM*{@!7V0Sq>3ijlv}P^ei*4k|0l|<9m@m4Qb=9>$7^k&gvpL)evb2!M>oiK*z3m>4;0epC zF0-09{D%*35(z;?FKo1&hQt03*dV!P15(<9qGQLPD`N5uS^F$nDM3iDKV4X@Hv>16 zWyhCkH?pYk1zLIcym;B6vBIb?^mAQ8XW=7`hG2oeumK$ck-hrPvs0C2(qXjEC?jgM zC;W=${@F>k*r+D8wrx&ye(Gp8@SV9!G>!L4WnO?r@RH#U9?}p~Rt-1T@r+c=Ym~2S zzU>Y}#S$vQ_IqIb-0rtm=eloVb9$5p zl8kYVESOc#`Tyr z+ZTz5_bZ@$nidOuB!?^p*l0b0GieRhL>!xvHmB`ktot1kocAZJNS8d(jUx`w^}zM- zy94bWx=U1Sk7chAVFL{^_dtmhM_?*J)s-wa!ILd-{iyj0;t+%lN02s(!2<|4y}W`X zG;+CSWZgTFzu3Zj86O>}ioIGV$z=_XpfYPOjNlEehI0KG`gr#-WnyX6lC8cE-ORJS zhS5&;c&3pPF|L6`o(;_m0y~}j=K(rx4_rFOjC67m`?zI08MlA~)AJBS{510+C*#YZ z8YDAdqZV-EBjW%Neu-xHG89ACO1WLVpkPJ!BsvlB3_6it6DpZnp10Jmj8m6yj!NG6O&ypgpMWr9;ZzT3ENXzRGw5pvnVx!Q3Men+lBiizz zm{fjzMcr&?F_K*BGVafBjnE2&E*WBKn+;O}cMn!MKo3gdq(*chT!SPPOKZRUQRx2q zAWOJlx}$?fbhL#;^*uG`4De(<#O)1c1~L@^^6NR};1d9txj~fjBhfyG_vm-(xKIBR zM)uop)z4ymE#8V2xmu$E64Y0mT5VOuykcM#yL=~d?B0xd&dx;b@DH*l*RMs4m9iap z^cVt;+X*uW>?_zDgg#C!T=?A{t@+L`e`a;!J#f|_%;}stp#RI-T1FK9b$O1wcjf5- zkY8=0<*f*5P)US?JiIv5<Trw9-m_JE0aF1CrKt3dbZ7@jL(Vw1z%p2q<#(G%D9x`VRA!b^`LsWU z3&De0WR+$56qbKwWIZ-5b$SLTiuv1LEg8v$Wfu;42RXLPXT(H4L@SD>_^#<4Sx}pa zcal}K6=8`-C73Rx65!u@3WZ6~FAs$Uq=PiyWkQ9H1sjL80fi-(H)m(~x?;FZyAZ>RdE7HvjzytWz~#91X9l{t$R5DAa&-x9Vp z2ycn-tp3$HH8_CO2)M^WRc3c~way=PhPVIpmJ39WdW6ak? znlMCSn%}^Anf(ah29dLlos=&a-vXzpPr-0GGDtXN$poy#A0v7Ef8(1F-} zT)qcxhOeyw0lrjDw-xR?reTVYpFWtUY$hI6ZOYIkV2_UWeZkJ%6oXsXXG-UN9R~DA z-DJH@V!!uvkX_x9S;-TC4dn2tk=MxX3=KRMsCx70A!E56Hm@u67PagT%mS{Ti7i%i z_e@+kp!Y{@R)@8@laA^k=Utb^V*jk3W4^d#&jvZfXdgXa@sTBuwj!#G-XU<^7yG(0 zAg5Y2KlnL9NI%YPfP)UcDHDn?9v^**V7?BFzf8Mpj*c}Fd9fU!-;82spWX{u(LFbF zc@7FB^-D>tpQW$T0+`wV341gS1(~ei6qCy*BTfQ^yPb2`WApRjZG6lPw&u#V%6DWA zM$_R%sqY|@6G1o-gXhtb)u~7J(78zFz!5(8OhG0BbqtkqIue8hu3M?5vz@zidYsI~!3swYt=ao#4 z96k}id;PK$Bupg>^qetM{oop4-0pL8Zjcu#M6qE7pgi8slh#juI$vsLzFR}D^`Zb` z{t5~Ln<2myRp0$W&7_YW;=x-5Mfo_=Mg#Z}E6_h#M}@ouCFwvD=?6;G1(A&*8`*2h z-UH;iOGw1mWTE|p3KdDTBq!wQz^qi>u1c$@IwEWao!WCsZc3ltkn_nqAewt=y>4Kb z!yif^_vXeG;U(=trq(i*uRL|8ZDMn zyVk}aGm~O0XPAljJ2CyrcHzNjnd+Px^`BaBo!;ii|APvaYTRfB0JB!M*M$TGKev5T zx-^VY@as?S`~1mKDopgtU%wH0hgCRIqgJUL(27Fj(Iq6Eo5|f*PrvAZU`{tTRN_tR zT5E2wVPdg!)43+h zw{gK3>bPd@NWK_YWDeeqy*;Hw8>4?}5@`G+#j{f*2bS7#3N1ED>=q+mMt`Ei=d10Y z%rmGn@73>Wvx(~~EA=lEPl0>Pc{L%RZp)T0ZAPV=nVo){0aS7wtje7f30%1L4>Oa` zQs(P{8p$!yX(Odb-lX*EXIpXT3o2FDscMWw`JRS7;7mXzb)=%FDv|mRX!+16!%2m33JscQVzG#_1DagRE!HkZ}RmA_lTsx@&xF3Sp4J zk?-o)fgNHC*ocp+0$OtD3)cS;O)tj+Dr3`)A zwB9hqS(wJ!$Yl}eI`KG66Bg`A@0hmHGKUYWy1Ox+FauDFUzvMI`#9LuWM;}aaIBSc z+{nZP=LP&MnDXLJ;;-$yb_pFaF%mPtEdUZ5)Yb%xy-n^?$U^%PYb?Y;o`nA!k9hj4 zG+paYRfZwA`Sj6HPt`HlI0QJ)`g~kW@UV&;qWVwmWM^2N6Gv}55$vsEBpn%NJgzgW z9YE%%+axB_w8u_|5m4h%He@}QU-*2Hq`OU9x+7X6`nLzUX7ouu>dV^L=|xVhFj`4; z0wjt=6mgQFxZjC^%R{z;#2yl%f3y|5E8(w1m)GhS01y3goNh!1qbfU?1T<-t72(6U zhOKw&=qOVDtlbh2=zmLWXKw)nv!xGEB&Nm1hAwHSk$TGFsLsqh5lHje{cKO-0o#aJ zN|N5x(FsoSnW*~{_8v$vS-Y~AkwmK z_JNF=lCniXVkSoby6osOk;8uJEBUOZ_(w(?Jz|kLq>@xL<`gB1&ZZb!f>kIH8K@wl zda`d@7H7@R)P!S@m3IvL{zC(3k5u!g`GcMu?^dR;VP`_Wq0a`2@rd79o_!z0ZLUEi zsHUhGeJZVzhl)*rJ-L1V4RX2@_-q^(ydUKcq-SL(l#n@i!KaSbb$|?0)~W}xZPa%W zcKPvL2gnL^$(h`T3r@aHzrZ_!vLr#aHAblt9>4=9h*oDdN*Kc#<=OLVveOt?{IhkY z6~Y=5gG2!e`zOcvU!YNMo~j!UAm9*w{KACuS+NM@QPjcHA@-PQQD+M(K-D{FHwNLu zi!K=d5z`!=t801k%v=u{?O%G87lJMKVdipu1d0(YI!3}zw}i`)+1x9XvM;|Qtq{$2 zw^yH22SL?hRQAQ+W7#?vZqXg7ltP6mM`Q#{lhW9v-Uf;9*3{u%^hJFr-*UPK?i4K; z1ulM4a~7>g1PMUZ{b7_Eb>U23xunz42Cr(lV7qup&@WUo%d|KWO*9%eC3bNj6iGGn z(7N2Ow{i^omp@bIa!_E6_~1@V@L`WlWDh?QK`4e7?oM3)+KhXbuTxGI!; z*4XNdXrcnia3PhgL^mz74(Gfl(pOVxUT-@0#|{;K(GglH4YaN{6o&BhIcl zxv^nJ=`1&}Wz+*>khtyZ)yTYAIqJj2Gs?LhcA8rC`sWv3G#DWtWAEd_oyUX#@BQ_J zzLKAGH(U?T|*lQ8Ns}g{+7ZWC8TQ#B)8M5XY)TlYR`OyF@ ze>`2dG;iSw`c2iHBgvjYxn?tv<>h25`N5>KEj_U%8xiZjQL6vqe()`3N^ht8I9b`d za`j(jxWnt!fY9{t?_%^ZiAj-;0TLAxD6L;)Z12I9`o#_}@X3;)9o*~CL{bfb@?uEO zr^w(?yU!w>+;2C0YMg1IbFf}|o@ey~XeW%<@&X121+eeLc{sRfJqaVmUb2!!r9~#n zB9o{sr_GQq5a<(rQNYP6KT^#|wA?mV^&|x(HHq%z=4Fxi2>WfG<1@w$>HCCr2PL`C zL0ZB&GDvH-bBA>u`9fANOJ<0IQeCqy(RDL-U? zB;8He*rfZ{DlKV4;i9@YnOjJofmWEy`bmx6-Cy+tzU=>{O=?tA8<7=6>Aa;Kj8gKt zTB%#Bu~k9uX13$Lz_d8ohL~6c?Di=48n%Ho+(X2)fP=yt$g1a;)88w( zIP|)rfY1ozuG$^k$nLXtSS4TV6agWNj4dIoj&&7yD4Mm4ah%UA#LON}vsJFuD_Q-8aVjY|r9aF3zvSI5(%S*H3)3N*1j`&@b4h$J zF5FAEJs=)MdT`0jb%LsWerhk+7WrH|l3tp}vwOLxew#JP5r^@@kjL$f2B6J6aBH@| z1*1qnwMGc34t}mk&8EU3-;&@RJd<-;O1;jZ!^>Z>U{>~q?olKuk3~sz4?hx*iPTM* z7aABZ#eY%a<1G8e`NOBTc#>{J8K;1%$)V4N>F*w3zQdhcZS(~XxW*f};M#Evhtg4Z zKgc0--F$l`&N{*C+6iH!Dg{{12&foyJT7+h(|S;ho_#r6dw{ULnmIOoAje#rP6TdTq4^bm6Y6!XjCULjiaTzREkwALsk8;aF;HHI~O4 zmOempmBTaHof8jA1#d;K#5)pK&mu3-z$*hN!7v_c@loBFF1`L3GG*;$kXM7gbzDYv zg(s2lCu9b-syc#finFMUYjY=>)Z{lxstFy8%XH-%R2f@SXAxh#0$;it&#&zm*sd{w zR*v&Kl`v(5Uhq|i%j^k` zR2EoR4#dG;Y*kGS)mZ$e^9R|=QCz6pcRyz7!o!Zs;( zZG1u}?bu>Y8*g3D2hWzs)tgUDe=bz1@7OmbnKCnnTf+lP6%#Ky)eIz-^2z&X1Fjs^ zjq~mlR)(B+Ear%oz077dBPM%CGveSjl@hqN`rS`fN_?KDN;ADl0)r{YD}~|45WTe~b`zO_AezVR(~cBc34r@0T4>zR3p? z87*<$FNP52ZP8F2a#MAJ8s$CM6_e>?$(%TsU^rSEE>igCAuwFF;HZ7cqY{zND-&U< z=OC9RS=NNknN4s8bEgadQ_;KfWElOCf4OFs>M+clJ}z7w`?qy75Yv#)824N|p|J23 zgb;$HOw~FyEHM}QuL&pJ`2j+1<^biKm#dDAE*;F=KA^5Hv7&=#Gf*O>H(3_Ut`$ik z17_zGmubrE(8--lP*{6W+0oF`VaCJRd4kkC)|x|233S`tHzCG04_NGAI?xEtfa~gK z;uHdC?VeE$y@J(N^loR9HqIKL@D~+w3xs_nPpEqg?p2xo6ap@OKXuRMk8z#! z8(sn*lGx@oD5ufW#b7aC0>Xmoa%Ca_O1$0k2hb$3)mFkggC{Z~n$$Fo@9qS1fanVm zion_rS<~iMw2@jzMuCO-V zm&+hi8&{&(vDgp=z2uH@cIj4*ffn5Oi5Oqs{IqToc{?}SWM7901J{|Etps=e%j9_0L5Im|4kQ9>mufTd53xd(be!3CAp$AOTbJYXyk*bf zd-+WK3JcOV`G_cjy}^|ax|X4UlZX|3j?3oAd`Q<0us8G^q7jK9wp}ILN{F5Eo2WZI z3db{CmwBMUsWIZ-A)d~BuvCSwfm-LAzLH27$>f`P3YfX1Nn2i=&uSbrkqsq7Cb3_& zdnYw_Z>O5Wbb_&B(f_Mcrnw2<6H!~fB&)DB#uJEm$6){u%0P^jQdEaVX`t(QD%Yy>QPO=(g5DUym{vui%}9? zcP+l3_xvb4aQ&D4kM#-_Sw=9O(0iz~U|J7C$eOAr!OoYA0%FL_i6IV=#=^ee^c5VB zXkY~!HkbW%#ajwP(4n<9&b8EEiB;(K1q>DteeRoVlFVMszNk3H(S6cO$08jPXIc}P z1J1OmeU`Ppd6d;fGDb2v@~*I$d}2avF0mQA)-5*M^3qrxuTMoZ|Kw}g{Hu=I)u?8} z&Rb*1%ax`kf0KDCpOxgMyO*+9Y$!ck&WM5oKmz?54M`#y)n%U0ZhVc{x?>`16Jj3 zh?FSH11U)}Emt(vG+vH?7oP7jwCtz)y@25(ZJZ3jQ+;JlqEzxXjJ42u(l#P6Cov|U|MNd-VCzU{Hr2W@OO@ht(%siL{2}Dfs(%) zw&3$w6~Saf3NX-g&;g8^n&>b2il5hI=Quz;I6=DXXD@U+m^go=M{V3GfJN0an=IyJ zF~y_|j{UTDO)mOi-M(v9-db0Av%ON*O02Wn#Z}e4`|VFi*9!?EqL}$<^7L;o z+QChfhc$KJSB7#4`pT^G$3XUai>|-_fE_`06&6eqR!ed6oRCJ!%gwSzNFq?V9pGGq z-W4$6WA|`v)wkOCdw`q$7xH2yF>6${Uu4+&+1fiE?~xB7Z`L;5GFqK1v%Qk<w;)PdWOD>Im<4% zj*NmaaaAZA2y6+|)I19mBm`)uB~z@+9?m1Fky z^|TD&0!aoWo_{A|O6ALhO}5};o9Yu(1`ys(BW@|$sNoEK-q{R6tpC?hO-}QhB&t+s zSf6v=`p7emnt5ew7W|TakFUUEO9NQl1N===|EH2hwxJR(pSj;y6H>jUl`fBtIt;kx z5rHlc{}xX_XpXpR9v^1H5aQyz@0fy>ln^3kXZ_I%X}EK5x(f{=TxA)C37@*4K+x8P z%c{XJTR_xBYS4See4@Efk#C)p^(@iiL|r)OJQfU4rc^|jN}ADKa)2MhHrCEsD(PJf z>ly3#(g6-DT0FS*IA)jH4Q<{xcTbJUqM<74eOOO-c__F{b4wsl7z z=e=yyGtt~=oL03?1aR+P-O*hi#(e8RL4U0v*rxE43cPULFLcgF;BN&+DXYWgN46Yr zoQ0-w-r`O~1@YT5-hh;}L48irK_t|EK|5?$ZvuPqId~ z@lcgyMcF~W@1TX^buck*8bZe&m54>p02=C75bA@KuuyzKYbhk$1EH83o37u`a_)q? z8t96&oW7Sx2Q9|TwzUI5Tj?&t8wWnM)^8%LLT-x^_9{qJoH^zPGx3vmc6jgQd9%s< z_Y!nq+G?M!qLJvp;2gdC#RVE|fsL`{J8Mx|S)1^Lm~YX(!h80+(QIIt6Xn|hzW4-& zCr3wJ`K;q^anV=wC&!pbW~fUFO&6`*d2ecnlP?UBF32#mM5_2|Y&FRUuO~WintGn) zuIlMhTiJpMza5hjn5?n6O{#T8s=l8Ml}d%0|QwiL$ z+myV!rhZkh8Y3DOx_rK0D|2w>mIP%5e? zz1O1&)hOqz4zhlJCfk$W1A~w1;53Qhr@-aZ1oaI98=-M!_0({u5m*L}9>bR5rOXF$ zl>hhHkQ>0Iw)*2)Sk^~OpV6J#6Y0lNn+;j029T7&!G$UKPf-o@Zy=Oz*Ajr+vrJm0 zs$q5(Ik$^e!k#*0GcM*p&|p-{4TY8Rurxhr89pw99KlI6n|tx`Yv15 zA(@EpOg(`>`t_=4CElP^DjD!I45*BVl}4=sSj_?#F?p+y5!7LoJt8{r8W^Ym`9FfV zRoY$(12~;LcqsM~IqcS`cIs_*`aEh;q~9?-{@|*3R2KTdy;eYPi?M>v&Hl@@`HU*y z!jllwIkIG?lW3JM8q%mQ=4!oqGJn$#uO2Zw3w-RDmCsEaI0bfGWp?> zB;BE#6sN;p*;&`bWuZCdL*FB+<&1GH;HcVo)ZQg@o|_enMdrAf1MCtYI(v&S?~!J5 zkdSSx7`5VOmpI9E1HYDQRa7%54D6&!$NM2nHy*>l2=VQtb%H} z@m}uY)3$%ktEZP_{hO=4ZsI6{XjTx3*%22o#b$}0FyuXH{_$0{{b}yLvnY!rjyL(( z&(1>_+R7|kJP58&U(Ls#XOn;}1-%b$gxRznB}HdpfG%nxa|9RX-=Y-5?P`;#v)b^b z+K>P(M;q^7#6eNm;qJA{$IP7WveF~}q2F2RB)jxHNu?&G^s-j9uS>vP?@_}~wH`KE z*C3V&irrj_m(rg1Yo4oj;s%@x=y`Maj$!nVLJaj7+%Dq0QktP{fCwb@Fx#*j&&JKW zI_P-OzsE|u5~=Y#q$@sFG}40@3&S+b15NH<^`@h4Wm-=v+3aanQGbv1&vkmhAs+4i zF*cIxypSkM%#8Q$fZ5ouD-qad4cGRE5H1W(!m-dL`jU2MUSDH2VOTPZi{|RwP#&tc zC_r#j(XI4A_x5tYL%9YzZ$oDg_^`r=Zt|-X#m3>@YN6D=EF^BenMc>v z{5!ItZcz!Iq(XY`5=97H_jPN%PAH%PW?$%v&WYCUOw-~H_7SKc0ke%wBnmx26q5~& z0@Sh$e666&TYIdOU{e{KX_PUorrASONI!o$B!IYb^R`y}?2M-1H~00W8MJJu-4E{t zHmy(F##cU>e$|%iWM{?) zHz(4TPDX2r!*hBN`@;$b=z5~|T*$u!ArcY;l-{N7)CrHoFqBVt=bew@LQa6IyliVC zs;N?f2zDT5-b_)z+-W~xuRh_bn;u9rw)_wt_ovTOY3N0T-0%KFonPjSuGa+(93_R? z&sr-}c0y6*tUC`#e7t0>v`TmK%lO2tJ8UWXF|iJan3kHlXx0-&6-~j^UvNMb2=sT4 zZ4UaqvC)rTXr>7UPcMfZ38)mBQRUUy{v4xiup<36OHGW}4tvvHmVL-rr)0tYR%*1z zu{*?;H6wewpSD?aV5vBb#8R7U_T%r8yz0BBYbOholmJ*R)ys%nv61D!$P{;NHzvW5 z0cEQDw<=Qe9O-#yfj;sf+p)yR06b93p5Vdp5=Gs)*x_$qVZ(kOu0pJOEi^rhFL~?6 zv3kg-ow`a`=c?F#xTN=aUd?W(MFAO$Nt4pQql^gj@c$Jp6Q6ZH3al*|=%x~d`BRA< zV^#B`OS_24#r8==JJ8fp6WSOS!|FwJ(nTIgTAxrQ*$_q8%unuB2g4>KvVjttL?f4z ztiz@AfEwmhYLkt-j@wq8{H-c7O1a9p8uY}_A)+xOxLmJlN%`Os1tIkYO&^ICnk%$i zQwxTNM;E=`*Si34I?jgBE@#MikMw-MTiM&3b_cB7+kkC)im{1Z$i> z9S9C>06y$^5!Anp(rr0HB>X2LUJ9HTs24#-40rcVgLaiaG@5Lr4=|xojmI!vUY9*& zBS*S{BbIo6c+~z)A=EcPrpp;tw={SVC98}fc70|Np|_i2jfky6FaN6LMnWA;ri?&( zEWO77i&v)2T-y~;(z4m|Alw-K^^lOrhzmKPv##cTh^Y-0zfldx(y7eGM8`|5O4D5} zo=+Lqr3fu(WJ$U8Na=bjrb|MN?`r!ngNCcw=u3d(A{E%M=UsFlB;+~nR-O6%6yNFL zM7)#^DX0qQb&opL#m@Wy|iIlLH*IV zPJ{L~fHWxtOPtouur0sKm+q)8@XekmfSlziYmf(3re>BLX2`kit{r!}3=#lG%_oF4 zKPdWq-5TL7&0Y7qo60~Fc(L`jO|gLZM4^D(Hno%_#q5~n&XJktr`P}ouhhnCaww(| z_w+9^raUp8>3O`ho&6!pNbWl#^02r=S{aX~o@QXdn((=duh;xUak-9msfnp|0?Jhm zF&}anbbW^Xg6+kbNkZn{(`i#WxHTLj0E*z&6)h+vd(VwM&l&3 z*N8P}&IFRr%n;ndcThlgxW^XA=E{fHyPs8)zW!l0O?R7y&4C_Bj8JW@a{Izyz0j29 zI)3B$S-dIT&M7spTa{G(3LnFbAXzg2e%kSxhkF8dVvqOSly6u7Nm^%mPeQ@8P&W+I8&DM*4Jxp24|G37Le2yQ?}a`5;4bZ!srD|uEGiME_KRSfL!3iYuizBf)AcBE>}0Zcp+hTE@MgSpH!r*^?(n4< zk7v!7IXphpz2Mo=#CI4qs^Hrc2oaLa%&&$zL{^X_@sC+fydPz(7(x-JlH1Q518Ob6 zP6oBSw(Q;jsoCQ>>;GY0Mlh&#!FT|&Z28}}gWRv(rVyRyI!eA$%pZwsZ{temcQFtc z$@m9LN_kOyaL)pLb{&vhT#5w@ZmUkWGj-Q*Vba3F^Ae=~z8DQ%hz|6`gdS`LR0i=y zYdpa|H3gyc=m8I`R9AVFF)6eTE{!krbgrTu>#(Wck!}-S43r9Fn~7NEi(DN|(&!fCBuYv&6nAavsYBf_pydKStG|hKDBCh9T8+t%mm>63tyq zu7YTpXaR?m%7ue=rOU$4t5z8Kmo0_&w3q4=2!F$nJcg21#H2FcJawe>J{~$tQw=C$ zr&N>)2Ep@@hJn&tRh1!)uXRUeD7=?8=d^-?XUNp?g?z}c^BTE}F9~Uh2ake`0m*(A z*;iM<^U$flZ&(~4VK{4fj^~n*{^gJkbE`|k?V$58R@=FAQkC|yQGRnE$_GCMNkRiU zcq{I8goPQ+T%8kIJJqIC366ZJv(m2KOeICFw17(~0z5=30Y0fAc$?tBxez7zPCX}d8bKd!F>+B+}VfMy1$7LE4sWl9UW^7awj;s8ENgxD9+ zhqDq9qcxl>XGy8J_Ethcf#hH8dIc(_SxyeLGb)c<_n}!=XHnWN{sGT~5}F2+GvS~8 zqt~Y1*%F>QxZfmMt2Z2y+|La>(QfYgJR>jhyisx+CMF+vF=oKk5sCnpNv9*_$LXOKE?si18YoLae9EeI(fA;~5f9pK4ASm*VP~aPedW<@=Um8{8`7C!a-+hRde{?C#r&p*@#Pbvlj2%;)d|;Nl=Lez6 zc2fy5rP>ad>C(VtBKl;W+KL@g5XqO8h*+0Z()}LGUgr}cM*gLzYT%2OeZrf_B;BUC zgUv=%;nkmmu^n|n0?)(Do2=#FzA>CHU>qb1oU1K# zi;?;S`RX8#f)U-4uzW|_nd{~8p!K?YOiGkhd~`KgchZLH{ff#k#9IR$47Y+@fY0OA z*1UjREs?u?XutACHa6*4Y`#mPcUlk{QmW#VRJA`O0%fo?jwnF;J56i+a%h@jcd+kS70bux=Lut>DmF<# ziHiUO(R+it_tj7IZ-=QYnvfDMt))Asop%3Oafq}g$)HSNX^)WF`2ALea7|}Es4Kye zhr5_O^jgBOE~fMs#xv<)$k!A;S@CmDAn&U;XIT=I*&Wl~^7kEEjL4+AOa9AtfCdPW zYfgCOi{9Na5GxsnG;@q0Ju8FfEmq|QgX=|oRR+_klKo(7d7kv+4%vmc0uYXQVNR}Ix2B~&Bzbbyw ztAF$CY!a>YKtT^p7B=t&D}qTobA{c}T~Z}Hvt$Zrxe(!rnXKg1s6_DMND*q3?cn_C zbyt}}nQcE&m{CN>bvZ+u+y>~Zf+*)R$H9)hVtFUD%`I;TzoXib zM8y@KXMJh1gBltf^bbD%|2F!86mO>%Tjyu;wnq94%U5+u)-jHfj}ptzsFT{fe{r5m z+yRhfUz!y{$`-0WE?AQhzBuQZ3OcdO;%&a(K~ml%MFY8ekAGE z!piA*U=c*L#8*muy%!L%P%cE&gFVNjf@a$#9j>KIohEP)2uMw*0)Xy5WOH~$i ze_v7CaFxQe_1kvgIhe^I`#>6e00)eZ(W6s~1GxV7KwautW&ir%fQcAupkHq=!n-fQ zOtS9<%))b?eV~dQF+-HV(Tb#$-dFNuv~PfcR_Yfs9__nXCDV8I*E5(YqyJUOMKL%! z2U)HVp`pd-BAlBp)9QAi0eeW0WKWeQBYPG0bh?Wx_k0EH(WKKdFnNJx*E~A|PpM&{ zH;Om)zmDKI7psn%U^l%yW#4IuAX|5Lzp#%X7JytR9uj*jvu|jwa}Vb>3Xr=pe_Iuw zn?CLjTz;qAuVfJ_h@yHB$HY9R3?kh}q0+y0snb#Ko&V_dhC;H^{1Cs9bY5EKJmHcb z>jV)TbFLMrUzH-Qt>GIv6A%1>3NbgOL%}7c;>*Wjt_P5eOH|-pA zC7GVVtIw@|1?doBPu6uGxq4*nde}EV40x{8)XgVA=v`ucdhQ)ln!1=@x-j_~KqY)E zemU1MTVV?NuV#%Jz{kET%o<0YAlEK^scMf9Hurn^mg3VLI!E4XBG}RrY6>Oe!p_bj z?ZP(R=1xT2d#0Ybk~dAEoT<*1v{cHK^q!~flT2}JWmlJyUZ{h9x`!Nsu#BMxqDbBg zpO5)hVrazp9W*_V!e&Pjxttix*M8hRi91Eo0%qkdPbF0Th4*NxI*c)S z(sHkYfv@9pj3IVTta4O3$3Cv#omnVXie`KiuF&ciE?AH7?EOuZ%lr7QQz~R;Z72ZU z@U71@cHpj7@v4@!j*xXbc^nc31lW^@EqlhSqNrOA?BksN-&~F>)dp($URGduhx6~| z;-IMesZ5d#bu+H7YaYNqI9*+`! zQOS*4J?LNOoMFxJ_i=ZV_<^&Co*Z&{c~8rJ77G%QUK8gh^n?2p*~;&F#k zAE%4fQG7V$yY5JLZR$Z*s0FAjYi<#ux}r=t3rkD1rjD*D1ZG+ANK%SYb&hJ_y;Am9 zFCy8{RrG;{>PX#3Tm1#;DeTM%+B9I@PcL`!UFItw$0< zD8a0CbTJGkG%iE`Vo%pthU=Pt0v3R>G8@vcqD4cNOPjTJ?9m3JU6NpEOKK7SutB^5 zA*Q$0(Z3149LYRsQiQ*E#q<_{L!hVjz;Cl62{#P0|6Ydi*)07WO&64!GN$`f2O znT1PuChhVVzzBz@k1Et7Vl&65m+*cDAP#p;z+C*2I3(c zHIwm}40|Yi@6;+4gO5QZ!P^ImHQ9(|O4ObWldlMu)o;*o*0yT7S+R8@CRKKYawQMw(4}2L}AZwu!b9XHAefR10tT2dACT7Z6d!`Ny!XP5K za;$TaLT&#da}Vk={ND{fOCbRGdZrj^y36ql#a8gKKsKx0}OhtHnUK= zvvZ*&KGaaZ;9O^fuX=l?QryuiI>3WfVTMDYuS`IO#rZxYX6>*-`u;s`)<18xyikwU zo?+e^V?MjmJyxXACB&zXgLbj6w+mQmO1z)!jFrn`Z7~5lHL=O|*Gv(_EpU>L5$erD zf&a<7R>-Dc2%NY-@jU zr_g5?SMM6 zvWxgDP+ND9Mt3p)m>%ASAL}5x=(NZ-rw6vcW@UF!C_PQwU_gwGyXhZhX2D!%y`OM0 zgB!Lt+kikb4||g4dNb49@q`3CNILT&qk^Rf0e0pK_Pa_X1KL%^!8mAJyMjrG>+BNza8a{o9Z--WXwx z`59#pQ%+_HK_n!a--}X7E+`O+*)j!;u!s}rxD~y3L-lx(z$PT!X5&twDlavu*;PS) zy?k75+jUaag}E6?@2Omtxsk^M`|Oq8W*W~3D%M{O&K)yvst%BzEbCGSodRURRfVom z#m;8Mpp!owt7?-TYi9G>)i4iFp~w|H{*M;YelzqSnp`Uc$QrDn=gTDPD-nb1ykdq_ zorhCURV%GY?*Z#N<2(WJG25k%;+LO@SwiJmugPsVu9RP8fsDxSAV;~nh!+rVQgBPU zL;SL03ua`->f22uJmCmBVN!y)JUT}_%W9Iulme=yhr}F!o0(SbrBKDZ1PQ)z%RKW}UB-hR1{m{#WXI(2 zoT;R|cXNaR$sBa()y)MA&mT-^pd=OAf_TQIFN`s90_p38V9C!Nm9+N-PWw1Tb5FXw0ERfmuvajWI7-j4|{D9N7&xy%s1o5Ld>Q8j8P(< zf#30|*A{{v!^>{7p;KB+z^}BXkVrBrb)uLPJGK%UcVfP~i8o1B1Z&DA5-gqdTPlpo z-BhJSM4O&wU&QG*g>`5s0VYPVK;m_o$5^_6tAc0XvkR@$*FcVwbbVa?UriQPqwKmv zDK){Ii>_Ipt$0xmU>n)o^Mx@TUxNKlY0wC_38-;bj+W`=yiwt9aP6d6 z=RdgmoSL4|(^sXPd8wI)RXBYaEIWh5L%E6=(haz``@<!RLp zLJrD~YzhlacgucY(6YHgbf?6;uU5nCu@t?id_6s)9pd;{IaKec$vGiOHU4Veto*Wx z_#tUDeeS8+$puqp`#-nIBkkRC4FJ-%3m~oTX_AL%*oh5A_?D=_*w%(mjLOw z2^t<>H_DY+EznWn-;;VN2M~!v%&Cu*`e)x`j%OP_C9oh&aVwzUh!ETE*c6c!_)n*~ zI<@{J9K?OET6lTNd@>^afi(g+b+=E?vRaCJ$7uE>ZS1psN0rWVTY-g)B`)SrL~W-NSLKO|-DKW!kRCoU6}Z)) z)}<|ci}sKN8|8&uvxH?5+UFZdK#u%UN@U1S+JDlhuheu8J-1Z}e&gdXG##c%q`6~X zH}Pg5-nYQfTIm`nt{Hd!2HVq8QjI#U5s{`q0;WHNe&qru?v@~+&da=;h^!%(mue5U zmGOG@m&^R_2__K&=b&wjEp}nM)*B2uWMMZ_Kx1{N)?NV*Iq}oND4KSRw?!z_JA(-} z%l>Yd2&Y1rYeF&^G>*^?<~kZdmWXXmLx-G1C~b4K%ErUIRc$A;Lclb>wT34a)RveR z=QM7B@}MK)g|Tw0>d)Yk2)Pl`#O%_@g6Pip8i2}5UYK=RZV9JqRga4pq9hpBUwENa z=PoM|V?J(w2J&0e7N%AN=i`a580&xl^*jhB3NSJ(-5Y-iZ7Lq;MgE?7EFAfF13$LS z9sjn3Vo)3GzZ00|8Gqo zLS=jSu3xSn6p%3v6ygalCOK8Z(Elj*Cp*FF+gZ8`*FKbZxK=F>6zW$Fr)jF>w(+?g z&g`NHx`e0D1RibaoVyldGq@F|HRf~57{Wx|);rWhAsqe>3l!2`O8<6)*o3_@-OO~OvQi00gk$p_+eGpZa# z&%HB!uw(!AevwKp8rbMOT?krB&Xf(dvO&ebwGZN_!Z$}sm+V6wceB&7do&7qHk;Ik zDF$p6WXWVeP2laI zW4ta@`kPq#oFj+9!3{2(9StD6t8Q+1!c@Uk2DFM5o-YnsDe6`S|7tyh4fy-gqL)u2 z)q@u(qfaLZn)&V%X{)v~^*z#6Dhyr4!GAcKJW{0$L{K7&eb_@-2u$O3CbviRK&!4o zQ>Tp9+}DkZ=Z3mk3zFy8oTb=Kuv|VgURvQH00P=TjZ(S&5zkdkZI6sS-nCZf?&}Ga z2uJfq(YW~k{bzIe>i)}ka<(`zam#ACZieoX3>DKdn>|_KZ~oTjqpGmP+*aD(a1L?X zON%|0y+T>(`EnhPu*m8l&{Np+tE$U!enAe;FB35`zEW%gJ^uV()uNRgrdG@@;Kc@8 zR(yLsRk=g@xQyEeLb*wA{=q(r@CggFt`bijaVU6hkFP~ban3;Oq#W&2Ik3l@ZuQ{L zKLTa4m1}x=tdqiAHM?MbkG zkmD)FR-Hj9*o^!&&ugEHcD^(!1ql{F3R1dZ^@f@oak=~>delC9dAvxAvTmlbdlt%_ zXPA!`kPb)#v`CncVvqW2H~rFJ-y8;E`VJ|UNy#N}ra8gL?}C>WtBvf(h^elQ?>RWq zHN-%NeRDAV>Wf?`q;c@?m9{wG&U<-jUn7U0=%5Esa?{(2xr9&e_UY000Z+RsGEz68bQZ6_L5I1*#*Zpgu7`D+?H+t$S}l zrlgmoFCWpz>L6WtUaY*&LL61%6=;IhMCnehdW~x_mDr3xYg?v6*!aml17&{ZmfBq! zHHqf!IQMA`y8Gn*)|}L;`qGat`rf-@3*vr0&JO1rN65Eij3V$7W!>9iiRSKy3@eb1 zC0AvnC=Xb^Oc#IGk0KLyvhwgQ7xfM5;Rg!VuyjyFa^^^}F* z-8^v_QdCUKplF{YWx-(dc{E8Xd7ClK7le{`**@jy1~@~qDgws(=oOmIrwi205o5O&h!<&fKP$0pIy~O#g&vK4 z`ea3{IMVnm(wxqam3$KnK_z}Tws#sS-USfZk`BFj_Txp#5|Hhn^> z4x<*rCTWZbK$Y}`R7BgYa|dBNP}lXh4-tfEkpJkN?=g5rH1uTjpyP!eW=AHhE206I zcQSL3EmE7jrY91$KAOt?zNSQSR0wQZC7#A4Xk?T%y0L}ej$OYNP|#nFf149z-HKF4 znJ;LcJ(DR4gv!PdQP2r;%K_>>%=!-`RM!Y*uY`wLZQzP2=2$z(Qw{xKwS2eWLGgP{ zzZfSl$mR6bD zd@`}cgb`89+)rj+<8iPZc0wL=qu@IjxJ0T#&kkbo1thdb{y2Us@OtZIqiuD4_QN5o z%q6$FO3&jyoVgB!Lewzd$0g?(a@utg?X6S! z%2@WuGxwXYh{%7vvWO0$kk~TNR(~(}Kl%n4Ph+r=2|Z~iby2t#GZ2sGi?bq>) z_!G8WWMhf6UZ9d1zjkWuTpnpab>C{@s28KWTJ93_T)u%|t|Y4^&#_3eD^Pjnb! zD0YJzRfw%qCIe&oJi?5DbixMlhC3^V5<5>2>?F9b!pXHWihF5bcboFbXd!Yb?s7btGLSYdktf))KGa*Gk zhO3x2?K=~F(7QRX$&5Y+fq9t1sELYf*y!=6!;D{5QJEu~!>3zl=uV>(?oq=fgFc3Y z_S*eri>=A4J_p(%e{~68H@}OdW7@nmkIK=?v(EXVwZRD-c>nT!0OiF0XRK?d(vP_L zs7bTR4=W9_tY`OF*vrpb$1D*A%|bd=%y83C$CtU04BHW?T`kiiV5QrUrQ!?ET5!f# zQ+=(~8U7By8F?X-JcX^1(qIvT7~AFw16!?$N5+}-0SpT*RY1%_Z-V!=|x47}#bL->1nncQ3*^av7Nt%dmVUsUpCij+c;BtRm9lO5{L zLdbH7g3H?UxHx1&70qO1h?-$5wpp(W2aGRcSGAOyY&fyQ{umjvZ7HQ4MfQ(4#yYg= zyhXAmLr=*ELTkto%DBP4N=i7$U-)HnSpOM9!M9hyXf4YF9pH7J=atjLl*y0=S+(1^ z@8Pf6ws-SQ-uNy?NxAINcn(WQrJh&x*lbmOjgw$qu)8HoMerXA7M3o??hWxUC*$h^ zj(n-GQFVAwtwBg(aG5&QY@h zVNM8lX-)nyDH(_5=1$uF(IpnCwz@md1s$STvwbt2J(pNqKg!QeFjMj)WCNWY^DUlW zj1nCs$Qf0eDhqtA2ii{tHcio^J~C9H1j3aHiUyZkCiPn62eg)9#h?T$<~<{ekNzds zpNZ_ByUiNQ2TMv=U=<+q#8o=P^CPcTOFPgxl~|nqWAC5{{n##>BvS9cd;-{7kJXEMigvem3ZsYZeZ1z%NGgt8YtKp4gh|y-WgqNof$=*%VRw{gcCs{8?Hf{KlscR{J(_K^I(L)SKHc?f2cg>>A=>>$pTJKB$W;&3U7S)<$XE|z39*{nLGA_{OtA|ve? z{v^y-OrQmYqG3d?5>G;^Ta~ERALzKTBLGVVA@S)89sSUf zbaz2+J+sncU{7Jt2Q~e2iDf&M7w-~?teO~oGfB$5Jh1QlM?E4|rYygV9ok8$-~9L| z_QIv;GD+Z&#@W=L+^E&}J`8}Km-_1e9@KET4O&UYxI?Pa2-yf6PyDdtA zL?FrN{KN4elQvnI&Mb&T2tn(poQ=Ahk+vjfcH-C>ycruc(kw#KhBEBh!T3JU_4N#M zZ@q1ML_u@8@hx;JzM|wixf48$+{=?+Wc-&QD?6EHF1BOGSqDl`X7t;w8ZgFsk*uDC zg=xM9w3BU5tz4k-nR6Kch06hM7Z^vZ9g!{d$3ZUoMS4`saL3RcN$dZ{yV&M6F3EJO z`t2PpNUN27J*Qz@g?ZT{a3|THsCn+=l)wIPtW%E#M4<)PV))NAyjQSqdN)S=d%vpAxR8w?QkHXmB3NHaaz&`Fj3~wc9~ns*P|9jTK}7|&WS}$J^`()%(UWPUdbc1*Ox)5 z2admH#&dC1=)vmQl?PaX0(Tzx`S-!|hY zh?IQ~e@Q5@Bj64y!B4T&yanH5+?Y?baWMw9UC^A|k|rIWz--!H;yNRCTaZ?oi?CFu ze@P&pI<{V=ru71N%X9X%`2170JF!1!H+X{@kn3mD^Xl%(JxLhz~w z_n~dob&g0*^%X3GJD2kQG8@A_Wk2WWEk)R@Ay>aODcTs*?KrxEB0HAi}NF^O9QoF}pnJ5*;OUgP?JJQ)T)J4B>Wa`C?i9vwPzQPD+iX$1)A;kPobhcZ#(Q-;<$6gKera<)NYWQ84{tj3T zxh9L+W|LtJICk!s`SzHG@v_2u=$^WIY9){DWc<)RE_sDpjApkh$PWUIU zrMH3Gn=6XH_Lpn&+!SwU+5bNhQ9Mrds~Z#TMj^7Rf@-aMt5&c08Y0(N$a8Af`tYd= zZN+hxI^!7M8cMz#X&`&Sg-y8Cb1o8w5PE-0DUfaE>`jnM;0zDA?aP%kMa~f^W?jF^ zG)VisD9!1(&bB?~M5xtm{x_Tt3`SuA_u{h}Q5BeuWBnm{RmnqX8ew^E*zf6vmf__l za%;AohD1%dagd zi7rR>&ovbbvU0jEz)GioBvHZ>Pw22)1_oRKe>9ZSbY(TtnH@a{i-xj8k*VVztl+6) zS}{~$9J+#&ih^~->G7|@X_j5mYba6F?OvEDMVEJBmfpsOWstF0Qs>Pv@BQt`cm7n*sF-?N;teQ8aV77*8v?J=wfk_k5xO zs}M&9cW&y%GF6~ET@E2|qPord&|QE2x;;t=HN_MY#WM9pvk)){{XeXLpG6Fw63?ys z{YNnTPH#h6AJSd!~ok4wRSN7ou-q{F$~ zz7qr9KbA?9HvP(R;ztR^FPE}m*!0ExKFF}%w>OaIbUB|j+n^j#{CHq}Pt(Zuz$1se>Kzz4LtXzm_}kFZwHX^>OyS-w7!ll1st z6ap3xX?3D4*i3h;E#m17T3T!bT&T`|4ZZav8^komt;yD=CCrzM#cOT-1|S>C0_@80 z$=wWARGZIOyWyq2tr4}DR?jnGW9(KJ5V$Y-+riFD2sI9v^cg=ni6Af)iBjDwh3(fL zT*-;LS9Nt|5b4=xDaQ9v5~IIV4u$HNOlKhYQYq^ar4^JT>N(EdE``Xp);-|5$X%C7 zA~9&_3@6X)Rch?@`ZVbce zcaeF@)x8MB17OHwPea?-@K3v$J1jkO8-h5^B)RQCI;Oj-7$3`OLRa)f*(KH3kVRiu z5^0|7f<_l0-ri4e|3r|N#3;GQ;WsQ?*w$W;`7J+Hp)qz6t*Llsqcbk}yWx``3L zLdxt0;z0}v<$c)({IXEDJ=an3KM>wvhl}6v^3;jQn=c&Ynv5l2v1xNh4#}3OKnapI zRS0t%QYskTll_H)_qKTM`6ali6l(jfCDN~Mj?MRio$Zro_dP(|b)+WVFr>2G$0k!{ z<)-K;`Z%Swxd$BzY+ztwRqx1Hm8XUZYok+aoMrJT$S4zLfkufW8{YcEAs?{KPxnSb zF*Cs`!r zOfd)Ir9Uq`86gLp-HnV4F$)pBpkj&@rDc;_;e|6nN>i6JvXJ~oTLT<#O4ZeSw~7UA zjkotkGYFLYS;w!H$OM$q+WA1AGd^-&CE;+KuuuK-)HrP6(()v;NU*}uwZjzZp~c}l z@;tfKDHfHIY@uFF1;vO=GMi6@4|jPRTr0$G3*)BU;f_6+9ab^>%yKA{AqFEE`C*Cx z;fi6i9w*e}MpFVY(}V~P&C0M9{{^5!ZwtWaH@?$3OdbP>ZaKh{_}Q78H7Se$ioB|5$XitAWD znsqq*cA7Zn9Gyq|u8X6M9j~syp!Hz1_ppMPov~VN{%({M1J8UL<+s~1hb@ZHNL%W-^f*tUTokdEq#gE~r+@rT4 zQS`x}=6$2H3mihx88y)OO_CChN0F&CQ%w1+d+-XGSWmvb@|i=aYVvqnS^2A|%|-M5 z42{CFH%B}C2Gt4=aEY#8l`jQR*(+3m zP}D3Tgr6z)gOlFp03BPX>%FTOo~FN=^~|(+@*3cRBzddOT!`Ao{>RY@k#C8^aqs-G)B^of5NEf0C+)HKoKT?VGD|zu2})?_ zjq<(~Z0Ozv^y@*4{UEr~0uz^GfY>ke%!n=QuaIJWlwu%iu{a5;eLS8$JX!l7u6%q2 zHUGKi4~8b_dCGK%K+O}eg(Lqy3S)-iC$Z04d4J9}lzg^wJKEUE(}e!smo50S-uO_S za--D6CI)F76PF5>-2XLSBit*DQH&`wM*Rlk(9~@boTLnT(IxDB{xegz8;@4=Bzxj1^o8iUun%Xlks&~{FEeD>g)QOG}Q`U zNfApUk!kr^C|RVA{aCwne;L@h@f8~OR85>yhrnGA2*6EqsR@K^X`i4!i8sI>(G$VIY(e?QAJGTKC)$OPFrX&@{4rB$oV_#=&m|Xrk!tF66@Hj`2a5OUrT?H?zFC`J`BvpTm>kS z4r@63BQh)o7FbQ0XG5oC7px=)Ic`k!wlS~AdJ46n!`NKHyKy7fF#M}U((g&;Z37qO zco-1Ksx@xty};9L@bGYIvFxNUog*@6q|Y1&R~_9z&CQzW)q9*aSa&(s`Vg6M+$ddu z#YTn31?&XA2u?v|3%EM+=p8nZ@Qh}yx2{ELS4e{40!0*(G1lp36{0!7x6Hg1k2sz% zWP}L{q;9jtn%sU25Xd#->H+}W5F>KxO#b%kl3iKuC312X>7nSOG1rg|iHhju1^+Qv zdVRiccg7`AhmRIka6H>rtE@d^{!cE*Q)!X9N`e1%?oQ8VUNohxe>9|WU^I@h?IMfDnX$R^ zOWBNMCHTG3{Rd%gIa>zeCJch2q}?yOZP~!LZ0(WiVAn})os)uIsSB0QnXc+?fkc+Ikrf21tgOXh~Oy(gD*8a|77Z^;=j zvmFINMrDdBXsx|fJgEB*C>zyEK4I+@y*T)4V1j6S) zBgDbAHymbOmR!ZIMYf?59?33<>f8Y89D6pBX$U1H;Z8}^+?0;TD<61RAhcS$00j{S zeSBbRoL2CsJ!idjtQ;qRZ4qm2o|eI6+v4y~(2&qsw zo0B^As=}kheiyG0f8C8E5WX=mfUDOj6yU6gECJ@NQ4c;7;lZ!BPzIs3Kt8UAO^%z9 z3xeyrcZ*zbqJ}EGtqsd~_qBT0JlL?Lr!H}}Nqizc6I)al2u(xmH81lRr<)#Rn2mBJ zAkQFY-g787V#cs6u-f5z4i`#V9Jno_fgjj?Mvu^414V~Svl0`XN(QLHHZ%bTs`j^- zxV}&Ybl4%cm(`PPC2AdR+D+s)K#OME$pk$(K?vvF*zX9|&jm?h0wnAGHJbo!@_B9* zbQS-fx-coWQ*`|H4v-nXoe7%akG>^s$tn+~itNm^dr`#Nt)QFVMh&`PO|#zLeJky& zv)p(pLa(o|;bq1B%A&bnJ%;i?Y*r^=RtkQegde6E0?+XN@tCNjb%7e;Yxc#zTVt9} zzCy&3-57+Xjk(V8ggy!X;F%%HCZx`_{&!B5G5UnEjF~%|?8B4KRyjYox8S$(0bcIzC*@ z_Xam{R&gc&81}HzZ3y9By@`IA9Sy+;TCiDD;x(BvQ5tRXYR#IZR-t|4Q;F-bpp$dV zlzZhmuKabH5Sz5P%y@^}jJ`=0pURD=uBWr0T@S^J3u*6C?5c4@QVRlzq`XnJ2UvRG z1IZ?sEm)<3y4sR_KT0Bak&a!O((+$TepB~3u|#)IBKh2)Z5!VoE+puk6>C9LO+0gl zZ^Q^l`hkTIr?Y=!pyP8ANStE?!#KJjlP0&@G_sObLXVHFIr*vCHE*c)f-tj1XQssG zMU}H+bK8VKub8ZuO|<77TLi$?u=voZh}U~8J><*;@VgUz?y$2{f*@54fi{H#m3Vhl zIAmoYr;nKN^MVr)B~!0conFa8-_~C4f`Fpf1|p{WEzHhHhX@5vYPRDcxyq^4!XmNR zR~J@*9h#!r3=ULS7QHx|?%Rco6A0z7jRP+vUah59#qzavoPB=&DKuR_#!|Kk!*E8` z1as*`f8o|jrVSa!3je$J#m9vbJXI$L_@7Jt45}eXpv8)D+-6y~kwo&Qt#e6U?$!!8 zJ%VJzV@L9GEQBFE$T8)?u@?aUe#YImi%(r37I_{Gu z@o*U>d$)trw(&GrFg#O|(o>Imo9Q4_lqE|e%Bzpj5-`pI`HIM;EYlP2?gj{- zA62NpKzM{Pctp2^8aD^5jxz`xU;}`C?~s4gpbuG79Z`lBm8-1uZUobRO}ue9=DAG) z_%0xf(4L)MfIy0kj0Blsu50-L6~g#4CY=;I%n)`7T+R1u-dcE>rJO&u9Bh(u6XKR? z5E}-BA#oScyU9<-C44_VQK}MeY&c%3v+6aTW1Iz)o80CKAn}IBtgU3>s!CRRQ`EP0 zFuso{zHU;y7t@8%c$;CDRZ{azi7A%8ibB{Bq$dl!i-fHJypNLaekFd`hNMT^KyRG~ z1panrO#FoW!5iKtXm8D#oJGG=)<4>wNx&BRmJ_r7PwxKgfA# zV%3{;z*Oe?)~Nb5H9LCW4vs1wv}>c^GSoqa7>^fr1yPOw5IO-n6)QSx6v}W#oNSKe zCCgwGp91gZstg!GndFYIV0{8+(yJ+{+vtFQfvIjys&MX&pv-)D7-XKyb|X0N*Q<|)zl!mE_>vJ0lufeyO#!& zG&HP*$nUpXv2lb6iPAVO8RQ(??upQRD}f!yIBiGRhiLOlk@QuYIbVJ$1E+>=a4L33 z3)K@|m6ocQHC>ujNZXZ93}>c*48pwGlpY5r}Z&>mhTw1Gy zNk9T)5AaS`8&z>!N=Z5SL(5gnDj!{5d!g1vooLy#`q2J2tnqP+t^7qk7iz}7>QOoeB=M|siqQQ~t!M8N4 z&HT|)i5YmC=qK+*whT38+JE2r<;b2+Ib>&kxhjEGLTjoIZE?$m6}Qd2cuyw=4{XK8 zM+ZbGp`K|p=ubF0=fV34HhhZ#@V!Tv03k7yiEJqBwDx9cik~7#(dLz_D1eE@n)>!f8Fb1mprP-T^WxO>Qb02`ni9!@1UcafLS z?mA%83pF8#kV@3ySbX8p8`3ol3eiF>9d*l-Lo$I?=+=;$?kO#;zw$H(%DcU02mV{( z3V6>Dz`MJ|NFe0Voc%#gdLdr!e|u5u&$Vd^@UR~|TIF1f#26_fr>O(pb*O4$x`w?(TY1e*999jo4k^ z=xY<0sTK>%k>Neg9dFWi<@0bBDq@ z^i~O;%}b+X1X5z_U={ZL7!Tr;LkV4#r?Wq?BXxVb=t^RXtWRt>jbtz#4=hD?E}Z?# zu{tny0Q+5Aft10RirK)F3rD-vo2ks$EulcTwPmLP$ddAb9{Y%WFb=ARS_a#Fyi0*k zA-+yh4sVm@x_n6zU|R62=dhM9n%WhYzVm!0u1UOq5f72gTQwB2ZnOeUsfa?p)op3_ z_~Hv7z4J!-Y+qtKG_pmGjCkzH33aYC#@^%s1%H7|vPg-cx7$@fyX3-vjZCTVQ#!A^ z@zT8^(}jHr5S|eTPt(^$)h4AmFJ(6O=@yjdFurrc!Z&hH0-)MZsmA|nv6eA;=QNIh5y&@iy;F0cPfDSGx07S^B_nfs=vd;p%WFxy}YyP$(>m<>=nx>uSh62rSPZZp>+X%P`(ZE*qbzHH5IF|w zywuJ7&ESEI?JG01zrFr&hn-6?QaGU#D73O#c5Im?G_z=?i(7Z#$s8=ZV5z?=EXRzd z3pXaYB6~gF6=buQd;@uH6%fP2B}EB{xA)&EVOaR>ZULF>$b{oz2vE>Ewh)( zyD-QER&mtTUQu*+jXd;TsdpjGP+&E-xh^$rnvs{%p45-S$U3fPf7MQ*q#$TFQZR-V z3t&xSx-BU}Z5x}BO6?DzWL?GXUFe!gzNt6%znE}vylOB)>16fAu6mCWu^&DI-R#{rWWcvK& z!23SBf~`!`aYiq6X#{dl_MbtM$M|Oy)bXE*e`(nCcTw+<<>XtDkfK`{ai_En@>ugX z6#6pOkZGJQN<7VprE3xgxohq=DS-ZrKwgQtOfA~|2Xoq=f4Qt%(U`{G9r<8m#qBaO@OLaUN_5!8Qi z!Rz?XjOc`Vp`~~b`mg%V{U4Fn`%VYK`baMs`pnD%?-BM05+Qpf_0hDYlvVSm#fWB1 zO!u97lT|P6D|TIAbb7;g6JK*MgwPKF12%z(tl4wacSshbj@(=jez4&Io7RixW|rFb zlfT)>9?`LZq3o3a2ThnJT}_L<5VKcg@l0M1rkRqvS;kO+aZf%@$GK(ZkQent_J=2# zr3|K=8n*|I(ex@#b@)Q@s-|PFLr>~|wH8ZyF-sVw>=cSrPJ}(4-H$TxKlqc=h{tsxc#x+qmGnr8wlb!}FlEu;Cbos;GhP4CjT}{cqW0wT0QE8j_Kl9i z7YBTJAqROZTG!->7`ntZA{J@g>R+K2nqSiZ%A??WhQQ5X9t1S`eW6p9Fl{I8`AjEehfV37mvSo0YlS10o2aes16y z3c=vsgi(OQh_|Zgc)Y}36Eik;MMT=8iq>#3cwRXRoG%B`N9hlX)#&Ttr?wo=v1mU$HwnsqQ@5muRqu5We~bQ8%qO-3sqg1U9K8E9qGMO1DrR-!Ff}$G z+<9_;XU(n}uFUYo7Sla-yk7d)eybFZRrq5fLb$Mk>heJ)n<^)e`T^Ie|G4+o^;in} z{#3!C)((IwN045_3OWicwV}gGn*6&LYEj^_>v-c6f~^bqN2q9?_Q`J)!n(z884>40 zmLUsT%kv}%$|!_eL+oG}VoI(T@Q`zFASj(9W01w+aUH8;^5>rcPUc=GhlX^`2rxl* z`LBfhU<@4wrs14<4!7b?D@c}JD||6?w{s%DOhnWeEby(g6tuM;8&HJFV?FE#I|nH{ z;Op?t^S6xbIl7#%hGqDRG9X2C(0#F2>APxIXc}fJ6x)Q$oF2)V64znx%SaJ>h z(k!+1IF4jXtjr^#x>ulPO$2TCXfp7O1D8m*G^AaIl@F2L)Nm?%+(Ww8_|-%;j0?fG zpiR7~=lvq@@PxKd7?2Is-@WU7^YV@B53_k?e^GkHsdXd;?-6xwH#=Bt*8Sq!HxpQ! z$#&Ka&Pck$6yfsLs$d^fg9&*wuYvk3%z?@-@5NzXoB9rtErzu+h!N^Ig-V2sNd$D| zT^v(0W)c97_9Jy5LYYlV}+A#On+x}*KXfcR1ZAYm6$KpuXW`kY*Yd>_Wk~3_o&b~H%o9o+m*NfHzL|2Dc zigj0?q&CV7F(KYhwl6@hHtu67U&BV7RQVgJT)JYvI-=@ccwtFA=0?&=mmuZI)Y4EY z`=!e32o$}RY`2}43F!pE+5kT%7=9p>M zkeB8wnlrwM)T&D<$2DWxj*6?+^3`5|4c;hN^BJkWb}jB?;fbQlTxJk*4Zfp^7#15u z(i7mm3P6j2OZlic(ldNAnlmA;&z>+HjDmhd&HV`0;^>l@L97=vcXdqc(!i^ir!k)) z)X>x@L3&K$RLW%TczG!*pcCuSYrU@=Hk z8QgSqj&nLEuy%Lq>Qaqc`TQ4B>`=GBU`D~8IecY!MC|q8r#POyR70@eLNF$PV_44y zsetZaO>AyZTMHemIM>cVq` zuWB*m$Ll5)g9k*M=Aq}--Bo&hVf6;tG*-ox)wXN@UV`j2{kS^!?VK5eW!_}mM@_60 z$DNsua?60LNn~6gC=`7;Q`E(g3%<~AE{PwQi+v3JX_f-l2}oDnWcCA=5sEjPP{@kt znss@P{p2d*uCdkqz~-S_sg-DxDA9lsnUCUoW&G$WLVQ{jSdVp{Et*ZdJp*tObnC}9 zXoE{x^G)cq5HaSZ`2JmlHfCMf29B?duk4T5dyUe^H}AU;5qLAy4cXZU7F5PE{NER? zd*mIVM{z|&n5g!LVK^1+RTr`bp zkql|bf|af--nfSWD!vuMDek@doz9x~AFW*gkL? zB(_vB!Fq}UeMycj@TBRXPeu2I{niOy4z`SafE~aDmx=8VsY}kpO@QK^{z^oFqk0e= za#Xn6NCr!>EqXtRQmttMA0|<@er}ry?_CCf_(0nDt}?eVYdwj!pQHpyIMS$q#FjDqflDVZ z2Q+o{4-4i3kf2Ib_duM#xlzG_Ems+BIvWQ3*pz?o&fiq=0tkC*0D@x(n+~92L_nVI zdt#2DX)BLrXTq~077I7{8QgS&PjT;zi{K`@kpVE~=9fFBckF_oQ(jggIN0Xlb6NBn z7znE1P-1&y^2>QeA>^1&1o{~qqzRRQXe^S-kdj`9M*N^8+bj zV)mcG7Qld+D!SpuSv-S;uLOz4CzsmCIm=4<7!*8L1Tm0-v6Hb7AWmSL=^C1O+hqpQ z-X|Z%s0m9H-YPXF*9ow0!5RG0F*^L@0R;br`YAKlk{hAa!}4T!Qp_MQh${7M8)l#< zNQe3wg8C0rCW|E*_Wi zc}6`By5JW^VKEx$pnX6laR`x;m`MT;MwHRPpMNSanP(VLzUq3nDCs`jmhPM1Lni5N zZs!}}!u&1ArSISUg;TvD9h9^Bc}V~IIH+e7ipnD;v{2|$U9xYAozq&ryFkhC5r!FE zA}-cU-GW?{-YSvN34(!+B$*v%Ym8p3fPw0GRmZe2-wN&24ayEZt&wugf%A8hW=W-$ zp<$Eor?8G$wJbX$K&1X1A5bSHNE?_tjom%C5WEqGJ2Vn;`rPC9s*|tmbsx&+gWw~w zL)3SDUMyK^fGF&mCaSc?pV0vd&S!T zaTg&_avX~nHVFHJEEFUq5QigAYW#s_h=9FOFCeh_be0`SmhH-;go@R^e?s>Q<;TOl zU+Wj*j|m#qWRlTvA~Y25!tAKYNmtJ>z)v-bFcXqN(n15Az|#F|e3PnQ%n8{mwfVld zXygjK+H&EmIT81lj1fU44+P|@`5H>wMWJk*oh@nol7oGVa(n?R)5!{j%Rz$n3{?IL z&^oEph)$VDx^jl3;-`dbP*X@<-q5h6Vk#E=s8V7q4Yx#3P-}xyZz-lo3<@Dr&a)Xm zIC#J4ZMhpKX3HMK+t(_$7T}a?q}09pf`bCn3g|vJqxwSWholZsPWT z3mgAd_9PN`8KOK19@nC0i$cgV0bDnQ*Q+5mPGp$^VyKRtFK5s3+iVwL&4Hyl_IhuK zjBFlBey)OvZN}~YJ%y6`e*;->PsVzS-V4i1NAM(D#RaQFtdfeWa7p-6(Xx%y{^m4P z;IMIGNUM)@K2hKf(K z>1xQG&}-3btHpd|ofo04MImDs)uYp)176=tKe|8KIYudo_I+F*}B#qz)emG#fAQ{doayuS}BU~sXMI`~L<+tt|wdsY)Sh~uyL==As z`833yL@`I6p8X_a?4oVJ%%muFQ^ULW;~j%j?(&>bIW6}F!z`ZUL1lDGS&F2$Eo9?u zl;_D?-2EC9+hWxuPJGE?4UIlxjZbv`b{%;zX@AW7K-k;-ZMCLIdX-FCZd*E44XNt1 zvz2gLEss55u_!ahPDv!+TIMjAj(iF;Hwn;|P@m8n(r(D#N25kcXEVXdj{-2FrZB0+ zNsk(k$OZU01Q@kD^@LtKaxCq^j%jbn=u%--=cAxkPb(TEh(SU=@r@z^_IX*B+eVSp zp~@?%yjXR)Jtu{rz2`}~5kSY;_c{aX&;Ob%h0Dqf*GWbel+1*t@qKZ-&7q&+`r5T| zj-Hf9DP(f7;wlP0687u#jr%)Y*P_c~^&v?klv$TMOx=!2IBatsK}F3lGy$$cCCIO) zQh!74QS=kq*QttVjp4f}g}H`fq7<)Ni4l+wP*cK>V|zW%TEXLu#{kIEL%EtAUgoxX zV=c%|;g9+iZQG2`qavHx3i*HX+t<6JUY)@z}ET2D_pc|oxZc8tgmxU=OE*jo8w_8y>*WAdVr8Qck1)4I$chu}`18_Ywg zjq(-&|JI(_o%Ef3tvZ+Hxm0ikY1;KQGL|+a*UyQ^6LEgJ5jvt)${)^2?ah{Y&yYmq zec2vJAvjWD-+0$#)|9-V5zPxnqQ_gxVh6l1Lfag(>h)##!4A8_XS&>`n#X6OVI;xq z|2$q%6iAbQMIUv4+imL(wqDg6_6gw=rT-({ls_rtFR#_@}Yt zq$xs{qCjsxf6$tCjYh+teC#6DSKZo)jD&U6k^_a-Qi%MDtx2H~Z)QHf`~oGxLIC$F zP$5Y&i=F@Ins3_!kd3dsu5UxR+FI?HcVR(8FJ6%0bO9p#REemxwOw;#U`*TJW`H=ZTZ`R{MljErP6MIh z$Dc2S=-uM{Q>vP#K3{p23um5&MwkvKvZkH|P2knGi7~65>&?%9Fde|JH`9Z4e&=!3 z`%+9;CvXJnk3loGuAC(ZabaNp0U4{qB>!Z|nhmI>2QekZS?%q*>wHAdA9PYr-xdQg zY|Xl}I7%E9JIRsTaKRSQr%xFW+wBoLL*ZB)#ocPq}X3mm&DQZ zbjK6A>V7+(5E-%9BEFx%8w%OnV_^L;!96;6?Ob(x9~h~2Htzc(kNoD>Q>psPlEeUd z5K)SHo`ew!i}VByCx+cFOG|rWunc1nP;|T=I^EKOqH={T0V`XkSNfU?3^z0oO7H zUkk@9!k21Op#xUF7g?v`v&M#X-AIvQ0Nl2Gxy!IwsxBPGv{K=npav{e zmXOVpY(>^L5gskl2HB^8$y#hjF=mhAj7ZOk_9T>8@kKmCjnTHL%<-$ynmMV!asRKj zXio1uM~Z8aXDH_W;lK8RV^Fb0u_(c<7ZlUOG6J~O7XsAMM-1h!A!NXkrp~A!FoofO zhVmFg?Ky-p>X-ql;2n?iqDWlyWgg1%PLIIuh*y!GY9GGqXLD#SF%uFk({8i57MIg#4q6Cf z#=C(9Fkk<@C3_?|ZlH-~;x0{(CD)Hnpj~6Tk%uoU1({uY!i%a75jgToH33+^_-N0p zz|iWq0cdg3H?|5!t=pK{PiKKJ@}EqHydAM|As?Fj^e~22MK;-f@80~uxkX4JxhCpM zO>dPg&q6|HVe2%dtM;4pEd-Q^s`{(vzJYE=q=Bo}aUQ}7A9Kyfn*DifftbM5@vm(a z7P)1hEu0tM-=`uU?hl1KH_U-ncwQ#6%cIDSVsQ_Y;~(7rJ9+y9S4UosNH;JxoWrI7 ze~j-dk^e9BYsa6Vo`+KWIlXG2v{Ij&WsD?e4>XM>vy26FTaZb@3BZ74SKHs?R85dq zZ}HUhvEC%8X+w8&J=iNUi(H;1Q*r35UffoP)_xU}CUd_`V&(x`c5Z&wHWksO)pc)Z zKQK|Br5*m&uz^OPZXWrJPo{Vq#~^IJdV-2Ro%jPXHc8IYuy!#kHKWJax)B5-^J(X+ zqQ75&XV3eU4EVctrwQbYMZ$wPlJc(Z`8|IM3Qy-NspE#~Fk0OFxi^60-i=0*w!y@J z3JlYjgn%6s`jDa^rtS_`Tji%EVm25f{~_$9(uiIbKt2>|1OZRc?~TzS%&TQ3+HKWi zjrw0mXt^<7RoN{1oXOswJbZLgRz*Vz;{K<)SpRWF<{ZgD*vVo{IgfUP0+q#x$<2`G z@8aX2rIRP|hytKeO|r!qTNdF_6rSVswUfGtvM1D7h!XsLVU%I zyRWqxzs5wdF@;(93jRm@(Ica=l*&wIFwle2luHEE!3_=ur)pbkGImBLQjQJRoUYWW zlo_s|NWHEnfrx836_y~Y2u5Db8qstmuK7kwYK!DqOpY9Awq5MKPwIs{h;uL=kN30H67$2{Gt`_n^Dza7@1ClTJdnR-=8?PCFX$| zyRIk1Jb{FLyj0o_>VcImW~;RR|C&Iwm@I5L_?F&EcPX7l!VOqP*4enDJJL{R1L9K1 zNivt~>AqY6DSlQ|k$BJk8cMwdf(v)%O%rmO_VZ*c5F$oh8r2bzh0y!z?fYFq>Taia zfu_Y`JI8caE!Iwfj9*WYRA32J^D|~11ZFHOkHPlC;+JMP(Z|lKtRGmXfuL{VqqUF| zp%yp`GM(M^ZuCc=@KK%JeGNNBtR3oun^ga}16fSf2Pyp;*3pop&IT6LnX!gC6pl-h zSc-n~LW-)3f$ZT&WLXf^j5QiE6ho)a;<$|zQF+Ax8$yA z1QR_nyFDBd%-3>(7j~0_E`G>KAnDwM^YNpTly7GOzEdaYMlkB^$h}+^$kOf?^jOWe zCgCnGqW6&=N~*_FcCy!X*>gki<~k4+;qJW3fXISZ9zyv)j`weW!-N`tJ;Kx%4Vqre z!tHG6A0N+CDI1{<-S4%^ZjvJKg>Kw?w}r+?s#~#M#V#c;oxn>I;3}ajLv%;jcAB9b z#zg#;!V_QNY3njJGs1t+Q-~kF8jeBxis|0k-zp+&Zl2MACJ`^Wc?lR)f4 zA+h* z*nh^W@=kuBIzBI5fY?IOJpuGLklatINzNhJnn@3Gh6qpKfffFV0cQUq7g(6TmRKT3J z&NYPaozf+;x}s8;r8Y#`2+yft(h#u@SU>lA)ME%fk{N;>j-YO-{$NDa5OP! z&99z_mnda1NF3&E@;RgkL_6%|9tX$Y`V}5`)<}53&~=gLt^5c-kx4wHsAsYn-i!LO zeE($eea#Rt$4C}i7>Q+(g{9Wk5!4%wVa+qzSYD3kk+Zl8O-`&cB5x<7DRf8PU4SohZn`%?#)a;vXf_2?QL( z>^3%eKDuJ`0_j*Pak?urej1s%e-}r6L|kL zrJSpAAO?_k##*;*8Ty?^O4koglocnXPxZ|BBAJ}_FrK-3m^qF;xc#eIlvyyC=+-gy zgswT*0|+jysWidt@!*;S7v5qQkr#lC_=#8e;uqsrcCjZL{XMq^9Jy`e2s_mKNm%*g z9I+v=`BBP}m^b|0%#m*xeZeK(1hz@+kKyE$<;PSdDkX!wu*Xb$+Vh)eUzR=~Zjjc;Z8Jxxc%?BzUk zwgdVM^>0ZIr%Ceim2`8a82IW?Bi$b4MDDG*Xg0a-i}i37pyzpLTXOUOCxhE~ER0om z=EygTVDs<}m8kKT>Wue?jGEapPD9#CgA%$Nq&iy>pT6E6nEuH z7%F6!&0OVesss3*7U(4H{Qodx&IbsKiyxbOi}Odjv!b0sz|&7Gx-ui+{T@VR>q)2G z4X8ehdE02 zr+$1vMC++v7(AQ~P891SJemOT+)vO_=2yKR#>lmbCf>kKsU1WtSs>vjKe&vUeQpt` zmui{BZ94fw@>%;e<42f0yTg#i5Uht+oBlL=mmHLf==|i7h4Z3zkT3CV^;zH}z9HOm zGP6yprl=hDgdpJ(EXdN=12Mnum$r)mQK`n77j<5YoD=@ubNp`38H*pBekTQhYyQ;+ z-HGJWS2th|e=p(pE{>W-Q^y5+j`wn?nv-SAG1o;7ZYLp~U9R5rfyXQD@e203)fTPi zsT4;O35EIO)bkC)GORFRGCQ$Td2@E&rN!ewm#(9YT;thj$)J_U4D7Vy=Tk{Z7{LlJ(Fq9gQlAnUEuuZ^jYTQGO()D7U!y}e6Dt#Ef!ct|a|ejuL+ z+x5XBXemW@I=+->PC&|ejTAqb*n23*`zB?gw>SXDGruqe&GGfojlHAJ?ff z!AWW@2#kl55fNzH1DnYWCjoFO>CO9$uY`4A!4Q^=6dy5VNa$T2(TjG8VD6VZ0`JAi zwLFYvMQ3e(Nb^h`vzLi@9Vz)kTP%ZVH9>fseaR+=L|Y>{dvooZ5< zi3AbJDYBdv*wPOoB1yC!1|#RyojKuC9r~;vfs0a287pbDCeCi6WH?Y)|401vDy1M( z>~|%)UR*B2h982G`FD`z>9_Kt*oEbkV1n^HAr^q44 zy29K;YHIXM!n0LlYYw94Uf5C3y_&PP#|M~h>>qlZENa5q<-CH#x~iF-n8+sWLYw_+O(0gLFD<51=#2!pSvKYgr_VAR z&w&P`DvVvV(3J*d8l-6Yj;v9TFvjG6`|h8U%>qk1q|ss%m6^DbN~^al5aIFRoOyxj`rP$lznvvkq8W_WR6H&B{C%)t*5UL@uQnY0 zA}Dbs_7T$0dVds!cOMG6<1LK11d>PGZMiw#*4(fKmMS~+Ibloq8t-3dGoen9G4g4LD^efWj4bf5`h#=)k zxG@xsK>-i_s>)^u8)6sUY@}M4V?Ly1btKZQ;`Zn9M_EFJLi)1U4Vahll0?kN@JBe> zorif(88CC|Sv9&{4f6CGxhO}zY->z&EV_rG$H^~sDx zjf}ZS1xwYEnvnSb?NE-jgKd+Y$$oJx+_xqmiw6|?b_EM&6FE%7tPvDUd@)Kb(a~i~ z4`=3uE|UF?Ek!#?H|da7UNpo#Z-+m~*&1Bj3^+khKFVA5a9>z8-t-=!V{y(9;F<5Ih|{9q(+%AVvR(=RXn8jC zDlEHAVrzt?#CEoP0wg_B_&f_amRE}~r~#)8e>6?F_Q_r!L&O#U>*8iT_E%!h zBeTmGI4q_?yTHIMO7WEvJ=KVsrBgp40MFIFohfUrR(SAr9RhWPtT0LB9zsPbQ~=$E z?-n$X-uI407q>+Yss2<#yu#MQg#bH1#J|jaLvf@g=yvsXAW*UEWzpn@tPaGUxTY8a za};DcMC(h*XjL74O^$STKCNqm<8ju3QD>P6_^>H^NQts^9_q)Vz|%MV?E{enDmWkK z#c0V>`i=HR(i+sMx2*NUG0rYw1RJu&YCZ6wAmrR`9;)`Nms>d;s*;#=Mm6x%}pCWaPAJ z-ezb1H0oE(A#trWzrPPb8VM~mQ2U@I-Fm7a;Fw)S_-RDUfBwYf@rF81beS10A>eo; zB6)33#Bh0~K`54hdG7}mG0f~bCR~)f8B76Wr9Evq(%;aNoX;1&R%uDbO^^Kf&?!HY z#ZexRPsuO{0oAWT!Mw(ejPu!IlhLxInvfSl=zI*Y~JaUDY+rtfydJ-lW+m{fe~EXW$-P zh_VBc8@nTma*6B&AryEH&?I-uU-8YjAp~$`zHyQbRs}`drfcdWsR{0t_14ll))Elt4!Hd^i_Q*IyBmq= z<2~CGor%)3YJt|CWg8WL&rM$dq?$SJtc<)6(r#)^iBdeht1?^P@149o8Nq#`8A`z0 zeuGOi{ES8cx1f&h)Q8}XEY*R5$EI{%XrJRLT6whoK!UX+ax@T3i8<7VSAJr|UKhN8 zK%MbqCi=F-<W3ERcQ=Fl|Oet??nZ+k~iQrp;Fa}`5pDc{o_jEi1G(LQst=)I}`$# z1D}|SVSY!?l)Yv*|&fB$%#+a7xIij=gQ$U@g6kEeH$*0-RMLt z>_vcRJB@HLe8K!8lQXdIr6g4!;#B7aQPa5#^@|bl@bA~P2&Zz5+% zE&?kq?_0@H_jY0V$qt<#jhbe){EN&M0tG*j+)15_hAen}&+4iB>G}R~jrxlCl-5!( zUh{4F2*2_9Ijx$x)*&6_E%KdGLo>nG?DAP zPcZFZ7WDIwwbu29i<#3m5C@VT$Y(mIfYH^fFQK!{i@vb{d`|A|0aYc_H`fp7_MAU@Hwk%qL8=;_J7`{M=)k<_MyFx!S?=)9n-=Zq9%|FB-TyblFEet-kqvTkrWx zuLuG{m7(7Qp8`Y;_X1Tx8mkbxa~fCnePJl{CuQscGHc5lu!ZzvH@;rbtn?a%IQ#$x zi&+y^l*LraD1t4W_~Lt{0(x#S-NBM5;PRi6$V62J6@tHo-dNC&!VYkczy$19J$Q9w-XMV?)B3CDlMdikF$j(C~41 z6qNVD-8DX`)+mVisfMY68F@s4)Z+Cy{!ry6CnMk%)e*GCgpE9-gKNEq>3|uxKsz?j z8QW@YwEJw=VU)}o6IY>3Oo6}fnlHI{){tMsUcNu&>>2=y+Wfna#^8#UcuH!kdV0-V z15wV;wccNH3TiCHQn5bug`I|Qdpg7eWtc$aROFFSQgC5{Wyn|!fjM$$S-v8x!j52$ ziASfA<{Xlf*$khX?Uz?iSH0RV7XP^JmD?)=Lk_iPN)C+97v{j1XDfeUq(wQ(SDoXp zra)GjGpEv)Ig^R2iJ$kshrkL1E%M}`c+-n;=_pT2XLX(}91kefkoW{5i}4EqZ>DbX zrMZ5a|6&V-|4BeB$}?zV5%YlQATO&{B)9~TeFMVNg$-yjUX5HC%z#za{mc^tlg*h; z+YNKO{m?~4aCH8@-+^S&+2t{97wdyyFHXwrw2}k)Tw~#=M(;TmKEcs=(govNKm3?SWr&ec>p79%Y*jf?OLF7f#e;J5f3yd>( z%**uR_@<(AOKh7)E8{;>BsaeR+PI;RmuQwEW;0a>;91r<9H}ukB~zh^67G6 z)ZkffVH~$UL3lOvJs*okqeUuJ1S6^xCfOAWrR=mcY{a&bNA3rX50$R27mGy*lx+`5Mo?4%Eax0wGtYz(TJzYtO^(tN{Au!gw= zF!WPCvQ8a%dZWFQJ@%yN1m9apLRxe+i^07-dnqdOs^EyW&V0Y$0@j|HJLLRLinhjf zc`jgeDfddI-M~80;UqFaTH|CRIgn3?o1sNHxTDli(m)cr7bHY1 z2+&qg43d44C6`o{7!Rb`x-f zKX$WcQmjF}kYvGVvDt7dDGrVaULk&aaK0p0wz{(X+;rXdtRvyOt`?h&2u*-jHL6~$ zWL1M{-=OJ=M*Z;>g4{UdeIq%J@YdL_QA0Od->4=>FjnbHRzC=xSI`cTr6QJKP+(F&pS)(Z}HxRj7)E+k{g4^?!_ znUFQz2i@@(ZolAks<@mKCtg^+63JmWt51u&H(^{GSxkzd1Da|r+B5p z+23()5#8VP(?X>dA#e|$S{BDslzL?>Z?L7=&~?))pBv!w|fgckw@md=+;g?6p= zm5BV_$?heq{>Q7UQf?LfLB>*oyxh)#AOea7lv5sUQ9u%*!kA{aXG8rUVPOcGIC#Lc zXO8`*_`C!4tz@L2bN!;xjtT%3CuZ$HPS?48stOA7*U#Sht2G{ggP_Y$ zvhKLfbyJd&___Rt<~2BI)S*|op9hJyXhmTei_!?8!8#tX zqEu52g8%{~?K93F;879+hb5{7`I1=j-7$<>k!L<%n|3B&ei^mKH;7mhB8MMNy+>!y z?$~a6;9Rx~G_(Rp>@gc?AfhjM`|@Ywd5?_l2#0Be>HG3n21pUyew9jQnu{z?5>DWk;kTKe4OgNgTeX? zmaPORI53({Bi)}fA)YYha;BlwQrnYn!>U}5s15YwyAi8wVOLm9ImIgS8<4JT%=rz{ z=IHhm2qEY8RKqCNw!b)Knjm_|rOSHlFM zmCUuI^GUmQ=TNy!`Xl9Bo?hm`ZOA<#HO!Kr8gCRo4R*)&_U@gz4Wa{DqD~=!tvs*6BGP`fYLptA z1WAEcjM9r_SbZS$T({4gnHoV;)%Dzu@Lj8uq8fGu$vY-TpQMN>C*O!7@F1Y_l=`4t zm$2Ldtp5IOZ|zqExcsZ9ymkJRS}9lm*}7y7YGhC!lL*d;E-&OqmH>9OHtzMc*qVoK zkhTT*SCcAFUgU0q_0sUPz1{y-0x3N#d+%`%=R zK>?Zc`)(&1x4Yc?G6t~;4k`pndSPd&9{&19vkqv{(2_vmrNoZhFpjEqowwZRJeT8K zKn5UAVPT$QrA}b%K5sT{!@pKn;CaTmwS+K4uvvjLY> z61Zj~*l{R!3GOP*m(osN^g;|aqFEj@?}YK103&L7v$WlzjtXi>9t_A~Q5R~i_|ptsLAs|V`xEvR zhu^l>WWx<#)3R}k2kAyo@7ANz&Ud}0o7A-_jvmzK-=mV^l~OWzXHgT1_`)XQ<*gXw zU*p{8IpDbAg8gmW%7~cM->;jv56l#^ZH5e^@3wZKUffi(k36C-J?S>YZUCmjajq1v zo++$@w2*O(X;phBmyXD^E;@>8Lp|r~ zlD$B%?k*c9=DP_`*kD@;Ki;dY0Yx}oZjZ^k8yLbXVagbC$`lcBkH>T_VL1nD1Co{u zb=;I;U^pd0IIBYm1t3Nj|;T_mY{b{pWAIu%5 z2gwYIc&x9LI6dDJu~UiX=N_ae*c0b=^1IV0Ku-2vLPvesNV9C#74{gTTrOrC*5>RY z3cWER0`d3l&k>1;gwWXt?A6q2IXa9aFplqVzGxLBb|E};wt>^Qo15J^U2;ySd1g^v({pv{1@C+y z)1~)zvk_#=9BN|v!J63&lmb?eWz@x?5_}%ps`a=6gxJ)ak;lk@a*?ZEKl-oWVv64l z7ZWc6fiN&?QYn63GwD~S+v|U2Rs;zdjw%u53-owMH5g`|GZN!9dA{WIa2$Z(>;8%?(Go7^3Ym?c5p@ED0|>`x|{pFiT^PEc=R!7eEi8 z6x#C6EB5${(ria>rY&iLX*%O3(ZQn&$xp_Fi~5u!PH<7N zbrsR+w@u34MS(@==AQ}_Oe-&(*9QYcW@(9&*@0%R@JV0idDiIxVE&-WqB4UU#-R+) z4{!A?nr({Mb(`_mF9!qAAB#(rnuyBG3rJ7EDLy`7b1HD&yQ?MbvH2^pOOPnq)_c%i ztdysOdJ5OQ{|=rCP5^xJGw1=eGwPMDxvQOKo_1H9V`XOsY~=A-57}*4t1PX(Pp|c& zUb`oGoycjkmv}-p$HU2`a zKz>6nnZ&6F&$xvnlGow_6kW%?tbX&}{p;$l5IlFXA+_k(rz z*kqO=elUhlSWB@T*X1eYHohzof?0aScqfoj)Q6rfAN9y*u!c}M%2cgB$PN0xkwIW} zm78n&JQ52Ec9z`Tgrs8wWTPBnKQt$_F0BnezZ8?mEG>mESM?ZVIpj_#$)bGO1<|y& zTjpFbcCuz$??V0RG+iDYoSqgd`A$`E_%zbM%|r0S+?WDze$lgL(<~Ir{C1ovL);mw zGqU#7haLZ@>{lW})Mw?GxRblHhBlG1gKB|xfVwB*DEl#Nsf<_M?Izw~U_*ey?YzS! zOAk)^=*xRWH-x*_NqfFGU%=I1@Pp@t)YT;>=Q zE^jDB{o))F4pK-n`D_T@I0F8vlcvfr^!2bpSb|_5sQMUc2!$a9!7cQ2a=sozU8-Cl z2?tm%!1;fGc3Es>7Xeu3!y?8k51i6H!{2e{PMPrFJ;7YEfr~{0AZS3$x;>(ohn`j9 zv70XS(HehCv^lv5J_>mtImv!O|LvH%`(Zi#3j0vQ8yOAX>4joVF!;6{9o6ej8n zq@tso-)y7Ryy+)sLNv+qK zbBv(jF{H0-H)4as3VlGu$q;!6jv8e}5zy2p)Da*@G_T7b3}ANx1mLC*KxL4y>2|#b z;ehA6HM8`dw1aiR3FCL#p~F}}f93I>fnH_IxMQDXc-5X605&Fam7||F@u`NQs@}6Y zo2nVgQ-T~VOn68lBA&V}$af&%65Ditla?B&35E6GS#x8P z!^hhn_|^gV?yx{EK;?+6c-3lx z)Coc6xp*NQ`^m4WY)t`w$Js?-O4K7?pbrYg^IJ4Tl!Ww=ki|LVe4U`V$NuO75j*Tm z*EtNA4*(v8d43R<1$yNbsb#4!JIxIFeV(0-G?bq;V1L}pV~T#(Bq(P0M_r9W(Mu5| zd)37ln%&GpD-L!roZA&zC=n~eJv{O?YP76Ao&8+{wFj%#c)F772v@-j>Lrt6E6GN% zShcUT447ZK*kz?}{)Xxq%|0ugca*5WT9zv}3E_?>^NDFkp#&1ewb&Hv-0)qt}c6K~fTPSi6!7w0ql;4{5{rfi7QgAIcE;LD} zI4X@|y1U@MOCO%OGK`yNdY@&VmI?|z_zKxKO6O)uYCt_gmYkg4)R|DQXYyVP_K>Xj zR4>1dhDC^-E>#iL_{}R>18r>`Tv#-Wu`T#F(V>KD3n@{Y^E)-3>~b+XDh2`B{S<*= zruUj;it;)fGKs)z9DQ)*@$`T2o*&+;^!$g}N>|&7*TS1hYDk94+QMKNel!UkLQkQggKYTwbpvQ7W-b6)RAR~i)+Bu9xS**UD-!kdrJ}v|Tvq2$+LxP-4!;E6l(4x2qaS5RU zt#qk)^~G6d zMRL;)=MEX)+~{yu(I6nX;+J&Vq%7tTH~(#I)lDK;zWJHKi$?H8Ac4Z=h*o!mn_~QA z?#5zD!Dg9|ryZT_GxQ(m?DU!i(N-WSk5(zxP$p5HuYZ4btjiS%s z@e*4A+y%+uq zEff-T0ao|0#M0(Xc;>OBiMfwh7Vy#1HL@cwEvS9c(cw%HCg%J_ zeLUYK^H;}cV?~w9ztp^QMrn=fp@vsJUouP&9)h?*bY|}9wQDctto9I0Gy%1AkyC5J zj^_kxDb+k1NJHO`N1R$&w=MuSn<|zO1!JsYi70av70*`<0ujmt!IYjL9gEmgLQn56 z%lg<0b6xO@`qj@3;X_1Ic=-fw78MPtn-2-5k_JzqQy%w=Z-N(Yt;%dmX@1%JJSW}x zkB8%7QHauWKos>}0%!PeoiWy_S09)V`^F?bJVfWghc1~QyqzVr zX0b3cfz|;!w%o8Zpzu2)4P_~pcwZcQ^Ld4(#uJ4WgbPB3ZlmYFr%k`|5V^c6l{>AtFit-}+{$IN1&7EnE}nTXBk z#*%uSxH45dX7`Nd5KcX#D5qI1+WhzJ>W{plL59!F8wwIo-bhH&K6LsTu$4kJDRD3|SdY}i7=Uls7 zeqvwZkAGwshpcN@;g(y#A`#c zD6Y;p>mC2zVYQtwb>89nJaVNXI2KfJuhhv1r0NkS>Klju(>kGv2LPL$qopJ`*{wPH zoV&p~M<|%CfZ1#X7S=NDVs`66_$B@iPEzr?JXs!4EXEnXj@nZe@OOT|E`=I`y;j9n z?U!g|>K(me99oy- zkq#K8pK-d8JjU(@211g*c0XLvc~X3;dfkQ$Po2Q2pYDYT~<|r!gqndMQc*n*oS5Nx72I0 zI&hM41OXhEfq&vTxN=Xj9BLh#|4tFFbv?!l=c^ zUxv{RXi{sGQxPlN$r_TGOVies68ys1M2U;!u1|em<~tZ)e61g~&`E49g^Y$cWPx+< z7@VM1WjR`bV|^xdvYhqC!KGD43&djD;F*s~CCdMd0cL&V_d=qjqV zU#EP{L0YD_%X}{Se-3pL8+Y1kr#vlP=_bi+)xKTrp(smAic9rj#jQpF3onX_Wkhg9 z8wKc~^vuk(#&o+L0m8k_C}CAf4nZr7<0#}^xynuQPCsuN^)=!l`5GpeyC?duLn+=z%J~0graS=v87+<{xsQl2l;;L2HV@UVyAFo=lhm;Y4L0j zfMm6j`*6X~**8U5bd)gFrx(Cwj7luY&V34Y=yFDj1MVI_hu!tP=Y*7;CGVBKu2rsr z1^N6V4Cy(amGh^3Q;NPlM+rxKw_jIO-v01Mf^tR_f-~<>-MgB*z`gSkIeU>vv65`4b= ziocdv=8PN+3aXz%kRhe{BY4(z-znxB!JU_{nqxDG!uNA&;J*CJ z!K;BiNdz+{>^9+#4j_XI zv72rxg}@A~rXv>~e!=GPtkujUYkb57jmx<6Q(meR&p!de&MEFHQM>oY$d8@v+33MY zTpjOn9wCuy*AD~A)M2AueV%v5e=eorebP42@g4Kx$g$bHQMM~lY58`IZrwse@UZg1 zI$>c-sG|wJKQL&y@~lMR{P*}8Tu~GhphE*{?0Wmxfzz-++)Nc+XF2NnLc*18;pxVQGutb@0wqaug;q_%r zooj(c6RB_7I6o($3}7^dq+y?}9l8x-PoSdiu0Bi&w$$4|U8CfuHHM$cW-y1MefyL=W|r@T%be>&W~jJH;q*=fWLdvavnUZ8U^WraRCddkxLzqJ zpM?WlpV8v*uw9L9RknTAR`h2H)YXm?FV}ayYyhYKv560 zgN7&=aM7}aY(*HZA#&~Zox6-}bsVFXL@<(B{6``kZ&$~um7H#W4zNSao(=pMl_Xgm z124M7>ET>xoS;v@2FgwpZS(Op#aiBE2+p226KWwcFBC^ur}n*^9|3h~L^u*SgC>OI z-MR|DOE|BtlJA2D^QPJVi}jPLDVwPz5L)|(bwN3-bA0!wU9M#rEY}u)p`!~M?{-Zu ziKmZ8u|^BB5pm;6o{4^D`37>!NC5_RPn#9JtAT<4bpv?^bzFf1m!pP&$$o-en;fVz z(_u6yv z3xJQb6O=1fckxOV1pFK~DXI6V-??PRm!Ac7?_U07=9!y143_mydoeacw3HTD^gn0< zDS)432d2}lD6o9F+H$pWx~wsmLGH=)TjPVXWKT?G^*637PFFzR((j`LHL>a6kk_vH zZ#dm_0B;FDtx*Xd;GmY}+s_CW4%6?pMMAMhEZ96nGXGw2g0c3V%PIo@Z!dgt3Y*$F zAOpMpG_SGTnnXDcM;C?cFdMF@K5%!(IuQ=aB%`6cK8kfevw~RBbkdG$&wL#m_*e8# z`cWPZv#mR4!>)-nqAy`lDH2FU>3VxGNli^WZU@GH*s*c1Z5fsdb>OGCJu8WWBwp;@ zzw3Ooz|N0fkpL!+FPGhk?-^gQJ-ys%`Ngj>!#>SS_?0ySKJvH}x|^k?r?2MFk==A% z`)64jIJSjHyS!W1+OKKo!2pP3)X?^{CkFw;!N=QCc9tFUdu}TsZ_AmeP#P0m>h=)* zXW$dt*>pzTr!WMl-~*SN+MY{VF1C1N67E#OcqvZmZT=jSq(i(~sMTaHZqtf5bBQW$ z8!o7WPFKMyP(~LY76yh<^&r9Acatb4LMOD$DS5kVqU9K!%V53ARGrUcmcvwb0G;p} z2+mwm^iKd&N@xmHjBV+vpxIE!OSpB>%y(aQtrq+m^lcS^)lCK?*|dJ?U4;4lmAbST zgoxPs9yS`pqNePtzSetK_OWMDO*=UDf(uO`Y0hqy=gTL;%@Te}AjMZ~Pxoiyu%Rrr z$97Hc5R=Y~ zwbves9_xaG!`-}=Gvw79lWzW;Ngw-Cn+KDKS734D%KpOlr_1j@@x#+~R14Bh6l*P@ z`PhgS->r&glV?AptH^ah31B~vXso^G*PCl=siFpVuwI$WKqyfSyizr>CKcDbZ&U|n zoPuqadBKLsLbZ*bZ1)!I%ULo=AexdIgy051(SM%(7EE>GX2mUNAx5NKm6&r_R-^z& zJOovyheT^Ba=3WH)k)YyOFKT*51O3A=^3@>is_7Uqq%{UwE3aYG{wyod;zgdUqym7bvvduKqFk-TO$)hLThWeD~d>3W}A( zQBe7y(A>t3x*{}_LA!Q6>&+CiiNQ@B=;ME=B{lLqRY6g!hd$5K3S#~?iL@LkVa&K4 z6Sfs+!wAD0Ql-*UR5QKz*~mNTi^NcfvLDeI!Ich5(rfBXv;YQq?1+SN6|8eNStQS2 zzIg20OBe?xxlg%aWUpMCO@?-|QY=}$pn-vFaw`{%{Fp{|#AhDPaA)#-Yh|xLVdAbI z*_*cX8AafdNMTVy$gNhQGlBT9TYLiuk59BO1fN!l6VeI+6i-E_mr$p<<@6JY#fiM= z$n9N`F0ylQ(3z(a3G4c1Vh(c0Qg{UM@?E`4A*!8kC4;Ek00vzQVdI17&!A44Pchke z+{cG_3*StMXU9_UJ2&iat+uh~h{`%Cg@gEkP|3Ox@fzoe+eoe(`7$yteJ42NmEWt@ zj6|5(;ES>5YzratF^716>Q>_4OWnWkg{MEmr1EM@rpshapmTG70%@2;3%pM?|76C_yj0Y>G&q4b+BzxkQW&|4D&GN?uR_XYKfgw-;qed!7 zCk(<1T#&ubKKn+^JhxKVDP*^bbxK4n>x=1m)FkRpjlqJKHQQY=iB!%*+k+grxY_mF zBAT=Pt_SZxI}@AgEZa+&YXYDutT^=#B)pv~lwXcJNWCkC2PH9FkAXLoH~%7b&XS5D`EN&w|eumjJF(l{YB(BJa! zU~Mwc-Pp< zfuC#&38Ncad6bK;WUYI+h08L_nB1(kD*cnr$yQo)aI8|Cl6o`tEGA8vNQD3-2xAUq z1Dz5dVl`cdx{;hS@LnPkj{!gd8uQ{As$)`A^m-`gsJs!%yjVb+SO}q(dGTv|?*0xu&D^E#)VXYXAo zc)QXIAI^9PO^$C~E1+WpTLE!U>g1Lh`Wh3p8&5!T%Dy-lqEQF0$BlK(6+~zN)MD=! z3vtgn#IscND8^JdXg8`lOd~*69BK@Cp<+3zPSbhp3kdL_i>nC|Hk5z^1 z)#{jrcPX><=tCm{6681>M+qwKs)&iOXPe4PI5WvabBspbqDtwvjeqvpfSNQ*NY_iI z`t2GqBgkOq{JHog5=hfe&69~3Dcv2{aA~3CttW!$zp`{{j^tYfKv}s$*XdwH9)QR< zRXMX%R6_S9Q)rq55nbhhta#SXv>}}UUAW0cg5rQlj8^bq;3=<%d`CGGj(%TR)gVaT zLGGCsApGr+zE%cATu^7%KG?Xt7^_Z=Q1@C^F|1M)UegBk*9Zz-N?5%5W_?4Z6X{vM zQerHU+)P4UPNR%8hNnI9@$)Fz;#)aNkj<^R9wtuORJxNKtN(IR|e%r&ufM{$pAK+)86 z6AMB6@4pl|RT^iB^00a+6-C7Wm2Qwtx*kVkkKr5$6@he!(^9WHwOVB)RDK&0Z`EId z!G~@XRW=u)nUak*QKGW4O!F}E(bWptHBM$w%;Cy*Ua54%1_lZ6d6?$)zhOb-TOWN3 zZgp;|1Jf+x&#tq#edsB+towLs@x#rl%!UYQJp{@Rg-$0N(#>!jFth7|rc@G0Bnkb@ z-&|Zwds#^+7|D~7DEC_10Y}Y6h+PZov|omms^)`$%dttnXr6f=hcP?KP4M5?j)rof z;kT^(?B0*})1$;$&-pdX;naa|9$yKHb0KA%3MvvN9d}!gk(+hkf?V{fFLi_3jYUa% z*0)A=?#BqnAmjvlR0?E8bXs30Aqd06u==4Bzu=$i7J=8s*-V7vY(6MMsR6Z^#P2a8 z*Jky2tKp8A8YwRiuKyCIA)rW)F%QD@aO$*ja#<1m zOA&&Wy}!mTgcji)F^SXtm+KizBT z#zDYm!*JGwweUHh=mj%p-cVpVK12eQe9-_FW2MkF~1*nY$>telY^b!7e zRm6_pp+kY?RJkwLEL8WFw_l3DH%$R}-N?=1Cs>$9^z6LrBJ|Y4-!2i-ZNvXWh`q+% zS8X13IKRRC)QIPIYb74KxMT?`uQE$mar2mg8dkLoNFWXX9Sps|mz_Oi1RFYouZ2<| zFv#{GB80&mt#aO5|3)U3jm)rn|GTrS4%OKQ3joDTTx}1zz`6-scMX=aS2>_joE#iz zH}C@Dr5ypljqnVO-GM@*sh!C%SjI z%4W_5N$j`9?U^C0tP|h8aP)71f!`;~YB(5R<^1q;D^}5&2LDC}DSn8=jpk=nW5kfl zq}slVnjcJ&m($j^T4V7|wbvlCfPh~3@2q*G3Mcp*CLnhQ zKL&KU?1j=CiP>B}$u6eHgE`jY7pQ)r%LaHl?|aSVTiqZ$5YDFgh1?eq8ja*2I_6>Cc>2g`5 zL_%dI%JaM6?5(8`j8|aR??-0(yP*}$_O3b==yNQQKr zvlvLM%}bj_z-p8Z1G&NdOWE5MQ9dYgL(k>2nHE-Z<}rmla~=n>&a2lNWK@d1Zfi>e z@|T`yP+^oH;7SRx7vcB;vt*zh-yUj%yf>?g*U9$2;g!tC=q1=S;@`jJpAHB{KQ3^h zWtoW}^E*{hq~nGnOibsmVAqu$%$S72*sD0bG%LOeba?G+4w~LDevnu&NO4Bq`C)!N0-N;3ly6dndd`d6w;s%cRQ@XNYjSqagL|n zFgjGem%U`BTysY9wDPn1 z$E{Y@ZNH|=>IMSG5h0gGBt;20Z~yVD2HK;ote(url;8l8(&F6n!MYfBg7NKC)T#&u z5f7-IukMXFR_^#exwoOZZuyjAUmpxrCN`5Sa9Ql$ycM_l9cmdz5K8 z`^|W7?neiWJqoOwY5(G5RZ@=DNC_ysjIvi^8_9wb*b}=mk+JIov+(?KUkh$U^Do_O z4zQdDef=Xs#uS6+&zFw7=k`;=KJ^&xqU~EcgHuTGy!?Plmx7O*#wpi6G;t*x! zJ1n_9?v1gkSSJY~>gN>P^$sV)Jv68pyQ7EmWv!fe18(hy9LXrn6Pxcb82JtaWGKAU zi1GRiILQ1JL{+NRN6w|G9z)`$4g4o<&=S6qYAP zBv!eWx=b*t+$uY7&%-lc)dC#tprlEEXkj25elMDZ0OJkvgLHMHdCg*U1^5W0t zM(bB1quX*b%sO~IZTwZc72)h=Cd^QuGHMoOp4uqmvJTIBge_F)u8W`58j22rVho6c@R=4Jo=nvbV(gRB1u_^N@-GlkA7Rv+jA z#hk5WUwm?1rA^I(O*xi0>gt79MfOWaTGf!eP-xA7*rHJ*wC~{)N%aW#{UrT+!zK-o zpZe(N$Z!v1r%E@nY@@1ASzvt1n0UDoP|}7RQk+J*GCEK1-FtMujuf6v2W`3tO; zt)29@yLAPB^ghpVP+x@IlgJa&3if z&48?~M6*V&)mhO^>JoAg_$f^a1(>;AN=t^+3f3C|QQWsXX{j4Ui^>Ml`=(qbyWD<} zFRZ71*=z_@;<^yX#rifUgrP>kZTw9y8}qpVFv{0?;=VMSOJwy@e8HzO&9(PuRZy^F zUPu=fw_v4of}trHNn_H0!186vhQZy6v={(*32oh+-jC-BA#dzId&3|ZqNdl-S+oA< zD22DO9`CM<3GDNwoQOv%u10|0mA*)#oe^rJ?SiV7`jwIni)Xw7FY*L=@^hY7>U|pc zSW^UUUy2K^q?iCn9*1cS4HFm1QS3xStwL8M_*LyI@=z%BCaV-2qmV~7nSYhadHI8Y z{Rum=gb`0DS*ZU&^Mid@gPNO5x}SB%Q@>Keeo(F>ywuEBCzZy)@HP%RtZODiKs(-O z^DcbJp)}~O-^@b=ScJ_WPAWHZ!I@#Eqgp`f7p|j!DIlw;5fHbYj)W5F(HuomgYY)> z=*;d@%(ONE{HR6Xa`z_?awFUx85l|kx6Jy6Oquyx4Jy-I!A0b@6w#7lST@Lm{)AX< z!GmjS2w}W&^-ROoB(&W@{xor1Bw`H+wJtURcj>!jet}9iEEBWb(Rub+{$iuF&*rnq zM$(cj;F)C-Rlcz2*FX7Hx_2a58X~?R6mThEz)}r3&JkQY2?n^o^2n#Q2Onn`c6)y- zyGn|6m~zDPK>6W84k;}uHMCdjH{(K`>CIF!L)Fki|AsF+ldEU(T|KjuM$db~R5k7B z;2_oZaqCCD)#T5MUyb*7=r&`^wpQSMgW}cY;2I6-+g|MD?_}&Xa_0R{$<{-5&FBMd zCC-Al8ZXKt@>mIi>;8VtsLkpU4usTSF>rrZR`(;(q$PnOR!K{aFXUGoVfSI$RdcRU zlsI?bpP=!5Om0=ur|H>Rg_*_U>o5brxX$&k7|3|T0j?inh~?J)5k|w{@7CUh_e3A+ z;5cO^_sgMbypt*aE5lyZPL#k*r~I);-^AL|CLUwtVOR)7wF8j7G;2?ApT!I9tbbML z9eO-YyCgs8J$Mz7kGZ2KdjH7Ls5O{egXVZAV7pBe{oZL+b@lxWly_-glJQJYEY>h7 zvdUV-+of~_okBpPkuxbiP7HUYBhiDYjyXz|6=#EJd)cX`B5UqSj{Aj(MnCZUoR%z@ zVq=t9Gl2-i?_iQThN%Swbuzo$B1-2%St8=cfFU9)J(6pK?43~Mb!|wrt5G0H`HTA8 z%c$f66mdCgLVx#X$h=T%eqZKP-#=cuu@)S!X>P;CsqOd@QXFto01O#<%mdJ_n)MmJ zkcL_u<)VC*7XM+i5ed5!fmQVl9_RwX3?%jEQX9>uF!o(PLI+4+ZLTP0JF0W_Hw$?p zm+(MQqOZp_LVX;hi@0TlC$hjKk#sH0MiLhTr=Qg*@%c<@kipkT zWzN|fPS)qC9%@KuZ`VsUX7AW&M^UVV5j;3QINAw@yu*#2R;5^Wy7%j8!AcewieA%Z zQoG!~_TUFQ@vIlL@vtv<|F@^01ws)N7yV);9`FFUD|kg}<@IRODwWo(ZuU<;0=rrr zaqWbN=0P(-t)W@)4f5(r%aL#04??Lm3DB%Z8fyAA#cpZ zvwqKgsN?KvmlDFlmYVr6xBcmQ7_GXcu28`~6mBfq@By2Q)OcV0K8nc@>_&z%z-b-|oDKehg?DPOtztDL|C;o(AFU)zAR)R(2QfYJ5_On+x zWIW4df3#Mw>5*fYZlN<9L}Y7xNj@hj_6co4PHc=$$N&quJ%)doXoA~%d1NGb4 z8{*#0-NLmb;TqH06{#g$rY~xlw9)tHKJlg@--`Uv2XFxmo(zoTtrH2!&7aNSbPS1O z9zk#&jY?ub7PbDa&yK;IvK4BNgHGI3>uFFxUXiDcDdqMCI>hm?IxT1(kSfp1cr4J6 zC8W-8xf1-=fY_Km4XKogsx3_SD{1JrM!)I;pux_J^#W8mT^KVk6R^J#A`lfz%qbbRR z(x0MYnmuh!@MndSl=`_dSJo$n#m6EMwXREzYuxD`p+9+7kY4Z>?y!LHMJd{dETq@@PN;PnGFCL?mM#*IQ8%i zW2{g@Vy3uR^SkiHGkhSJgbCRjAiHJ=jgq91^bqn-cs)gN(EFjSPqjYfgIgsm@J-pJWqHsxjbN zlS9l2n!%k;4gLAY3~d6_Y`6@_@_aqng!z`1kcP^#SfL^pmj`{5$?9IGuR@Wg0f}gNF`q3t&#OWn zz_o^QR{rCj@Y`JgL0h-VTnp<0T!M{6LEj;i6jU#j-N!-F%_`jOsi-f-c+@>|q`m2L zmUXe5VNy`sWp6*G01@$SM0G08o>>v%t4<+V*8qUk*1p5=}~c=5PvU2$tC|0JA1rB(8waQM|VST|7M|^6t!wwj|J6 zE!&L(B0%v6SxO}n3#2SDquq!Pl*>pN96>+fBy&+}(80tJ^|?^tls7%_V7T<C$Y!_sjhqHO$>LkKGfX=20I8C?k}(iGBY3Ly-=f` z^Rgv;b>4x?kKiY{79Iy=L{TI-H7VE<9&E8*65?&G)qZ$Q7N&O~-5o+!Uf!oaF*>ox zAJvNt2`xug+}#8E0kbQq$a2=-9G%oZfYI~bS$jJd(;fg}pw$9Sz~+ey&BwaKMfn+T z@GmegF*+i|%Q@H{lNpbAuzT{DAIjhlW85nc8h46PXLQI#mTsDkyUe;^cE3}Y0^-WA zU5F{I4}d&wZV>4UY?5V3p0YMlI)g4c36D|diy$S%zx0-lfjLF#y#chOcG(RK zv`Kh_6mj=6+{ri^B_f<3dC@c+b1z}q_R#0rn-d}@ilW#hfFW^tzV*M68<)A)hGMH= z)>u%3PL`(4JS^MP@N^_FMt?vu7C__H?*m6)k8yy37&a^3B`++gXTO`rph;2w?B#Wa zxR;_SB~j>k{~{1bXYvd{eQ zx|!VorjKBoRy+#`%^EBBLT7v+#qm@)N#om%Hw+g5LXrv;9Sxv* zy}MA*C1wEV6|0NP4TBv5MPR>+bs?W%i{0lAgDoy#z=(ylS$h4u;_9DmR(unEM#u7y zI~XL@0gR6p7W%R)Y4@V>oM{OPy<>qP0IIoMWaFlw1_{2vlUlD~JdB<15y?~XPN$#1 zI51WJ8oIpBD1|?dxrxNEY6^G<4GSI)7Y2zC`Up}`z~cEi{%u={&~|Rx*^(U^56Ebv zD+V0&`-&=!L9wP-bp2zZcYq2}qr~5PJ>U%ScK6bCn1uD&ech;TyteEm==g2%PgF=- z`&8q#E_&LRx{!-;q@21n>yQJ-3B_YXOLk9H-tVfRahSJu-l2| zms+uYx4cVx03P+2z{e7(GT>cJ)co!iIMm8~-AZWb->xdIJMZ2L%b5ei} zmY&zmdfAFZ%7`6Q{Q90p`1+lZRFVR$E6FJr@)y4fD(vD;&e{0EYrA|ws@b!FX6b8$ zKVXyB6&_-{77$Ns5Oj)Zl@76A>)|rZ(=i-d)a&vQfU3UUCCQiRMr*u&NNN`iLhfFB zfTW%OoCEA?&KXiNGU@dRiuyg05AM-@$iMuW9QZ!{Y8OA~`m2^#_2^%2?>-46meJp^ zn=sOEZI*2xZO)pOx*&*DL{k_f2?(!uOyvajwdm!LuqWK%bQ|UdQ~R<*cs9C?stqeG zz-j#e#kJ`8SK?|&u5uUX1nh{LFTYkRK5;nE{P3WrS@J8+1GuRXOaN@`xH4!I{8R|} zDVMiwNHW%`4Ee;UPzCZ3z2z%EaE9UrQdy`Iw<)AGCl^a7KVu+78isjMGI`-y5{04w z1!f|RBZm-~F1`^Pb3bpJj4x`5B9Ys2AvExw%2J7Ga(1 zFTylU@p)mZNM+ec$j-hkP`Yj_5Q-@9`JtiO{qxtl3`>51bg>V6Cd}`h8PC}{aWOezOv6AmnAkMgMthEg(Wp4-6CQg-_-M1rfuDWSr4SQMqVP5#7eSS~EMoHBN$N~d@GAg^0k@w2``9JMauM!mfG?8$he$_5c zJhr1!l#n$1wAt;er2d2aTp;cQ1^$}ToafC_itxz{j(*i^ zeyaWZ=p^s_Oj=C`_bCv)6IACT9OG(A?BPYxXp8Zj()C;ASm|Z5ScDnwFMJJkXIj#= zOP)o{8b#a;qw5{7P4VgZHxPa63h*F2dv4N0@#0K%Fx6mut*)x*8H8fAnWGYm%nbjc zne_~1jYiOiRv)&*>c?mwup=0|3}`RMd(RT85qUAn2cv_r zHL0j+_6+vb7f?G$wH$`Gr_l7r@?!3&T$vx-v>N>U->nJ+A4mYw`_@mrj^()R ze`O7BWr<(T^MVYBFf&LUED}u530nVVX(@6&M0LBFRoK9|`Is!9OYq*lQ$Bt&WvrUn_{_l%=cT<}-W%Rl4j5&P6~iv*$9Pqz~J1wZy|%{fs(z)g_>@ZT%Br(d(_%&qPMuN>2`73C=Jg zN@uv)p)okY$rNb^s9W2xRu3R0;K9~3n!-t^rA27+@STi4roit6z;P~=^hun79~}%C zxUIfqYNNSCsp}uu2lBblrHfvd+l4)7R1k)HxP@4<_AX1H<~}{zqBqz$TV7{ zuLTEyWND?y&_r<&`(3-Zb?7XgQi+R^gw2j-KHEWtyuj_KhiR_Hp*~!KlSHpe>dS9 z%dS4#;3Aq(KFWk%{|IWM&enZ$7!qH}X*7s~d#YF_(=r)ko;%4Y}tYG!$b z{_>g0#!dx4=cCna<#)#;!04Tr=fjzL3d6W{Fm?om32mv=noww`lZC5TVL=GVCJt~Bi!#l!o_zM4F%Vr!zkGpeP0*XdUiNl%0R}xF5(ui7 z8PlV4qvyn>5oat*)HpNW(Quc)!np4JsV-Lpo)NJqQLRP3Q&{O2o_7at=j3LUc=TF} z1uJ3!>M8*Jk0#<`4r<+2eo-JmbxSBYEQ4NHK!3JWkK%@`U`fn60&QyZs6+^p=P!MC z6X{J=!oF_YbOyYX&%8e)3#F|sLFUmt@BD)&23CVdp^1ETVmee5Ol8J~`|uWU{C z2=XSNaEexS5#(1`8vJb2B1OKQ=)|$<|qE97H$UE(2nJG93tufgbqe@*<@e0q!@P@NkNC19k6}ujBt|oUsM? zps`M8Ij|vGEvN}aY0e;I6AR^8R9&ACJR~(`a_!ziLdL7cy$^%*exJ}_7=Nk`+xX*> zw%!(_LC6?=S@*`J`#ZA*?r@{ONb6GuWFLZuMg!z0+hY>7Palbh)@RaZGLBtnwHx*z zB$u)E$VFr=OH4p|V{x|*DZM{vIIcC#D_22DH%`+igM&Tfu)7@>O|3Q6 zMAx(}nKVGO25{>=Wojfj9o0I%qSKE!M{$qBmC}HuY0ZHZyX)HZ7}=rx@JWf1t_f?~ zIuL=s(A9PN#8v)aHU)T&@RIlbgLWl38t$h~3zF=5)u>u{(`1#cv&Or54BLi8QzZzX$W-KNMmsxO_O0c@tN$9RX%FBB9}hg$<#doon7}Sx*+s4gQJUd_+n>Z zBW1LN?g^R2h{Lj29dsnoW8a53m_}{}{CQypkP495xZM%e*T14snPJ$W`#A~rWHZf~ zwi9x+A7%$Zq{!qS>yGq2&Q5OtbGPs` z4SElRKK!fru#949eXI&hlGJCJx5F8S3yC_*IK&#=szKgXgXNEAj zWs7IKB=+i|)E4a%rV|Fe7DUV8$FyQ0S^&jb&rn|zYjkV99@6t7mbsZX)J6T0)F(L& z5^`ZTs2z%N;-QAF->KmgvG6wYx+-2;h(J}hBG>%4 zpF8z!icIp4H@O~HG{wf>VR#MjdCH}&pfVVAX4IW3EvI=wzJ3OZjikVGODG{ZInum( zz2Ih9qyp%^W8zTaF#f*1;()mM-!6TC(&E1Q>Q{NhhO* z_#gNF{f#rRqG9N9Z6?O29uZ?5^jJE=xq?R`8%jAIn%&h=|F_$XgwoSbNp7;q?ycT- z&Xe!{zO`WP>J~E;1okx5FjplAPKw^jFubB+<{yD&?W>5QN}lwyD`FH7bJUkBhD^mm z(hS0IIMW`M1XgYv;m6-JY!DKK2%;9eDaB9tBS zEgEmUfAn!TT!&gK`$!B!Teg^Fz^$@2PRtuh#)A1SPNv1UxzbZ(hZTG@vq8M2CRa10 z8fXkYDX-!W_;uzD719Ipb}Lx1kF1;2Sa`8uN>>aF76jK*rh7D2a^Lu-M7^oa7CG6h zv+_xM3Nk}av2=Ta$=S@{Ty_&j`UN-o6JmsdFHK1;pKRP8LmSsw$(MsbtT}got<*PxLdVPXF1N=YUS zEk^cInRRFcFF(ZsUvm}z@AZ0Xs4|rPRNZJzMx_5zk2%4%yoGy@{!z!?PZhTV1a!M; zHRD(1!uPagg(;13o52SIicY8T*Bl*g>}uLol49UFbS??9%waj&iZd7OmsyMgcFQ)> zN#}AW{or0bU{ckiWzSTD9n1pp8f%{?mqnCBb&wLz8-9oBM()KE*eRN1Edc1M%sy^e znk(f%1&y4sTXfZG{i(qx_1%*!jHe@l25=_ksf4e@a1!+(s=9wqd;bLi;4?h0^u__uq&#zYKxl@Cga zaSygwX4)w@mwKT0W#qJl4+%aF@fjzA50{ZPJ$=Z%Ee?8+ls6@L`8R%?dFyAVmsV*c zc3-y@OOFuYRCk>=toB4w?=Fa(&+q3{fp+);01Deg^B4_?nw66P znuH(_eZs}Q%&NFv-Ud%H&NNJ0)tA;p2iaBopv0**qF%TBqrwEp<~U7p>A!u~4`vp@ z4A-k#vLjdG7NsTrl3jy6bChHB?Q@;!DN#c^<9nb$rCdOyt`l|dtcN=r%9fn2AIz@( zCkhA`;&iUuEcSs${Dz6A$=mJ*j6Hv4D4Cu$6!-Yi0k&>$Lv##;4pc534s#(Ac;uFP zFI#TX)N9_?fD*h$ zrqk2$uTpX5GtMNj{j2>CupgudM&E-=EbLKdMNh-57}jb%BYKzAtB_PNme$<=sOLa7 zS$)W!V7jQ9AC6>adDzAQ4n>*pPT(7ldCdk)>EN2VeMHe}oxU|aW#k@dA-0XiCp1xq zN!PSoQ6*ZZAXXs$7NV=}>0;!)7wC7NQkLmA&!%OMfcE2-$MKw@30KB9Eo2tqrj@=>r@^BwnpY z{oq~mm~iBLaKXk+n!=+0ijzLB)0vUrwM0cn4NLOLZQXJ0n9cTY9Dv(-JdV>awk$aB z$2j!x;92oX&2H!PI1Y5<_RI|{)HD$H1aEd8&YwmG;a`r_vKA?y-OQ$TbOWM8OPWIT zW2dHjx>#1yp)Sv%R{6m40jJF4z3F)>Wg%b0m*8`w%S;_EsjgPLtjwlW)Y-<#LOPYs zH-@f0JM^t5+R5F!06%lO0Y8!Kmh678DFM!LtIFm>h<`0_9Fb*sM^11HvyONvA@zw} ziB0M5Mvup!`ah6s$d zOiFS}Z(O2X6)^9WdZL4b6S}8!N|IoQDDcO)Zx&8Q;Xbvl%0v;PVkEmdNO}?1 zRO>Nk|95Gr*YML*vkH3bRG!O>cVWzcjDJD!dxa_m+l`iQHT97d%T~gDeB@kK7`TS~ z6|JYcjd zLad~32s57vkQiXQ>R4}D2ik;T5!%H9W=$d1`oH?$ zx&E8xkK|UsKU21xiR}IRaFm*tLq#7MV6TMb_#Blp%IMOSw@it)f@I~r%9}%>n-ZJl zm4<{r_DJZuikoG(yWG~gumP!S^E^N5QAA(MH9$(}N*GNIt06Q4x=IZQE|7xOh0ixV zzByQW!B1!f$>aJI$%^twqvNYf^h!k;<~OTtdt3#Qk>NJ#jcY}bBl|kT(@W8}4o`m7s4=>C zsU(0jvr@R`q>|&PfXRl=Q;frBAxB+wCh(Xc82j@(Afy<=#1|$m%d+Oz`wHH5tQm&Z zs+OT~P?4#Nhsi*Rnc{T>luLA~QmZ z>~tQB|9$5id7@ZaGxb_GG_l<8zNSTUl16WG%6?y?TSQ>&S+yN(-{em+2G5*D{zt1A z9UL-0P@N-z=x8FuKLjB?$m)~Ncj)STLcQO10wDve8-iK45DB~ORV+V*5Z(8jU z(i;%%hj(~VCF!A5{@&eKi1PpW2f&P*bWT%*lWmiXh+UOu_G)8baoN_Z3I~GMIaN7c zy7#0gTTzncE$}dqurbz}th$CrA3;NC0Pmi1w8LupyU(r=MhwCg`jxVJiw}l)%^-t-dj=3U@dP>4{^0pB2bAO$>>jZZ&Gj|FstTGaM})H^Ns3 zyP7jswN(UDC{bAS&Y?-+lrHMxkv_3b!F>0H{!;{Kpk}?qT<5&CPf6t=r2#u__q99L^^+p3C%|hN3yYt3`cu$^K@(&M_0Sh=(&Q!nDaT%E| zz4@&aG9p-F2@T+M{-b=b(PiXK%Y&;;gv+Dti<(i0#6+xsy6gMzlQkgg26kpsDIeMH zp{xsR`4XJGHgrAybGRqVG#n%H73{HmBU`rBeu2iia)rHOWRuUQbIZUPEqahUoAY~F zAFzwG!1b>!QgB1pEwCzdmO6Z8dQQnu9V(pESNF}`A_;C$v?ba8O{Yi@zS=&Tk{0hF zo=@lYsLiax{-eLXLv&Are&{xooK{T-or96_VY}a(Beyb!*eNV>0$Wu?JbX0&QTOgc ztpgP3S+B^PhuiGv&1}Y|hRg{y1*?%#^16fUACac*^S5q=89$F`;8e2X9QhYQ&@J)9 zoyVXNxRG(6Exkr0#--m8_h0=y#O7(DtB8A21w-Qs=$2At8bzpDiBkQR^xh29=q4-9 z4=0Wp`0|#GK~viHuwYiEgX+*Efay@*u|zxXSvXpq$@$=>!=7xN(1-OaSH(q>F8cUB z+Kw0^RAGmH;ptq!5L*nI$TsqnkU3b&3!yre5KN9bjd}mNX!J;xzDc;BpT0Z#n`>E0 z!E^|P4(6&pDbb>WehX)geh!eqZI$C14sN#q)|T||0uUHzvssXDxJ)5iReO)pl=45w zO6x|=?(Q(k_L_kiVd@b7;mY(VR!pj)paF9XP)2$k4NxM51$tlZ-wD4&_NXnFG{oLR zLV_dK6u;pG*3EnX)Q2v;r3{d0PVDs?ng2@7_Sgmd_M`&PQ8ivO!mBDV_HD+5Zq=C4 z+G?{+;}A+tKitw>fcsSBzM<13YEcyyL3CohMR-8h(JDI2h9Cenkf0c%tCqy1Hw&9H z3ElzY!@C1|pPUOega_L3?9rRQ^7akNV1+?%HK#PP@&x{&f{mi1MV<9;*Adi9pW9QB+hrjVZt|Q${T6|*7N3x2P zujsKMD(VumOlRfhk>Sr3%@x!VU2n^sK?oHq(xpt5jb|{bC?x*=#>x$TO6)SI)PvBc zIs2?fTg4dyl_PxqyTfzEQU$xr!K0C3qYhJ|{*%CpfgFeW>r+a<$SG2f5mBi)- z(L(BE2v`>TNP)Hu0LD?l%Kh+EA3)ubI1)nRo*YlJ_0WO*`FQ!>aw5D5UW%(Vo4Aoc zt3i;+h_t@9%!F#pu}Qe0Ci8;Q3^ua+dI*RgLDnk6D2V;knWA_)S|HF_prxHRxk%T6 ziKn{=AHW0(XRa3`GeJ{WochjNIto&5U~~NpgSjYvx?R8b$y#*vdZO^o32P4_VMd%d zbKLqu`KN9H&_VNPb%j_bquQh-yni;vZJSGl#gCiR zSWft8u-n;gL641uJNzCRX>__(&>tWj7{E2+lUuRe%FV#xwsJtapd7Z7%tC?YLK>pN zy5Q~8DcYd@;g>?;OeoI=Z~~+pH3gT0&k9ws z`;foZ4Houn-@0TmhO$Br+rt!tOz|3Pc7w`^WIsMx-1hBOp}orhiX%3G}xVm_EEO z!Jm`caocB&#gdH+tE5CHuEt~ET~T6Q(J$06++r}B7Sk$eWY0WSy~ZA08FRGx3gvPd zrO9K{ZtfWevF3YlXiStzyL10$Pk~mFS*i1E)r2VTilr9Pg{i(lkQ68qm*|>#Y#&xH z#Y(B~lnb8$njBStn%nrr`Z-SH*rGfZz1%Mti;RFH$*l zuoT5E*P5H7^`Oy$rZYl2F?DF=B+3!#EJ=}nV+#WoMlH%kv}8HXgvNStz!n%E>Y`Sd z0nu!;RvVdg^pd@yn-$i;sl1L zyV|oRbh0mLn-!|xu7(R{mjsH81(Og6qof%|z8hMs5%u?!Us>7B+`;~}avj;44?3OE zWgsdwoYS-|BE`L`hxMn~A-Q*OL~t~I>TKStv%qtMU?#QF^PIyVOkvuaoS)FRJ#Kml zu<=YbnHj6RT!|N6FK;;ltkpp2IjI(I!Ofy;b#=0b)iV4;2()|RtC$z7s4)=e)Y5a~ zGFLU(#_P|E5p;IH)yF<8um;X85p;jkfHZeU$B!*mdREfK2r0cvnET;@*z;$^hb7P7anHDi!@fc zsWp?whLjRfkx5ud8l7eQS+MY?@S8mmB%IQmVBhB)5cGmVMp;pmFW|r2Z!OtnTv^8Q zAQUlGINaYi53Il|EGFXu(VKI&bPBqjxA(ftrHTh9u@V}~xH8ramEfvALlRx@JvKVU zUw_Pv(d7g|<;DVYE?YIIeP(}Iq<=`!^vW_jK>cTm85C>*^(J%@j~+cHLPq8wpIDxG z+XjIYrh&ToN~5{{Mx+K5ALM`-A}&l}qp#D{%KjN5dolj_VjM{Pe~@Akpu^{C5+WJc zg=?CHBP|_)KfDxOLvRX06%QvAMq4KqzsC1OF#WXn1V^yT)$4HzK79Pf60j8&NL1A- z8jifybwnEv4V%n5Y16Htlky-BY_LH*s^Q+us7&u({R^}6+6uoFK-QE3YeA|@%Ew-2 zf`E{DT~$AAq@DcO8-W(BKfU0i6zBQ~5|yZ{MEm44;q9S9C?Rkg=#sK(ah+8~n?Imd z#gs4D_Eu1253qVj{_Q~zKB+HH0TleGNcr;aKYMk}vYzZ^b?_h;5u^sd`56E#rmDuY z&J(pBYqE#5{heh1>9ep(0MC=0-z6*81VNc)V1Po;O?PaK?U}w0sM1{u9C%6j9S~4_Rx>o&K0r93-0|RD4xzsqwycQ%px%OumcS z;Mkz8gJBY_B|t{|JrKJG!cD+5RGbY!H?F(CV4x+{@=gT+HSzARSW*ei2L;k8c??e) zdETVHZrhcT!XTKFvGd;sO{=L2l;z&02Y9#@k6xBrY~**b(fF5VF%(=)E|bu3@;!`8lz zh-7fwjn}9m1H6+#YO(g!@+QC=@ZUt3&Or9>ga&XD4}t$1Y0lcd-s zbYrjg0U7v4Sf$n{{k_3k;D1O89N2So2_!E&+d#u^qO=xtrKx5 z4p1N~^~tX6y5IdThEy7(?CqXabnpkhASNfy%7g_hH7NkPyfL|HCgWjw8lQ>4iW`4c z<=ga@2PZgsikogJsFJnA4?{G1>Fv4m@ z(ZSQO0u0^SSd2pMq|287*$6iQ;kyDB%`wRrMyMbbM|NIbDdtovu#?KN- zu##SFu}d*rUrV_3`X?=KRT?XJcEF>AB+xXp0bo;PQ=3W9h75O}8Lg^V@6^_ewZzeQ z@PoBHm1iKBO^F$2}StL)9^&VA9-KO+e{@ z?WE^FAGYZ6OnV&Tu+M~!QETg(3R}S(Y)-w_1!E#%D*{b%X|{~ymbZW+`=`2fOc3wX z$FV6h5_G~-)OWn(P*`zQ^Ul_GSezn20o9^eqWt{@q)n0`t&hfY@?zzM=VSz=A{%O` z*j{iyso*>*q>7o5MF%WgX!1ZClnF=k^QimF9N3TEDZ$X{sHy9f^9)SFW>;S8{~MvE z{_+^fY)9A5ALj~Z4k@rsV`^v{kzeHZ1*eon>-(69A!vsX;E@MlD##n83EK}lW6MmU z=&O@bJDS-QAHSMQS)#HtSiNi!pw7SxOPC;;Gs#bELVP6=4V_p*oe0F#as$W>U&nUj z-;D*hlk6F_h6?Mo+?YR0_~`#L;*@4QCT?auE=b2y4_F(%*Le|R>>NjNA>#`{b7{Sm z=1-@#h&Qwwhu+k}RC-M4s{VE1taMaL)$l#veEvYdp(w88V{tz)`XK7nsVdA{yo}#H zMIewQJZmsAfp4W|CLmUtHy^3#N(7GA(CqVnZQtQ&pH3PwPJHltW_~6zFCr5rsI%a5 zZKwoAHmS73s#$@B@7b1?`gc!zj2|9eht|qX(F_~-@k=fWIyTC9pJ&n%iHaV$Z6vbI z$G6;-ymiaTyai#r!b)mT&4~U2HM6U24d#~8R%(~<-na&uq;B)~2^?MNZjjyl|=AkGICy#d&n> zrPDi&tjw3feD+Ku*WvD$7X>aipF!J#n7sE9;Vh$RO-$0<>H+WPt%0J9816xLx5{7N z#X`4oHivj<u4hgyZ}S)y zor_sOd!t>D9R5-lrXcAE6WxPxm{O{emuYI*v&m$l)xD)j6OWf9H95w%23BluDo!S@ zZF>V~Y~Q#7Sy#GEacoW@IX?In@s#`t3K_^lXjO@Nv^0g1jx{Bh^z|19|3?IDIpiX& zukng%PR>Y2arkpnmqKwy3N68N>;UbC=EfRZOTMWgPf`uvxPqBO2gg&IoA4FS z-$hc*yEZX81IdX$$^P~de|vkZP%)45*&Wr2OkGzDts6>oo3wxq2>K^;>}j~8ls@=0 zv5%vF1&Ur?(YLjwbg50E$P8+5SJD1u#?=C~QuoL4v%Z}Jb}}$pZRi*6lY8b(5$?A3 zc1lyUh!l&Ma$788k)~$kYJg^}eu&n?2|-f8Nu@FkYo|@Ct`TkVJW7;KFk5Olgs*os z1xV?u^i38zV|uxb95EnL$YyXwsprSY9g!HNX-$^2&^X1JPJq~rEq}N=1v{J%HjdjS zmz-Ot;hQE>i_onRj?i%$EL_t3zLsB6=w_*F9oUGEMOPIQ4+CU;eM6`kutA#ffNrID z!7w-6vEU-!^tbEaHqsdzQOS%3XNE#@*j@+;*6kLZS9RqSfMK;(4U*Kw>*Bm4>A-Ww zIWmL|U9k2Ds5!z~9lPrVfYl09mg)be!OZHz^{$AjLKo+w!W78o%b*aAF_2xGQ`s=wtNUQbXYJEgH6?s2~JM>j%UvfwMA(YgN z8vfGw7o|?SwTj9PjmCki|AvVi@<*`VF}9+d+^vk+A!%G`E#p>T5p@&BH_nmBqp_hM zBB@jySR%tsy!u@XI+C=uk*RU&7$t%9R5ICBOYHKuZ~qS-rDr(IJrk-^if45bCJ69Q zqF>bCJCQTJlnTYO7Zcy%62T6&&35D~|1bR(qIS{3)I>Rzoaz#TA_&9M=62s;!c!jo z*LPPPI}oO+n@D$n7$au+L;2MfmNz8v9bqa`dBm@X1t^ef2T%m)QwzLHuVJMlznoLw zv|qq5q7Qy;H&Fu5DJHOe@mK+}>suW}8V8)9d6tu_a6%fXpIX=(ZB2fq`?c{%Gs~3t zeQ1b#n!|Znf8dCgeUgQfaYMWmp?Fs3+T%}0qZ*@m*Aw2Y5Ai(v3!o`geMvYvkFSNL z&M4J_t4CoSmvgR^C$P5FNu=?MyCRBs>3&2c!nrlFnmfEUvDaRy^fW(uMGh(Y9j~OqU30cf0bU1~)`n^~H&W|I0< zVTJ9qA+}g9c|8$h0DLRev#Hlb8xrIp?o{g>F5$blKM^_!cZCVa|GfH_3}D(B+LPXV zy%3WOfN2EyhJ8dm)SIp6e6d9V)5Xn#2`g1uMQ{|Y6~FWm z-*R%RhFE}UO}Mf3UA5Ligs@wgT-<{$gBK!k0cTxgk19&P8 z{dWTZ=wu88`04R$sJkg134q|miP4F#I-#pCexH;j^R)y?jzmPp@uC1~9G*Li<+IEb z84QVI0Ah~#PP=|OKlq0a<+XaEC53p|)?Ct+N%lHvX=J%&rtj9&exmlM8K7{zsQoE!>M2B5Z>O`5 zDR6oGV98o~S^^K1nGXSI(1#_B&C{1b$=w|Wa6??t+p*HkU!g-AG04r0!2A!PLq{^9 zfKZ=Ov5IO^$by6=;;DOuLku1oUk`j_;$#wQPNCR7$owAX+sTlNJiJ~@Y^=(QLaaBn z#zRqoz|p;jlz3voGfo{%JzYz;C=OgM_~nUBDBu9&C8e6ty>13<8z)4J6h>P^Kkas< zqrrBgWs2WIZl#BmT4ed2mt(EgEvA6QA|~M_2a{ciEld|}h^_WhHYg@*1yeGf>-?-@ z3J`6r0z>CKG*45pi48_ScE5ien| z=BtJ9(e*@#tU%h;fQjlD;&$vyYyxW|g`_`*2n7NZ-FA)HHq0vPTph=SR)+>D2xaw6 z25S==5{JAcQrycFk&jkl6$r=WY*HnKU>i8qQdE6jP63}WoQNjp=pua{6fpvDed{k$ z_{uZONtc>Ot&B6$$O-2Mu6k_bREpa$7}9a*Sx}Pg<_+@#Da95U(>EN(6XF?46Q)e9 zt9fSNtA2(Ro!Amiu*CSmX+|t7ne{l>rL~hJ7wuvAuW9?FY1R?f36_Ibo6rI|m2b{- zj>EeAFVO52h*;@3G12|y}u{fu5O)2hH5fCGl| z069MMQ(4?FuaJ~2>C^=JWv|4+XT(4OdFJ_wQ=OL&5!0W-pOcAiGf@F$g4=sm%-qnp zdf^5=`&V8bBh3{YbD__LST7l>hDb1s>}94R2dGZ8=?eW6!?$V@@Af^n?8g!)e$uob zYYF-S!pKq3)hd;P=g)a~sF#p2H-NEG#uUHy3a}vFtT!F=X56*M)nfcayy(l)$}gA1 z|IfF@>P*$#l5f10G685WaS#vPyRwE5Ig36-yu$UvagXeUh&EHo<3&Kdf~qSM(HvUk5yMb-c2Z|KeT#nBZV=3n*U@!6RJsyas~>`rvE(Wz3kzn>pT@)R z@9kmhrzU8+cutT|(H~e-UfZGdHBnn70MA1p(9)!^^UBles2?+<~&&qR4feJ%-uM}^St>F}wj0;6i^Pd^C7$4uup z)-darA3a_yz0&FK6)J?>W4m&!HaQ~qjH*6yI0M7jB|%8Csb2&2EWXO}izygEK3fVg zol!&$#7aYy$QJTyC1S3etM4*l)FEte4C`(_!X|4ylj%AfRzO=sUx(@Xqq#Mb$)0an z4^KBws<-%XOwU2y?|=~^uS#iydA>_uLJ2Y7nnj;ez!|-W=ggU8aYQ0(f847{)3q?M z6&u;kcqsL}U+s^HR>(Ln{i`&=*FzmivQ2_Qrn2QYi$YqijDWmR8Vvy$@iEq5yd{d( zn7zc^6tI~I?FJDoo!1duM%&I3AOV1y;?v9UYTiDUCy*{7jfj-ht685J0NDk&!DH}n zyT)5n5jeT?dx)j@F#KzdYW}V?#9)&G(kb2=Nh zA4FUo-{pz|K>T6OGz+@h?)D{I?m{$&Ns^&2b}zF5ms%i9;2>uV7^CfRP*7%qG#{Ht z1>SzJ z+)??Uto-qm12!MIN;?cWL-jMd3J?uJ+vfZlr5BjseZrU?E&101(g(u6W0zh6l8IJa zuG7&fm6A+jJtWQ?bor(%*?PW#8W^nx*&ij4Su`d|ebmiHrg@rXvys6(&|4 z7#0a2gd}|r=^M`$k#$%iC7l8sW+>VqdLr?rwpBfXQrN9zqNa&-$9shU(eh!6U7tO~ zDEkgKB3zG28QGZR&wqbdMlvk=_W_}W}iu{|>ROahevn=;Vvi8?X*sof`w|}-X ztYT1-m(sR#rHyZt88qUF9A`V&B38&{fM$~0wXrCv3Ajk_2K5{Z=H=&5$mnX~ng5U_ zd5BQ29&G)Pn`$+?%M53U-?{)hCp~6Bw&iJrmq$0trn<6*6QI}d)XnzjP-!AebIBNK zZmfG@0{(QMyR1gYV6;5I>Cs2=tZ~HuS@utgW*kh2S2%9+aE<;`-T9DGUBW1KoeYxa zySTDcq~R^O2~Npww9vjUd(;v~*4hg@+yZ}=`tiKEp z-H>4LS)|M8yU`q3L1LPu3zrysWp^4En33xd=&wJOSL6fK;q-ymUST-dzq|dUS|*`e zIxMAFL26f&ksi8y@*j=fZ8}8GpQpYck5;YnMXSCdw*&70OuvQdK30$1+mIn2dIw=f zm`>1j-7UfbXm>jIxXS8ZyW?`!Dj24fwQI#QIP+K=b-JRt= z&oJdB-6c@H!ogMdx!d{gSVswp@vHr8D;+|=Rl4Vf6arPVi5NCZ@em!pL4)~hwgAFGJ z6p=2v%J}KfsSM3pPl-|wk4){Au85K$3H?5zqte!&0Kv5%K)JPXVdiNzN3-{yBQY7m z%pjf-g7z8se&M%xZe@KZc<1jA)-Qst(9cbRg`Cb8*2hX-4_}~UsR)wq%rH7}0+20j zalze+Tf2WVOBc2u)6fj26e?N8jo+TbR3`cIM*^`dJ|LBI8fKZ<9iogTe)3H98|IAg z4@)PslKCCz_o^dXW8X5XD*-%Fi>>vjj^E3X7)LIz(Lu8|wh6Zls1)WJ-$Y!B8|iUL zTtQPXkwUt!hDn-%YX&@4H=r)fB*@A~mubElllbHe7ZIeya3twhHAapY$;I`B3%7?; zVhQwUr`g>pazWZOz9h$KMnD55rT2CwhdFX#XfFeBITjMr5aPps8rt8JSO8K$C%X0_ zsk@ZZRJ7V*jBncMPq90v-KHPe?%t}SdpX_D?f)L@<;?`->-v)u+%Go|@t_*j=*T#4 znP|dGO8{JUcWie{=Rs|sG+&HsaQ-TSy=ZfpAPn8P$#^aB1S#G+T8Z(!pgx5a9oLeg zJlDZBTQ(^r52T?kBnq_if|s#)l}9kqJHAHU3hKoBJ=v0)yjSr!I3Z(@@Xe~yzD3V> zhBA%o#h+P2nHD*ghC>GOXcw!KQwlP%i8em26lHGlzVJX!x|L`HzW+5z=D0{q0abIw7N7XHr8yHD;^z*!`Q}pt&?ctj? zU~Y-&g-hzR9B~z&p<|JPL>f)*%b%2&%}Q9)ws#*QDp}Iff0Y4xszF^L&EQc&K~ys; zgA`C}^#a*yuP(EWI5(BqNDbQw@ZiVD!uqC98a^*aY->BIXnI}3OV#!tNyE9y!|AUy z4I`@zK13<(R1goE0;`2So0klFWiF}gbXE8fumbhESjSUM$SqW;FTBd!3 zUPc(`e}RZS(f_Zx4d3jxZ0h{+BQ1X~JW{%POKMj5JYaj_BsEv9E5XVkH$(M~Gi>E? z`3!nUAy7G{1mqPf?NY3grR~h6WJ_NM8&iqr-t%9tQicq zj>vO5R=q0$G(|`0eB>;pM^%cTrlk)rQ&{%U9>J zR&L%}0OZnE(|Z>TCek8~X6Vz5+w5rA>6Q|YsECC7I6`6w&IK=e`|kwETJRV|<0Ikc zOvi{md%E4=07EwS-K@VR>f6V1vDFg&5k9M%ZGV)fU&Zbf!LFs}9Xe>qoW5W|HDXkj zrD99)N$!ykr-0bHJv?mY`vV&lO&eVF}S&e?pfb%d$ zB5+!cK~OHrFjI||A6$@YieF_r7*O9eeM*H>pLM>X^7tnalbEh<0D2AvGjd@*`Bgvy4d)*=KXLQ~)~aP;0uyPAdoH{c5Vi1kf~nBh7bG z#K1e0?flXi5NALxJEjQ1{l-gsHZ%MVs2xG zlu~1+DJ7u(8#2k=4A&k^uEbKg=bLNJ5|Z~9{%JiViGR}CgMK5<)GP|114L4wB$zF5co#2_j?Htq6z!q)iJHa!V5vkheA`b^&s@ zi|a_-=p2I0CdhlR%teBZlB~77V5CrJ$e21^=)WVA6D3y}CB?z< zCmRFF=D^n9(p1oS8#orY_*M#pq76qy|H=I)lR=S-TlG`I=&TU47Tf^j5cx5?yLghm zH$Drxmc@kCMVVXY=_#}#i7Az3a3JzrK0VQ}P_F%IeJ$t&HVsheIt3_@TWVQ*ZVQbp ze9a-gp*>GE)QHTVAj);s@?StTKfc+23JRdgcx)TV*16B%_o4s`h0@ea*J!91g>yr~ zk=UPS1!+wUuqNp0ewE$E^v_$A*%OtC>vtY7MJ#=akK3CzDhQ;xTHrg=JV%~-eS+`S zup$%?qk5?9GP>N^`TQgH_?%RtS6Vi%9!@kHFBE4e5p+*y#AY5JntQ+RAZh#3BXxYB zUL(_ag|=W7oarh!YRq33W316zt9k-(NQA9u>VWFiWF9?%kN;YS#+)k!+b_a1vi9=@ zl{(F{?gu%ogG_V})6JGKsV<%HsSE&H*R;Rj(1AEvJe-0a=9lIdqn)7T3;0tDZ$vAm zkr-EE#?M2E4`wY+U{jD^v-%dMG-L%vnkTFbE7&`f5^MXx!TfFc=iE?GFQhP8(O+N{u&x=;QmS*hjoIDItuSa^>ae$`r}K7uOD4b(AjZ3s>5oB^R1R@ z0XV~cB6_E488#q6@l_LQ@cOaG>?u%-Pz>U=VAZChE<4u=$fqN>(Q$nQrw@jv!gYk} zasqo_vTy~mw4+R5406HZ6}n34;rWix7I8D)zjk%LT(5}9_>AE~X3t?fcX_(M=%tzu z1Ni=+&QjDUO)+JFUysE1V%;}pMelo&i}4fGBD2vm6c3>+So6R1tT+O(;|Q$2GaxxC zXlEh0>9EDfV4G}m(|}U~ne%oC{1IWSJ&uU5gz_pXvlZ7=(F9_*si? z_{ZVWbhO?mQ}U0-5FwT9X3BLg=O*^p0DylT0yPlS3yLv*Q$h|&T|dUqlZ06nqjIX8 z$%(PXd%&byT5l_^dDO12^a0%QWSGqevLIJD_SGZEMi1DXX!Qlii4wKR1JD9pXp5Wb zwl){2xAUf}}B~ zfbki!lfZAjUl^0!2N!=F>S!5g=5b^jDS)|Ax^=jj;g^)DV}53OIsg|Tw=+7{V>$;x zR5xNi2#GvzM+);tJJL9f;0cH}NP)f{ZchpJ&bp{E%jm-2(XT16DO=t%`G%xCmw|!m zL2s@3HBB{B_!Eahi}e_qBv*syVjAGQt&JP&?^3msZyf5jJJNrnL@lHV6_y?x=MTNy zuo)tjsxZo@o2fRo!QMr%VHk8)yVenJmDKRk0@>~}1+#K=t9xW3$hE`HCLiPCZ+Lma zeKX-$$kdnDOm;QyuWlk8Z>|5t2l_PL%6RL=BRMhftBG{&VlN`93}yniTkar?51oQ%4cobb^;%JRa&OU^6gL)AFDQQj**~s)%i<3bIoiZ)Qgy(_ zL>iNS&Wfzt{pWI|t_&y)O36*h?_$JsWM_p z5=8YF31DcdB4)Durhx@nr)}LEkU;Tqtw62C)B>|(XoAAd74pZ2{$5qNadmgwEs;yG zegfNU7jYO1M)uawt_?p9b6gNvoNQdtHvH6i07 z!0_^aF{%&W3yNArrQY6J}bR#U(y10KdQ0 zYgG+*uL{8B1ov3#q8H-x{;%|p7>;}vlm|OAPW1@Z0a;eYkdT*+hIwE5miu?q0)jyE zUxWBB1(f@hdbX^HMcf(N0ytO*LEilOOGF$%v%OznB4=K~ISL`ZO5L1pWHp@pbWvMA~>)RSZj8|G;K%~q6=IOR3 zV+X{YH&zbk4pPm&!aFr(GV2=LcA|H5HB=^(;Z!9|V88EReq}v8i9nflCR%A=c7Z!L zg?#eP?@rsMqoY|>qs{;USsQ-NqB+%}W7|z3v<$o??=WQ-f6tg)A6+_pjlzF@-k-eJ zmOu(aitk-Efhqhp=Vr2z4RnPfi3NcjQJ|8cN!lVs(=R?TBy2Q7ek9vPbt^mfQmO8m zF&T12z%IjgwwEKi7)VZWasm+ZFRv(PR9AkDN}gnMG7~HmmCY?pgt7XgP9E3yqT^NY;~C=AoR4#+tANkgFcwG1znG_;NTF zG~GI5=Zr)MOV`4d#VxjLVSd^_f{P_yxp)VM^iqovHq-U@w+?uu0a?QH3)!e2QoW8d2HU0&J6n16rie3IkE& zT5K?Nt%>tlG((n7ly(U23wAp4!o36Mr@5_VORU0=&Up#XW6}FzJITQ|qI; z5p_Zu%rbTQ1Klv-I*PA08hmIRUb;mksWXh1q0V^&BQ;uSmvhQMbiN^diyqMjTvWP@ z+3Y7x8@1zh-H^!`?af~H$tV`rRftAcbBI;reV-R6)Glh2lrv4UG*P61>n_27N=?|G zugjF@<*g>7dM0*p0BBsafSXwS{GThW@8S)y#U-Ff0*mnEl5NiAOneP&j`v)YsFK~5Ng zNwPu^$Y4Bb{AqxqsIv4u1>J|$W+*iVXo~j_8VW!rXo0-pj#;rYH|V$eo*mVV&BYB-{mi|;9OJB%&sevO`#-wlz1)hQ`96TV&$55n zY*%W@oChcXf?aXho(3&cOt1IryAGBYp{xB-geW&;xALH2qNrr+V#;v4zm8R;7LqdV ze!Sb^Y+rj~-+RNoG8P@`=dBm-*@O2tN{OFX^U#&B77L-Mf^i^Ki?eN?t!Kazo_5R0 zX{Mpreh5NA>`5DQ%Rt|?xFpl3u|s_aVGW)O*G9cX;@sBFLee4H{m~~;qL>&w%f1@q z5b2wZdLwj!K3D-ok<@`A)22RyPSw&)f|a_0yKE+1w)0gggFRAMywXHJ08_|P8!riB zyJiypd9l`i^>6<$ouP6{x9@$^;A!ZmEa->ey9nsjydW4Vg*J=LZ((7FU3PFjdF?a@ zW}rv&9%W>5hPbzG*gS zujj)do2wYUXu8(oHxIM)55PEBVsnM`7wcwC?ar)h%z=^Z;7>q&p$n86A>Q-rct-qj ztNE_=x?>l->(7@d7Fo0#PUoZ;QG#fmUmlwl(lBx`|2?Q2`M|f}1KTHRzegAa5h{`Y z;;v^$x*WLmLZxcJ2kd_yCsP@o_tFEK1tfW;?H90J{zaxMYI<2>5!Kli2FqIDSZC~^ zfXE1~d<+(Tb0$t@3JM1!-qqg9NC0+^8}u)wM-mJGc0X{g3?s{?lg&Kl1h1H=+>&p z1z{E?Ap1TU%*|!~@nhBrB&Cp*WqyWq>s+%DByRtqQe_QxHR@eYG@Z=#tta`yRp9<` z1BSQor|kr7sNT-9xb+An`PW>nuTO8D`+54<- zn?e5?DGq{6YLZHU4(papHyjjMp&ZRN=`FjyPSSgy)(pdv>1W5M^&-n>Kzvh(?;fKd zEwwd-jOJ3ifa$v%I2C9Dg1B>m z=w>Sk?XBi^QyfS9%C0J(&$??$T8>R;y%=9$`r`p$Pb|4Z^Q67tL&s9QC1$tcdffnX z7I2{R`#ZcIvW2g442LN$$H7RM8OMtwcX+xA4l2PMvYq|mJ(SSGBL_Z|IXWG*Q2owi zoDRdfs#ieXU7vE$V=S``KEb8mdQM^kmlMr0yBD!*a!fZj1s#so;+S5bH|zcCoNMC8 z8`V{V?Nk8~5*c`-cJ(LT;a~dWD$|m>@3_MmX~COUjLUHXj$w?UDLNN1DulnU4Nls| zb9@GkEN0Iyg?syc8AXwsgp4rNl9ptk{ancQ5o7O>TadzIk3S^g*6d#WiWmz(iWs|+ zY&$-(X+j1}8mCWR468dhAoe?(<1ve@{N@kxQwX0GY3Bb4Ysc3bni;C{d7`(Of&`3aNWV`bi zoix`-1~@<5!~t^CnH)8JiaR*KSC^N8InsAJs=0ffZs=bGP05T(2QFuZlc5syCK6v? z4tSCgPE(=_!u2aQc86NkSuq`vzD9?hE6OjkLF1u;<0kv-l_Ln4h?ncgV(^u?dnu5< zxP!upE*CR})#oMcRxuPcddG**q{mk|ln=K4WifS2u@r>cE5slRTG0n6VJ=Pdb#aLl zZ=P|LfXjf@xR?GnHrC^|Y58tXSdj`yi1{Y)Iw!mEue)od{w~IctK->tbtL`^`*vx% z>7Jy{32d0Ct+8o$NW#>||N1=oeV~{DTP|2ZbVE!go{$gHPpx`;yJjXLdYDu~zA_(f zHptk!no{_WMiGv6_6rX;CV7yqaE1ExOIDtwedAQ17wt#P$UfGfh^srgA}gnUuf#ir zZxhq0@H6Tyb7H#)Jwr(9ZlPP4j8vl4-TlDxo!MwE)Gg zXWSc8rl`>=+3;I;xEq*t1|P*{mwITI0!RpLNmrE$A4ha-j@`{F^V=RtR9;s+k&~DO zfB(Amq6_(9X>}h>1&RA2)IjfpczYI*;Bjfz7lQO)_!1*G8gO zqK&Z)HSy7Nj~2&74#BYzZ1nPDcT=$b!4*CvW08&a4WokIFM<2-sUTaJeaJY8|;YgV3$?8z5QBA$RnvXb*1oNB|6J zGOa+=z8=w{p{|y4cCKq8r!Dr8e>NruK1^U#sDPe{{UKPl=Ca&%Ok;E&i{x!f46yGy zFr`f?RZRP=pC@kItx|PG^4`QtP%5`_(=mmloe6Rwy$+$b-+9@qNS7W@MyCk1o4wi3 z!qmrRwQh;E^_K-HgTq@UFxwq*WDY2e>c#yVGnf`(Bnm2`^rnE|&6`|v0Y#4-Y^P{K zOdgA&F09i!ol`bTR@8H7!v-DctmKXxqYNf_G7Np;w6*0$g zOUExnk;_n*W{WxOKp9|xVO2rtThaEmskmwTun%}2+!%X7_aelaY6I1^GjW~&BJf|5%0+G}do+!F{DLVBG<&SV zf{ZJ{1?K_Kw7J@@@I32W6zPM^qkI7HlP)+74=vled^19(t9Ut$!@n-!{iJ#3>P3Hb zyUoksa{3*dn)kJ?m{tO9_9X?KUjlBA{S_c1&8XhQ=PbV*7!`^2gnIA}yLaHa0W{_O zq#Xn&&)0@eDy9-nIai%|oFuEiB44OvR}b|BoV{dGNCsl(rH$VfPREJo zdHfkPiM{zTh360?#wNUZsb!r$l2tWaDil!SKv(x8){YGSnSF#a)&duIgHmdPqA{T+1DQ3oDkR32~>MBn4r zOdEHMcZl5@D71J`PvCCNhQFNBQPh78e&;~Byrwh;+_VN8|TMAEVG zm4O^Km+iae$x@u>_Y7FvI3*FMa1i;xK$pqh6F!Ja#653@${{C2*>~9ju2NSm*D|V6 zoST=>j)l}~fu8F%0BC0)(2SR;UJ9eut9Htj7Rx{0V;#$+^5S%A%+%4_l)o?`22HKb zd1Wlz8@;g@4h)Upw|pk=9Wb#ulFL&ItDW-8qwofA)ml?4Fidh$T^=5T8(pNLp`*&r z2GAirq-Ur5@LFk+=I?nO!I}+6usu!n-1*H#Toet)q?YvfxUDw8s9158iNxS|m}MAh z?uBWapfFP1~Qnp>(~LCJG_D}Km+Va8+R=x_TyjP<}8_27^MgSUo!^U3{RV@^5OuGiM%Ds@kvU;M&4w57@&U@u>2V~KoZ|NbcWok$J?F1C zNe0@Nh`hciC6QC!9^Uu?7GS^Vo_%{04xjB>&|A3V;?L4P>(Qv{os|_F?EY%ZP^1SpAH;tesP&?r zNYva&??|U6Dsman{cIXQyeYKblTxM~>Mjcn?#}}EtS0Ub54w2ZGcN!e&owW`eiCuX zX)_Hvn2?L$_Y`qM+y_C&$co!%6KsP(_InicxI3*800mtmsBEcK8w$>VwW~2W`x`I` zH~+yf)`?U}qESxjiCV+~3?g1I6Uol%<}ur_Ki{P3>~Z?t{)JSCsGHC#@jO)#`L--> z1ssVOGs=HAM@Z^yz;@Oe#Ft; z@o~*#j(VVFdGdk=OxY8uwTW$NP~yEtpkyuZW4z&d!fsFj+x;`Zt<+B8>n{`QX!9oa zYEj>9)^0vi!%{{^65nzdqhZDyv(5zj>f|#l+;`hf1)S!r(4T z$8*oj7nDX>@EtFm)f1Se;_XHc8nx!|iSYRvrW+o}|>LM1jx2#=5^V z&Olqq_2u&N6b0>iAfg=TpzW_h`|{h`SrA^C_O60bXxyYv=-L%vO>nm3-SwQ37J5Ub34roVHx2!BY1A=}Ei}njZgbqKYfX#F~~O|KJ(qPcKK^H60#x!~l(I%!4E>^HDJ z;LEF0Wd8+MpHr7u8G|v96rSS}$#=ovW)qEmtWy&q&a16wxN+m0!-)L1X_u)K{Rj68 z*24C)Uyq*X&uuO=E zcTKJk&s#>}&Q5njyWXf_msd*1d0;S~Yc9f3gO*}IMw=8dz+%6ps`xmv7>>2F_dPS7 zsb2EAn9;omp%_TE6wL!N>)~R)Qms%WLZMn-2f;FE*A#g6pVOb`h!&$29KX$~7HD6Y z8gCe79_p6Va?3W8(2D~B8>tQjw3EWxM0jMvZSNx67+P|IY~|lJxjX3L{pRDjy1mwkS9VdyH^ItwsZ4?6Ie65!?Onsj< z8=H0I(V#fYM2JZD0=%a;OvNH|aoS{$7xFV^v>d@Adj0R2QMQ(qIIHUiAf`_V(d2 zn*io4Sb~p(YYI0ndV&-$C53kKhf(wC{Q$w#nf84yaOTFefRH`j5B|3sHTOZZx|Txg-R zKd|-F$dJ;yL`5oeSkX3CFAo>wYlujyo*!>pdoz*AFSVa1AJiDZaXaK5eX~FWmRNv% z4EGGK$Hf*Xhc)Tio%QsOpgiU>i@Q}sfRL2T?ps=F@azoarht5Ho%Qs$XH?zumAcAF zCz%a97pO8i#334%F+x_JirbV)8AGm1^i9)}6vU=cPa+08GdgH$-!S!vX;XKr5luS5 zbu;M}#fIA1D(Ivnp47ssl7*>#RjyW9<-a1iWEnrg4y*Ss3nbGs5v3gK``kFNFZ#_) z6%X?!=Tra8x4>q;!BxLnhHlq-ZQ>mJ`?xj0%uCas*{i}!X>ZAoHJsZ}q-^JPpCW?^ z=Tdvt+7@32qQ4>#in+M^#vg3WQB7*tZvwpb*E2p1(hB1$zRR=fYr2?5UF7aYt?PnQ z7MSgOJWV2U+cO^_(*pQ2w*mkm=H+Cc2yuYo7#pwL>Jg5)QphG`_eHi7F(&MEj`|i! zcNaLdzp^c6-zAiE!;NyiA_aD|ke}E)i+!%Vi`G8Ab`B@t1CFe+-cs7k8tdNs z%>I#kw5ilIX77%tZ|l<-=jiDYJsDR5vLrYIHu!{imZngagYJ|W+A8%Pn-M_&?x-nz z@mg!W)2)!qlcv(K+UU^h5TC8dHO2>ODDb?|_slc*pETcnFVg`~2C0OzQ8c|C zbXH7-%0={juV{q2xc5SG%&2v&8RJntpNk7_FR5(#11v?c-;A6iHDJU*D`_9P%%5Rb z@G6?t+V&pD^G~x=HAWrDja^#B2Eq^@TFn|OA$fZxU&Riz82NDHgtAItIQCmJ-J|}B z_ztkWFpT&{Tg4Y`@;#PoWy%dY*N7euJyj4Wi z1lS=+LJfFjgzB7Zer7K4C}%E;BJ_eY>xJ$ks+0@h@r^ywkX3wGd%3M@mb+O|V#Gx> zmHzcu^Ir*dpDpt(CIX*1I}q)64d6m0A&aVqEAJMSqe*Y<5DY^`Ig5q0c*o8b3g+b^c#x=mY^v}@@b-LAr|tN z>rJj;J6{}5!$}HkQy>vsxoo88u(z(>{F0eN&1*$&RE_ZUBOSuppJSBNmpn-hkKl;e zl;jm-WLD11b{nG%g_vqU@i6b6`@xeAEc`=&6ic!qC~RB!kY`(O*&DL0JIYY@ccx*U zXlvzT%O$v!7cs?M6QM{}w)LR3(Gzw4lvIXIpEwCBh2q)*$SFA$oV#h~ITOBghgoa& zF~QlPP>EVnU8H4Yqc=m-)l1 zGDQZ=kON)i5FgogEsUs)T=V;N0pe7dTaC;JP~GK&Q)7bK<~$UW$FglYBz9k0@WzgR zY1byIG_pLOg`>ZYa@Tk-;%hkzX|u|dEqHTQ4!JPMd>+c#a0yQ?g``O7R+cOKa7OL_ zNnSxilV^mKa25?hI;Z;5`g{gJy%?PvX8fmh-a0dyN-pHHb9JzMDxiUN1$#&O5qGno z@YHu-Y3Pp;T)mTk(E_x~e}&#k=GN%gasK0T4B}uY5{2m9#14Bpw5-aJV zy$rNhe=~iN45i3B=h2;0vBu%)T#j~)i{RIoe}&iGK3#L2<0z}JY4+u*$QEZ5z;Y&L zuq+FU5W!$~|(9LB>$6a`j*( z{=D)*JaWWWH~kW&;n`2c8rX2JIxRm`@XkJtmxnor*YaC2jQOQ z-}R-jhxsY>TlY&zAB^HHXVQ8XvAbaI5>x-1ahdsKX)3~x+5-=S1gotF3b=b0*|qnK zP%GcnAD)7}6Pr9t;c(6TWYDlQFokrt0|9*^XdVH(g!ETitl=;}%PABaZvVO8!`5i}EFqwJz%!nBSx~l5d`JV*G|gwq^?-#bXus8B zB@#$VhYFO@H-=8*G-isK-rkYEG1JLW`eGW4)vD2C?4*E=xnx;*^pp&!zK%g0*JEPI zBp~dZ9X^+@dqQ?FOFtP=SXWf+J($kXMYwdOtVVZ9ha*e=W03&i5SJObz#0{_$g5-H zedO2|jLGe6_lc?e75#hYbA;}0ru7+gb=f|}VgyI6$S`2-Kag=yGNW1&Rj|czBRBVM zqhXF#DCnHcA=6LOB75mXkiE-Fsk0)bf|*t8n;fEP6j5U|DbsvI`-Ev%TPQ^~5V0}I z0+Fr5cp+2*Aucu_=%z@c3B0uy?C}MB8-I%b=i+8iI9tWIIcu0Ln*a12Gn{qk(v`SN ziBj;xx;{SMV}pwP-%26Cs{>`JN|iv=8LbLLuuq=@QHNijX0fV4_2!v6Y~#1jWfdSC zu!F*YA?9QW4T95{hythIwJWp0XqZ?n>-vJ6pu}qD!WqnC>2;H5Ip>h;#(DJvf+T(h zm6_fUXW31~*QqNk#|bzABnkD{p*ETw(OIA7c+8UMX~}^AD~RwT0PN1swPx)#UYnOF5Nj=mGJ(}nh z#T66u{Mi7rLUXhuM(W$z=bh1>|7S*a9HJ8!ck$g;#Xh=UDCCKx!uyMR?Fgd#&0^z;cec*LG*MJlY~W;9+01-#?=SqGt5r3L9B%J7 z?Y9@}qRX2)I(3#S@aT06it`^5-9f%(VZmL=s?$6qJ0fvqSoc7M(wz4xr;y*Gz(M9B zxv4lA9stk`bw~h=x1L^WII^~Q=)mejl-(R9>cFh$6nspEly5Kaq!WM@jiLQ z#@|f0sE-@Y(O|YZL;~8&ddNYN@1TT?$`(VKcmYDH9dvzKj zvii&vg*=gzsO@NJ4Ua{b=IE+zWiGY9MT)fIYGfUfMtwej}Q~9!u^raxX{rdLE zwRM{d#qq<;2`{K!;<2$a)GdAGDB&=8y1#Gh7Daq+hH&*F5HVgggoXY^x-zN1*DDT; z(`9H>IaQiX4xBzJ8?JwZ$=fZ_9(kIzve9`{JkFV}fx2FrK6*f=5Qnt9P>q7l(gMxJ zi_8R?5a^G&r;uc%Sq%EiCF;Gz5x?9nqC(@+;Nwvj23s4bfmEjr0m2#T$!aP-V}9f%M3j!FvS%S4QWeSILXz72>f z2mya^q=sZkOZXRP-3S3-l(}?jR|f&d;vZAsTqjrA!Ev}a$qYSAst|vZk)>DowvSJf$8&BdjADDySk*B=N7AD*L6kX@jYEVX zRtAFMO|!#}a>d7kE(Cz}QQ!(C_ihL$U1{H17(Dbbf|eGT-UY=aJ^P3t8`Nf-$>=;> z@|F9Ybqcf{jOk6--~=e0{RlE~dT9{W?J7CgxzV4pk&X%ejBX!hdD%SaYECXOEp`>Z ze>ONU4O0Etz5D}!{#d_Jy-Ss zxvhsF<~!Ov^73ZMa3pMCsspP?a3>Do=@}ieC*HCJr#7^Vz@afWfNNL*r#XfB&$2Mh zV@|2qBEs7Vo&z}7XJ|N`ggmb;cZ8%@OdEXZzU^NXFKigoHy3$nTUd zpjbt1O|SWg8)7>bt*y#jCFGg^Nd4s2&mg)0xsR_l@8!wkMs?uU>uMrGHjH=|A92GB z;aaZyWlP#MY}ezCQV@fGBN%#%tcXWlxUCN2Adzjq1BEu{fX*%66~cGUhUB!T6=vbG zhuuqmd$j8hKBB>PIJYo%pZX=}Yu21HmjPI5A1m<19)|X=(gx$yHKJ?A*_P z%_JL)hGU&#vJ=%}TZRcXJC%AwFd@s2TOG&?AQ2@CksDV1Opmv?WnbWUlPa!}Jmx4; z3GYeT$P8g2hllssf&%~E8S8PZ(I7=lHyD7k%fl2 zGO-_rVhBdnxEQOz+6mnoreA2LOMhDF`6XCnlatWI7m3{!OucFE2lI`iZv^Km-1NB}Q%a}j zbpt2_(YrBtqPgalq#=t{F|S~Cr_%t$p=)hE^?hEtSvjNATng?zpIa{W z-$c~>%8VkGbLwuHvOYzPS=8SDNEk*G9R2~2N`=VUz4}4J**3%HByWlet0PSv2I_mG z%@he%EdY*>U>U!z+{AwjLqNX$E5gNfFOt9SefN?`xm=9$Zas-v#R(4@3uHjk$}s*R zh)V=QGogJwi>2QB>TxAE3JeVBZ}l1t=c!WHO08z0X$UpBa>T_V$#kospE}Ra$vO%nM2-VpJ!2akDB}b zc2jytVJj8tXzK5%tL(sp243M3SK9JqB>vo9l?+e#5_K$^rBgpwACwOYtl7aae;bZY zC5>AG5{cfdVAgTo&CbQJxZiOW0bA{0I!S`5ZD&ryWLqrG^$VnX@{*XZMvGQiS&eb7 z%zzh?ein8)0K_=u)=HYai)=#@2p7dV3#VIw2uek%+VeDHY40PDrQ6t4es3D|1iT(1 z-qsI=-XE$cEe6!;FY>9-R{`%0V(`ZI%#tO4n&ktH&3j|zZm|q0AAayQcJ05HgB&FR zdR^48Eq%=4LHUUy(FVE1$%SW%Rvn*}qocnY?;0Ks!msZQ*3}X?yrN^|%-mH=6t;K{`*(5ec zb!_9+il-s}V(&H#3X44(hSwfQPCfnWZg>MNWqe=A>jc$o~h`ER! zzEZ@YMtE71xYH*315}l}9v?_DX@uvVpfmP~mn-EXqUZH8jZc-qV4>v-ZI#ew5XvJ~ zQW7ENva&n3U}LfO+lFQ_sBaZHrvlDu1p~?)J`J9;Xs8X9r&q8n?R=@n=$OE7#M*fz z+^nkROf&{iRqW%KcO_BLwa}BZPzV)|*W=tyo|h+UH+3V)0XQPF=WC~8a4Lq9wnnrp z4(~4Bn|*AlwLy7&s-q)n{Z*C7($S z2lT$V)Ug6_%y?kA@r4;ClI|?m1bRhl7~lv{sG`HQ#((*w?IkQ`m_lVF+pWzIxm_Ew zxgzh#spZsMW$=C`!dvGOBjh_VjujW}A-~2Kclp@pMUMvWbVa>bke9y6je9=y{AE}= zvgHbv*GHB6CA+qEV-XZjgBtPGubde=GOY_85us~`{Pc#1|oHWneCRr)^UuIE+qCs#^S1CaU zEjgV`+k2o;)@uMcVCB3-5;B9KKT-c~qn7I;meUpd7J~Ke{u2CcjU&H|TPnTKK93m* zEOZ*(mo=Fv=A5fC$ylJ}=0#zMbdBC^mVUx`zY@P+>O|iv>eP~=@@RjB_WhT`g8{D% z8ksU?<^+Ap~ENxmztaFajN)1sC>7z-}-7S|90w79_$afxC$Fq*3gye8AD540y%+{DGBAeK4&ty)$&teS;$zXl45Xfcru#pPW(`&SM&67CIX-`{Z;g#7>!C2l`&PeXjjTlhAMhRjv=tob9J`tS+<3#`&3c+G!#4sw{AsQSD;wX8c*{UjF5?vJdPbBeWo}xs_+$x2 zugsi)6&f~wo@}U8!O<}@AFtOt&q?T7`&aL?A_q0-l_x?w$1Z0a6@SU-?MHWEt$Q0M zm@z^;EX?}NM6KIr-Dj|~=lDiSDrYZ#dqglweCX*3!`Q@g$l%e`nZ#~y^nVJJzh^pM zQj{+venFsjW1y8S9(cw&ya5Ug8wP{Hi)=k{`AsVCs)>1Lq;On8z47uN>1bQvpDra_ zp=B26SK367?<1w%!;!j9o@A?2fh9@SVMFhE34DAyl1v{hJ-Qg^-7LpiA<@$kpJ ze5Cb;)Z`XigOd*)hbtNLlg>UQ`ppQ3u7DWJeHcb5<7BOfRplp=>o3Yhw;ybGq{T98 zJC=#}-Fb;FZlQn)5cDB`IBomxu2wh90{3vNmh4`U!-%K*nW+G-$}i2k>tcf2a)f<# zq*xc12W6M}&>nJO#CQn($vq=BNdEa5`KV*3f-WMU-Tf!`=|;A1HzBsraP|FsKy>(3 zQ!xZ#fY9yc8wS1l)AjFOtv{KetWsP`pm4BVZdAj;xQD*K*{j81iR|0&VcNq8Nm%}% z=QTd;MG~FlEWxj`TA$JWq~e)gokiK|J)^*12VREMRTro zQ;NplDl|Rr1?0yW-Nal#B||FnKms#4d(u}TtugZ)X8L;L8-|{0qF}xpfz>V3KkMj& zR$s2`xEDGpFI)({GxVz>2xFk)Xh=yuwsuOQR9%FvQgyJ(0iNS3L!?mIQ|1;MutHjJ z)Sp9Pz~nM^m7bc*_CZ;3e{{ibRc4-`VlglW=4&>H(Yf=yESJV5$JDd5au=X;4$S)_g50u7|Qc z0*o_gOPK_PVTl{te}RWkXNz@KTmC?DQ^W6N9v=8W_hpCv+@x z!w)jxDG~8@-Q1!=A0{NhZU56T#R(+vM~m|zMR=0$>hKR**ivET zajEk|#Z6#;PL2U9e+sec{(PPo4jTQJz@6e;Jo@!l!EhNslTl!xRP9qQA9A%Hmc(aXo;|{@TesWj$m4Q$HEu#WU*YwfZ@{{c#8ZZat zDSb)^MLgU68Nd8m3SizWo!HR$i$6Lw2 z!g@HHxK7GqV4@TIc3dAs=>m|WSy9}V;_bPVyho@j%Fgir`<6jH`9scMdKKdX`F>p+5 zriah~m9TIYe(OeKDvWF^1{@r^=2QCH?V{SN)(GFkyfRWSH3MAiv@OJuDrnlEkV$zD z2lT=TAhRwd;x!Xhi`K^)`LtUvU+mOzg6leqZI}khNXM=-&9yCv`NAnIlOulkH&e8dmpXtf*c2%Cyx4@I334_!_}v{!ynNC@E}?u zh9pj~Cw*8D+Z(wRW28Yf%Fa3V{m2kuwO6JOT~S%lT@~E|NTzAdOypr~s^Ce#Bk$&T zKaqzu3-uD7qVAJ`CbFP8LhL5jv63yy8$)i_iezM9Jnt&P*%!lU^OdxFlVJXtR!OEC z<9V$~n&8AO&CeAX!IBW8T>{+o+ZiNb4Uogee0Al1b!}3~1dCD1oQckEBzIEfePS<5 z(?{3a?`KB%X$6S749OX(9J0hdJ~IRP7>>Y3%WDIT5GNTUktQQ>k+I#C*ccS%tKJ!e zC)K1tfS6hLRW!mbFN}_XYB$mZg}~X}9xVclEG6haGAy1^tW1Fc;zj#2oPmsZRWPzd zJFdGTs54|08>-ouwd78*ujS0#??NxWlXB>Mn=6z|kCmx6EtTTzt~Uao{COKEpFHI| zAK`_edd>CzI&fJR1_n0kuSIYXVw^UzTsJ&-o2*EBhtf-3qD=}vZI%wK5zR8lG`!^G zyz>S2PR#pjNQSJu5vhu!KBp0UQlTZX;pH$Y>WcwW;*d(ADX#^mcj>7I9)wKMa2!6+?99X2 zz7*ZV6@PU3*pp}lW_zArcs<*;MFV+Kn3Kq^zWy>;|geU z(Sko0ZhnqI@|OyIfF_=a_9{qgUaM>>6MNPxC(qrih)4V0Em-FqEvf%qw~!w3Ec^oe z8qN=0&wcE``0T34?uQBLw5O)ZmE6F-Y`NKVJtKPW_DkB0{I|l8jq?@4o{ybHMsq+E+z3`+50Y?VqP5)oA^ku zyQ238u%3#feMS)8B#NPumhSRA1d`_%H782Nf9r~xvE21I8Sg-IDRXKc_pC90?wv(j zzv5>UKo=1e{oos5u!1p}ZxNlMe}wq)D)+MXoR zc2>S~etOSyzkV;q{c7CU7KT{6Lt9Q1wGrTv;H4lMAi~ayU;G=gV?wHBs2({rX40un z?^1ux=#LewCnL}xQr@{J?6!Q!e|m#T0HM|Q++rcC0oVzN>tF;K8tiKO4hqIm4wA!{4(i1MmD zWifiDjp=2vK7ScJdEWc1OH`IzYW@cokMk8Ue7Z#i>p9*~a5bBU=>)-$}< z4|gopM^B0*^22=`sU(|&xug8{lZxPlf&|n;;L@(z{Aa&R*m8(gQ->cb1-5d z-HIVs<&6J?w10XsN*l5WNx#-7ycMubiu6F12`e;~1tni)K(nsu5qnz3E@o3?=?ojX z5FMb$7t3CAo1!_^|$XC_3&?+D0z zH8vEapvuPf1W;@RDvp|YMODT$erRsv=X+=m#Lc;$V>|zi%i0`dOOgv};8rdI2*M%B zD7{cSs89V1`s}(Bm#PQG&h|iX$+9+95=&43gc{~Zkb-I`Rmi(_7zqxP2aTlXMnS28 zpe*+o=YNNx`8DC?FPMIB0815@f-06|yMIIg#_7%;{8H?7LDTjIPeKtl67K5*f)Ecp zN%30@(#8k}CCkgauej#RLZWmeeD%Ce*wTPwHf^pv=`9|+^dM)_`LXF_bBWm=0MCaS z^9|mKzDyz-O_t@dk&;tuOZLF|lG7gJiCi(5;6SoB1_t|3o}SOVUj+Q{e{pJR}iT>Axy8W)EYF30J|J zJp+o>`qpWxy@`PXG*M1J+K1x-<4pV37W*3F)g{!U@5D>Z2B@yXY}3Wh#rV4!r1s05 zz|ze79T2(AqpWQyt#S$Ed(r9Z)@=Vueb$wOgZxb|rLVL}FirGfX+j5ywtk<9JQ%M@ zrEn^1AzZW~-~bEOQ8FF{o6_7gH)p13`9bP#_(p?1iNs%5*fr+gG->bX;&7UF4C@$D zc82PdE7cRo^@YHy57Ahar}frN4Lx6`+b&W;VL2*J^r`+E|Ko|sBeS;$vWbFqnO7?m z*v0}zSK(I@TaRxW=zm6xs;%swbvDSZHC^u706A{xMCwf6wUq!(31J(Kdd(pgsklSQ z+O@W4yoFuNi^>nct83&;3V8FRRgZnV22>22z?6Ih4t#DwlfXa~&3~!HOi7Fq99N@J@?Y2D(9Ss(g4&m!qIzGH=yR6In znlkT5i<-JX-J@5Bikt@1`$9VZ)uIdrd~Ez3i~Fk|fTfFJbxyCnD%{lpguy?}Z5v>H zslO-%)?C*>_MRb;Ax{n#x#K5Hl@B;#QlL zq&yG}hsA`FI&})D15FKzB!KxKLcsCl_dYnd{;+Fn^ZT0BVmrNhaNGoDDP=zST= zH!43?LGu)9UM>#uvm(=PjUOF+`GmFI$Tis|JLg|lq1y4 zJElFh!qIMM7&Ar}Wm8D!ur4|9BRbfMk$T9JoR+*RjypU&2oArbtG`fV@0d4o8XhUJ zo8M^n4s-OHF6wa=(T|o$P%0!u&Vcj4*!yRG3)Ee@L1c>rr!=o;Nm4Y^t1IOji!AU8 znsHa$Do0c6&Iaytg*q;vr$$VcNCYi**K?x2+}88+Ro?QK{e@iGF!WSHTFxmK8fiC| z_lE1C4Wc?7HsG5vDD9eXt0vIm1-Nx>X_;n#V}tB7+y8%n1^bP@qARoMeGi7ol|ewFrVZ7hp`eZvqq2yGqAQ!7JUQkF6f~Xgmsdz1qzj z!O#`#L&5c`Mn6#db_G;yV>s(aF*(h-8~x+Bv+fQAlRd5boZy`jZEj2U``$5So`Y0g zkml~WY<**XxV+89Bl!pQVC`YmBjv1A*%0EMbR53FY_Xk66K-F?>d^qx z>y>T|C+rtVxm#9qRU$bVrBW4}vry8t)!l^ceXMicPwn`e7Km*@6(*{}2xZ4Z=W(8N zkj|qNkh39@?iPh)7OI(es^owhA3K(iI5tdTJBzrqD)CL%N*$yRGre5nsli4n%Z4X> z$~0Xb?k^Pu5*)XyKtR2(7if~X$us88xKnLp{-dFDDnOtRAN)lsvS>b(Ga2uIIEApp#VdODDR=TDcY+_ zORSFbQ52|X9A>9%D2L&R8#SrJTOZGIkAZiV6YUuDhNj?Bp@iF)55|*M!{mq*$X+mJ z9+r6$Ty1Z>pT*vAVo7*Vku>sW?qIapDK4UhLmdcEW^ffe(^Us>^s7D!SCbVJ4Thwm z$T!RLfz;5%I@YrmYa?xTO~20wDq!A~ZQsQwR>4|l6Nq(k(>`knLWpnxb#i85%CtyB z@|x#D=wP1OM)7Nayl(tkOpcI*LcZoh^bO3DxB8X7Y`tiJ{%~dp53Se zhx2!=yNiW?t2-ok_Q`~^2X|+c7tzAR{gKWJdA);ak#y$}K1>2K#8DODR*Z1RTczJq z77oFzYdW`hw}u2ZCm+F_R`}}E%E4X}Q2&KlALQu^D-kw?G1Atc^t@>9^St2yiqVvo zN8Q*wMX|?9YN8urAOtrPGBs-|^)D?}Ssxw#V6Vuv5OMj>)DqoqfD!+bkJ#QtHgK3X z04TqCqjATIlkHq!zz?$JwDzZ=++bj>7fB#==E7Y(dF64gfbc~tf!Gk;xf@M$z_$sZ z+@p~ft1NGXW{R;#a7Xa<)W+qG&~H_eXw^^N9=c0#S8=fCz9NtXrhHHm)|g8j+;7E*a;)TRy!_P`0f@X6*AzfJA$s)t7eM`D*LW3Mo=lIWN1ZJ;tGpa z7R>+LF0Bv^rg3B{u{Gw~MRmtr?@yZZW{<;s!al{FGiZ+c`BEzP)A8>en#{G7HU=PN zY453h6{PmX?KhP&30(GcjsDhNuk8g4{7%(aGcP#sW0BKXa`5@0*CO@HRs!Cbt>;+C zB}?hT#}-f*l*5_F8d7N1@YWd3iqf04I^4X;xRp8#Za zw}jpb%iQJJ*-Ot+wBo5)e+?e&WsJuuRMMJS7;X0W=isam`)YD=k&SZ5n`C-Ads3yZ zSbCAeN!|~U%KUDNY&?p#T*_^Wun}Iha0eYTvZhUfsdS&Y6X#o$WTj#t7&DHRcV9+T z0g^UQ`=orRkb+u6Vj{||`%f(?{*xZ)V=zN(Q!Sr^l&E|WPYva12IU>dqB`D$v{-pJ zsA%ebQoEQOEg9gLH;05*7M=25*Zt~cAyOQM>5hjd__E%6`H1~6hen1CuTKK zYrMO-6iB4Z>6cq8@Sm#Myv-4#gP^w@`kwG;%$2RxmxFf#pM1C ztUP2lEuIE}bq(z~K!se2S)8L{nogYt9W<8uvRAZ`sdD1TesEOEQ(IaSmN>?PRPog~ zFQnM#4x|Y0pL!S6AeJp`fa+c^ISR){>Dd4N@Ae*knr{v%|ErHn?j|fCyD-V?q%CKh zafQ{`^PDm+VYFXlCVxf?zHS(;_OksD;c3jU5%Kp-N_&d?=Oo@8&33GR>eBL!pwJ+p z&R?>pq<%WWpmmR@Bp*kSf(dYYDGNI$(83CMjMbDnPDMcXJkQXrBC1Vi+0uWA;*yyt zGPI@6W$@}3(~wMiew{tZVjU=_e;W-BTOf^Ge3_x z+He7|elxbwnY#wWI`MSBh^!Uqrka9&7P(V=t~}f;`<6>V!!0wNeb|<58V+nO0*5sV z)T!iYDqaiEw&rrcEbTQw)sj1Qz*TwwK*^QBI2u+#T_G-Gp9Tdv454)R8rfJ{IipWF z1LHa387igA4L}~yP(6>goV`_2jRatcsrulENrFw&y#fU-E`(Kw;t$X&)Nqh($hj$1 zHO9<`WIA>CB<@NGWzIm)5AxiIe`qt?gNb8wOOopJpV`6~SHg9i$! z|AdC6qJ&!1%h|D>xkY0%bTgsOVT@Da!qf-*{M)q=bU8qx%H;>~AX=F~ZSH+$9qO{Z zzy}Z355U}g6kVk4a)jqe0C8#^nM)5O&5=Kt5RzD+24Pn`hYu{z1(BfCnW423o zTFrj#D{|QfB?8#{P9=MxQ%cx8#wZn+x@tOgCbrgGV^Gsr(oWTe>V+^BbhtlbjRoN> zTUyyeJoG0Y47H-(UW*Qmok`tIxT!b|^6x1QH9+KZH!)L|^1+R>1QMXCPJ;f^q#-iP zjx)P>xxLTRgncD?J%O z*v@!!e4w^j${PTS=$ebU^cbPls*i>rXwiNsy0{HL%rE0f$L+dF08k-PD((!MI|rk$ z4Bohc5WrXvQ-SQQo_BE&uy1dwJ@B7S41|{W;n1J`uWlQN^u*>Oy)8SF`bT znK^Q=7!iP$F`VImM^a(k+9 zT{-0D#LmE!3@{~}ZK9#)(YxWF_o>Gqyo!+td?w+nGbol7fVs&tP$R*7$VUx?V0TP* zo+N^=+`KW&h(1ddiUNuN7aMNBWi!6t!v|x;s20*PQBSV#_TpO6IRgCSG&UCZv)ZnR zM>4{sC?&+YH6oSGH3@%HUXKW;Lk?qE%0gYWAer^^piE0_qI|hav5+Z!a+Mn)%eWsr z^a2n?l1vxw#0vMEqCI!{TgqlwDR0mnNdwVhSXlL)3r@g+)I04EnPEbDGpH7$pE2U$ zxE?Plq;QuB~DxmH#1PO-cD&=_Dl@rrtnDQz1R6K8~S zNGpu&8^?Zd8L7(@spa{!7k`+mrI7*D{8Wr6yN!hTt{Qtn0bfYQkH`ZH2hvXKs}c;m zIsv?x{-QTTvwnzXbVStmmEU?7W}dRT|8MSMn6P~DCye>SF{b<7ysmn~G-wmnSTJz{1`Ov#l6M*a#s6yDE^b zo~@j{IbMM2;&4MUeL!XPX+mLp=8CDGI(uXA=QQY`BGw)#+*@{d9FGazN9-Mc;2YM> zPaZ0qnGvL3sV%i0_(;xCX-=DqYHIUq3vJem;xG0wKG*m!{RwWU0jSe>sKOooL-BFu zA_77vo~>R}trSS-3+MDlCzdc{1^nRILHBy*nqi4(rE8!bUj%~sl!8^X#{Sfp_ndb+ z+}FL@3E;4{8F5`hl3Ns$T@g_hzqt`|y{FC>*iVx1pm}a|8JCy})ep83(|9$WR==jf zdG_y_w(EoVy=CC7f``BMTxUxVODy7@iHX2_gMtRF0Ra|e=9mCe)E~u6GZP??^j?Mz z%dE?Mt`YhliXQb@*I+!zW(~NP+I?08Go|lT>#$G^x_wx82yt;sNzDC4#)E+N&R9U) zwN0Ax_zTM3Z#K#>&1_C%bDgv9`T9>rZQj{;jj@K9OU{XH9x_}ki;H2=PIqEVBe!a} zCZ#G#)2a2pp`%!l_(SlGqgN;vNK;!Tg5j@0dOx+Og37#W zqjR~GLrbfHsY;G+jW^*Pk%B1zE@EjuG_hvo)6mXXNvvY1rm==63+;} zsbQ#KljWEq$8U?D9q`ct`Ra0MA;zIzms2# z_*4VMPgrMRT*(_Pzc7~Xx=7=y`MX)>G>qVEB7;8v*sKIUD)MbARLZ!*<;BN<(*Ju zkXCnDep{IgNE8eDAN-Wx9Sx)J9xJF_C^T6UI4Oq>Dl4DwxaO@iRKh#Xbl&J^H<;s2 zO4semfN(sCFq?CbLBR>httrUOt}u3q4C@Rd`_5#Id&4B4ZuZdwXgjly5-)HR!<$xK z^C128ivkSn)h~>Wp-g)J**k}ueN;N#JdjtGn&IrJI@=9SY(4Znvy_jscDb$;p=P3R zpdgH_`$T{Zh3ubf_R7@pnl?By9%&o;QwiE`C|1U*$ICMICA5lg)YbBbckK>3t!fhF zV@bgj2&Sa&X$Mj5ym2@7Ojh-e+)d?C0J+=r(`+~1p76vapYv{Xc1?N>4n3~Gj5+>3 zb#0!f#bNXtrwkRwYpqSXsz9Q^u>fEPCJ9$F(b#s+Qa8hoYnx&lkL{ZY(|t7;HyahG zUj_7bi{B?H4i$B1lHgDre8rro>%Al&NgPwyo?|W_yr_(6>-n;C3q9*8J<~X1+ZO-F zWiIpzRm;RI_^h=HcVjj*C{q7r=ODzr_LGzmhl{#RrUdP-harK$x<`Y*Ltbp^CE{Il zl%c=u==zClu5@jQTUaz}U(JXK53&zG02?Xy^0^2GlsR6xuT^YHf+`5=XtgVYr8#3w zlh3M6*nd0debCG?ip*%mKe$zTV2PU*s6_iePgL=e2SVDsh)-)U_#H6?=m37ts0Jg` zGuv5jDgsoFc5P{hvwv{&f>m7Vw0Zg|Hl*t&d$)UN(x=CyJZWxvW)bM;bp)4J8%?|$ zvkN%&6j6pI?6_DBv(kyDzuXOZ>W{lz|ggl>0W`Metca)iMO02E3j%1VaH1_i2-0YkmN+6&8HIi}1dtp@GQvrG|L zjV3pwhQTy741e%~`o(4!@tlHmAn+d4vu&=HSt!KZaqZvY)9Fum!E0`#v2czs((als z{yDm>2q6kQi~ck!id;V6eg*?o@k4vNfFm9bYs1QGH3C95qZ!@fD&B9W11W>T!HQ5H zUKr$E|K?S^K+Y>Y-yn8+nvdXtnw#&q*WYy~<9C^u4}7a;LE|#U^S0;nT^XCx$1Wl? z@rkpWzepsUn9v^W((7e-VT##oz%^3HJYptp{+EOeFtw2%;|!AZCod00ITzG#VRE+Z z?){Pj`ZadcY2~A4ptQ@j10Ji{!(A-)D%lSXi5QiwrkHn@bloSRG_$gJ97!7Cv8Rdj z<5fN*+6J~Uz2uaRB5^(R+GZ8|0MRBShqc2x#_tJ6&o;~?jCfi>d?)S4QK}^(zJ)%} z7!Lb;Np1zwtok;osG5T%?0(ivuABN(>AiMCLD)?_m+bvqdwWrJJob6S5;2SLA}yjo zR?96`C?1IXM8)a#RZe@8A&wjGYiz@aJQ91mRn%SJZ<{i;SwCD@pUZp?9SbA?)sh`^ z_ksAy!`-7JQ{3HOV3qEAuj7YHqHRc)+=WJ zuoS|VA%geH&i@8WRp{WSU2Tk;yH1N>q)LWmaYy@w!S%C4a&DpvGd)b0mwn6j@E$q8 zthiMZRVeX(og}b(fAo%@-t8Hnvlbs)$|7$l5JiUi%#l=%rZznM;2PvClw1UMmo%t) zGNF#crIL9IA@wgenB#1vi#&WCeO1vZ3(IeL0MC zg7O%zv3&aCV{<%3g_kRbLNgRWaT4A2amK+NY^c8dXLTW<)_#1U%4sRRCN_;9GGFy> zLoS9ek{fLJsK0DJRs+zU4YzQ-7<$CsZdO&ngQv}^D09FIq}Qyf4G1CAN2D`LSeZ7C z>DVg;I;V~=b4zP@t;A;HRR-*xlo9bvku)_;?Q!RB4y63elY^R_>m#wgbZ2kuL>?nffJc~l5my0$ z`<>PrwSV$zV+J8GOL}tbxT&)ml?(AEfvssgoG|i4}w_`jTP=IsC~!m zy-C%9MkOqofaj8BXy1>=LyhDF{C{c;*%uH3@*2JW+)DIhL9peMy$ll38y?aawqHc2 zXHx#a)daM;`QUO7!ub~l)Zdiz2hYb!yXIoj9D{*=*X#+e{&^;Gzi#`NcAar^U!%?Z zhg-x1%$Tf>o(c@QGNE_2)^62)C{epa*851+P###0{Om|G;A7G12Zi?+MSxrW8bb1* z2dsFZt7)YUXTWs4<(C{;s-Ck8yb7d5ID2#xN%)#vch>Z~mpI0(hh+E#zrJy zF7CWZV%Ey981nSe$6$?31Vn-VJ{rkYWgZ(P0ZGC=!i*-&7C5P|f=g+TJGd!(6>CB+ z!A-5=#J(x(=N;sFHYV@jaNhLBEJU*(Onf9y%gb*+2X&srQ5K)QHhM4OP0}k~+~hS4 z_e#xzeB2O(Rv=raZbzh_sP!YdM2Pb~_sagUz80Ez-86Dx!5GX9(>83h!h;JVWy`)j z;Hs+&WoXITuZifNJmm$aT?cGR9L=6Mq-}DJTVez?VmyHfJSkJWR9;@&`B8KnErxJ=1UFx?2jTg9G@@YeVxiofcOV!SHW_9k$iF`HjON4Hd%AqU-AvuUm^o%M} z*lSMua0LXi|INEt9+JU|IaR;guk{)~oH_9WXoC+@JM>05AiQkE=KM_gau?{|CBCq~1Sv~4KAeKl` zndKqa%zve&a0}k);eAseo#3UoxQx>bYmG67#nHpz9CJ+w>P^!_hN&te;3a6m}FZzySqV zXm^>=Hm!>ZMCe4s@D8>v{BgX|__QBWZ+yeRo0o#_A-F_Fh-E5(!J?>EYPPSvwaCW6 zjkp=`EPO{=V@cG!@O_D*n%pYV$d|#yo*&1-`9sq7h>R)jeDX0(Cy?CBh{`s6OF_%= zvdRq8uRjRfre+-jeIPtNuLSYZlV)y+>-EjpiJwoWJDMd3uIn{9R`2ZSKhnud#0=ib zZKfLw<>R7LR*sbo6|DOVQm5t|U7BewCz`vG*Qt?u_oduLuO!2R#8a!sTi3LkdBok+ za%Z=@KKgP2bFwEkGxV%n1{KPy&KU0h)*u4iM}s0`^v&^pJ4h};L?{+=iIxm|y3|lU zz6l(0_v`jy7J`1mK%3&wIP9_uM8pbL>)Uk0&LDQ%+@VYE)^oPh1Ea%$q|d$Bm!znq zc*!ZUV9&*VvLu|~yyAi=3UfTCUAp9j?D0!?$LoR^sIdF$1y31me2Am%LD$OY@$!W^>@P zv0(K$Mf`c_rXMZ*mNVQ*Kj2}|985NLUdfcKG+?b;HI6~@`Y9Y>tu%-}J=9W1kXbbX z>E(1Tc_$pY@?HdNTz;_+NAS{k^m}uc4Z9BY;m{8NUe+Uw zs`lflt=3)#^r>1!%Dzua!QgkhGGahQ@Ly~E%ZrRlX_J-oVFtMs9(8cvQOlFS;1R-z zBJ`~8rxd*L!~NRhxYM7}VpRb^B{R>|XxC*@pwdL_q9CXP_dds3Q%g?7U7H!{ zu$V0Xjph%<07$|xXL_oTf8$E^%I{e1sr@z`@&Q@49pSD}7BZOM08E^c->if}BjTJ) z(_JoBrg!265a>tbJx=xkm%um$c*)Frb0fa4EKygiRCyhK)Lt>gQk{Ky)f(ccYh9Yt zO50yVn3nfRUxF}{4Ju-$9*`609ag0$W_l@<-)8Q_4#VFZ4)A9TrxBX>KQqTu(42qv ziGN$V)iTtF&#K%i(#YIUogB$q(Y~;YI{O*8RL66Vipg0+_Fw~F%ahs*_Uu=BM^L5Q zH#+^iJx`YXggYz6z=ok6ud*qAtO?`lhq3z7=6i~X8t<$ZJfVLo@Ilbdz0}mqfa)zRl1#|v;-d88eu4B64!0lwHFRW14JXoYnjsJl&^%~K7U}ln-;4?G z$-yhZoZVu0rO2=VmdMzWJ4qq%dS|XmvWzelc6F+yx!dRhM=H#<{#XeM!~NOql&;9k z(3g4vZvQVfU~cCDcbMelFUh`~v~WNYda~s(iaZj^!g9l{k4XG@0T~`mGWo1~WrhWe z4%Lm}3v_R%Y7I1{NCuVec=i(HP69QQ(oQ)?5n%6yuq#?&tlLcZThnYXFNy#syYvOl zeSU@weJSq+eHQ5y)-BKFtz58hI5*MW0&6PBfSg{Me4@Ln3uvR~^Vn5@>Mz6=kF5Gm z{x2yRhDUdO+f7~Fv%}eB8Nu;!DNwY3mzxj0l2>@gv-ayqB zP)zyBzBi=P{@~}v--#xOaJ!}ST~(0& zl+XDET@G{A8L1%@oU#E`I9#YEo7CWV<{6`!+X11rkHlE9?NVf{5nD+3Hd%Q+{&^Ev z6Lo_A)}{nAh{>YWjY-<)L`vUMo0$v`DZh{2D|=E+tc}sd%abvg6!L0>*bYiOJ`k=l zo3w>JT?(N{*-~tMUw0Rb8OH+5+kNFW^2fmR5YbE|Ot>5E)M=q7kAnrlh+DN-tZ=sr z&FUG{WTasc%H+o>0@44*;@E zeWGP!?6Nq{6XpfmtKS4K##MC^PlHwsUU#y#Fr6?8jaNH4csN;4b1?LmYZ|%sxrjS-84hnNM)+EQrjk` zNh!s0X(K)1c|R+wh=d-tG&l(c+H6jdp1`}?%5WPKMs?M6Y7Fu#xs;$9I$q;$1|$c6 zstHlu4YKAGDmaesG&@a9s9AI=6#Jqpwhv2!Mt2K^BrIn#>L=YEnak-9wKvgYgWMp0 zy9;epHNE&mp`Lg@^7K;e@pt!EqdqGhEy3T$?)K}BNy6)6C9Ihf0}2#cD$0|!^9W%A zWYq66(r^x-=~Z~pG9b~*{G9Jjd}@cfSNkWT{=%eGQL>pKn={0#l4BL9Ls>9gD}L9D zejPIBKj-(L0Qe8()0HUkobNiMXQ67pgD*(xW?2>GRq@je)n?*?BNH%{Ai^UHX+Br~ zQL^OR5jXfz<~G36`d14BR^w_!?WP>J@>C{SJ@y*QU-o~zK)eH5vB$;CBQ6EZp;N2i z?2LXhEKf6ZXg$C2E@A}kVCk1TZt^P#Iq4^l4CMU9o%o&v8c!Dt709u;h?a*gWfk3=6QsG=(8}O3)}T3X>z^oLL19bU zsps zMMhTf;R zGX61jl$v{ICCBpug_nQB;eFGp5jz(w2kS{WYg#Q6Lc_q4YWJT>CpHBNz4kdp|zu7P%P!S(*~_?GiWnrQ_sIL zgf~oxshJ@tyCnR%rib|Dj!-lpVt4C8=9>V6o23u7JZzJU5#Fst%l=qkxuwkKRz&Dr zHNW>q`1iZ_YFk0wO$gu&1p#}qTiBA>*-CaT6wz^3q<;K!5n`3MykS`sRi-{>zB*%v zy?ol9x!`)A{yWu9QqZAB;t7pQ(!VUZq4p?v`XzhsA#58*9B=EpWIQgJK5{S zI=h|>G2(>@O}6h@EvOhjMNSZ}VLZmPo+dc&kSbD=j^#DsHO2b^^dNlET>Te(Vn!qvUAuS!hY0^;*;CXEVbsRtTXWek7E^iKTocaxheHw701)eRe%f-1H zO^$%>W>5Nr>Cp=*qeh?5kKx~D_~7hP%579NQj)fW!gy?Zi4}{9n_1?`0XciP=p^v< zX*E3hetP`7hbqAn2ivS!^_Oqh9;WwHOTC(?bq|*dfV$PKx|8zOf19gLH^0v|gV^O~ z@G2&XGbI;j3nFC8G$6W;m4EoLkanQJ#>{Z>>j>d@1d@~=GS4eb5QNKvjSt|*zU~ho zoh>UsNZL&Q;UsVa$osLj`HU?9J3z$0gf(=P>HcaD8PM3hV%_ z5GW*hb3i;jUSbv@`WiRUKK~^;xWx#`e(N%hxzM|b{82;A{qEdKRT_7IXUvd<-ndyT z?X6o)mEv7sYGb5g1X&~qrvE=T6G?kUg)AOV-qu(S`sGu+@(76=Hw(`LLbs%Vn)^=L zMeSgUe!ke7fh;`o>KN}+)|$EioG9Hfn3l0tiGn8ylfu1JtS1T#W4C1VJ8P;Y88s?l za>~e(r0rN7hhCXsJVZY@hCcxV^{ezi1A3kkoV)V;2C}idS={PY;z5R3D~?9U&29b7 zJ(e`l8?>;y=(X7Fj3G7&otT003Za!ri%+T8PN<}*`l0+sMLQRf&t~>2Ob06R$0EE& z{&ZNLjq?v)`eCLXlu^z2w z1WpT_fFYgFAlnLure^xx%7Ce-`mrFWA&O@2S=CsLGdvw5dg53A`7Fycu42Unr)VEm z2lr}!_88iV0Hxlr|7Kqw@!>wM;6Rov-}_Yewt;6bJPO@JE0b?9cQNL9#Ib?AM7@jP zi>m-7e{~}9Z;SEGcnjy`==&S_CBK2@1x2B{k3R}GYXwTdabL;1=OhlBobAJ{Qcu12 z#kn2Luiu|$(Gj<#H}#3{t%T_~iGM!{)R!$kzusDCVSCR{_D6q`s|_atzh_TKl#Wn7 zCH}r#n^c(9y7sWTQCt1-ZI~`@`od{kwBs<&H>1sZSJDj(un$$F$A)wetq@nClwGy6 zROMrE>jW}{56%z=1d}%XxjacuXcvg$gX%8X>~cqd4TW1Yzmccow|eGYrL_Y2_%BUF z8Y+~W1)<4Kx!9`0!*_1$T70T{5Do+Aej%2)taa3REM=$wWx=d3$Xb_4ir${kqhBW#_NvGXlnF&pXyv zXbkLm(9GjmnK2>(W~!g)U(~X>Cg_RrkFDs{Sz46`b8Y*)DqHb$)87CF9vChF_rM{xE*dKc;S7aA`1(QY!|*g!o9;pBva zp@t5~f3`TMZ%6*KVOoJHsG;vb`1uedAfa6${Xu#jjEGm6>`!c|zwkCKPw9R_`X2U; zAKhWR+(WEemrLHmNyMo~~4a5j5ejGSb3d!HEs9#5F?A7Tlu8v9+jkUfT<{ioewmENv+M8Gyh&9Sa8JoWe@P7+Q+oep2>*wJ{jn4gRT0KFs~OI5`%U@kio)*oJbB1c{u)`Y zXm~;5;y%kiJgY?L(7M}!{mkZhRTqbsQivqEXUUm@`Y$&J!eFpA%3(v0-skfvmG-__ z;6p4wJ^ZHIOLnIS6kHi+g*%LeojvT%)zPx#7v~VbR?1njs(BbK!G7pISJyjSNEy0X zMl}sw)JKD6cv`L$0eyxtnhL@Z#qW32ma81^oLeat{uBFhb{y^AYMfwrkOwIQN=?NT zD36>6!+p+ttElY95E6Yfq4$0?3zbt(zYyx_JG*sMl+hOJ-pid_9z}MrE5RUeVxK;m z$(!f+F+abkeI?Z1!>fLfN?@$@9Z53HvJS4NkoWI!|By8Po$r7aV5^^;0UNtbi{z_D zY0nMi8sn)XvLsk_2-wXS+2H#J(5N!s>xb#69TC(k*i3GZu6Cq4m-DJuZvpA%1oH zt%*(Kc8WV?YROMe-9#>SK3+Rf0$h+A5jpsV4t#A(d+fUZd8P_%xgGUz{-1#T8_C8u zv$GRK0a{F90RN0*DBjmT0>ZQeCi-+_96)oFRNVuM)rWv{e&2xDg7f^z5VMppa z64Rydk*N}7G6IL4kvI0>QMPNZgcgQMe>A7LiWlgl{K$n%Zk&VjFjew6j^Ljb#`evP zmaonQ(#KYE5Q@-n(OSy^7q5Rv^`p?G3J(dXj+J`AV1s5ugED@0HD9#=&oQ0u%729H zafGgPqfCF-%vkKSC3NDTC?xdSOkO zaPeXz-_!AE$Tli)YT`x=CkjxiiYLm}wcKMT04Z;bW{$aQ_^^7~`*f<91RaczsBP!1 z%Xoh84fU9&CmLKe@FrF%#?Fg>^J%M2YO@2ZkmEK?XTSk&HVw7a8%i&213;lC4#LrY z{F-WHvWC_D{m6Cv|7Hr}yItD5*8GwZm)t#whzu3W8A^?BBKOGwsTjhvVI>;j1Pe1OO$E&C!T``@uSi6X8TVkmU>PdKl})l6zw#`OL3-rUHnslRfY z>f21S`r#ffvqwni`6oKzgubIB?6AcmCs@20^$G-hxIwgw z#m5=G_Y#15V`7l%aLttYwjMYi{f0kbwumNtvxyYtwJ4mPbqr_S&?sxm(W13G%x0E% zn$9_YGpOU1;I+;Q(s7(KR>#kH?xMqIp1O-IiKa33qq7PG2b>aC_t?-9(%1JA+R4(1_;B5aG4yXWdiPU6#Hx=upHN=nw(5gN%&(bjLz3 zUMqRrUtwDhNT2|q$q1|oI8dNVvaBMn%+M&vPF~kH^HdSR&FP_NIZxbze#~wF{uOh4 zMkxO3##c^?n^sW3B*8}oe;wrkP=R?6jFuG?El_7=wZajWgK}HUMyN*Dc`_enSPV7Nm}xB_cL1A zBSc;G1c0` z>F+Xq7sUnv$S=^12`4 zfYqxd!^sScuI8o3iS5MX&E?AnS;IRjpS=DJRw~l;MH4a9BK*$}!S0bcc4#PwGO612 z4md@`JIZ8M^l-Oqx4UWXZ{RdhJI65Cl^vmG{jZ{v9%O24Hh&C$3QvH)aDJC42k1cR zc!ww%{)*9WYK-4z*vxuS`umaDs&KO!Fm?Z|=V6?})&>czSu@?3XD^f{#t>b*DKUlS*$bHO|a_m&7YWq6U460bef|ffHD7qR7kKsR2hTw z5lD1K#>E7ZpOop>s!W=mEDX>ReDR>*KDZL)_1x%n^vUgACZY=xv$^MLtSy22(ysb9 z_gtRmPb8ez?Z=qst_I$q3^Gk3-?{xwc)DhDo^0`SSKAYDvFG$@eJY=@r*m4_j}o;I z%3~n6QJ&By69Fcd8FME5PLZaH#c6}RL}JiqiN2x9ZmseT{2JX{sZEL;AyrT&xRRoe zuQ`&rv)#$9Os~{?)D1)P5`iI9?X{t?j0@efeRvlV)l;Fk|AI2FOp($;^udgR-odQ$ zywhwc4oqn|?6s@#z`C$4QrQ;^aS9?#$(-C zD$=s{#qKo4^kBkEd}=z|2M=~5z*Y!zU>$c#E1)!6kto!bh3rnp#Q}KBYuJ_C24bp1 z{DSF)jHfAhFqH^&S+1q}pMgtWHkL%ani~6_w^>U{|71$}dcxlE8^UHSOc>vpS@^pO zNSlb~&z5}D(PMWKkCb1tI32XKeCmnj-dLa;=aR5w8SHE#oRA1`b`uRvaaijV3|6fh zKDbMHwV@@`2~QL}2rsI4EJEc6sY)gX+vwPK-u!Zg|6eH})}SLXkD#$*+ETHASQV@! zQXV-E0d*j12cnK<FPZIJfV$l0#Ojon3l^?3a#4{uzPGj>oSh z52?#p-ZxW@TvOZ&F3iW*wFkJ!|6-$gAlJI!_|nym95OTt#oEGxd>!R<9JN)~ii_jy z%m}`lcKb5_`+LHJP=Rq+mkHZ}YS|%Xg_$ZCJ;Rjn4TAQossaE3mEx=EoF7JKI|1;`N1d9`aVk~cUO&?bW zyw;E)b{4|Rb0p@tN{uRG6|OmGgeZ~t&7Vq=YuZPR=ly=kERb%@;+}3qK`s=56w12* z0S8^MEv(F{5^V!-gkK1v9x-|I&|+11vP0T904z29ykg-ZHPsF{WN8Z@%;>GGl-TSL zD7ZYhdn>a)u{GP!CwMBMpmu&1QC{yrOZb7OWme*6bAP15YE2pwQ z3zn<6iNc1zV3lle&9+6La+30iF)D6GogA;=-ZAdipZz|j;2O#_Yed_HvDL3F=Dxw; z3kkt;#a);&fuhd31@;~y^<{Jv*G`5oO~bAFNheJhhdZmv$cXk%>#}75p&$IxRJPe< zw>onSO4t9vh&h{^kPge&`HR4`ga%C#a{xpR?X4JyLX?OWnjHViR@=dAe7 z+;RAx1+2UsVZ)8H%x}U;jeE`{)`xT&tGD!Rq)OSkHFvs3OO;j54Q_UWTgN?{m!{yTB4Tp(7R zL*dEy06^9)SZ2G_^5ci^-EaRC#EOg*S7W@7BA}mMm6cB!-{r4mgHZ21?Nk*%hWj-v zoEv{cB-*HTv%fp?B8Zx67Wcl2u7?Asbm?;}vX2cP@arZJJn_G>Jl>bJjlB8ZJ3UdY zcMgkZd<|>3QFpuQ2s9IV7G;&v;PRj4jhh&^n!Ju8N*bQS2FEdTU8p5f?znW2oL!z* zfr$;CD2;{VwN7G`9ag^dm2(;m?2Pv#p2>JtE+0Sa#W#~k!k4k5r_Q|RU|3Feg^K34 z$Vir)lj*+NH74t&`H zz5qL+PSL(A>7F*a`@)ERq`wMl^tQWXMDM3!IP<%s+?>I3)fyXnB_e_EN~PB6B&Des z$)`m-+KC*coD>A$iD79f9>-pSC`~%|mizEBz-*GlREbH+7)mUWA-KXiGFzWVg{?lQ z6xDMM2j{s?n~h~^^ao4?_(o(SC?obiFqsg024N~>MRutI_z+2QBo#zkNBPTeQZJVOiL;g?tX;DA{{wFfCvB#0j2Sa+nA zm-jL9o-2Nwr?LgtYvv#OcYQT`&NhTM=ivf3z^3wdv*MyOpnVLq(Y$thQ`7}=S_W@q z?cI__;Z=PMAFE?k+~>sWCn6ubi#gn4$%wwhs5mdO*vm6K3wefCQkkhn2}5!%w%@eq z_+WwjiUB*%&88LjChTntCXcHboLt8!T#w*Dn0oaI!XrGG_;S1@DI>)L=k6c#lk={1 zo;7gNfns^q3;pVt*LO8g+#6GI-QL;2_rt z7?)nGOX%*F)`?C&$oPshf6MsyY)iI&YVffViNvO`O#;8omj2i?&z#?;1 zSsz!*H2fv{M21WYCF<#wvnBm$japym*fY3sD{{)bI8(k!>L``>W6SjiAv2Hp?>KDa zNX?myx~wdKQyh`;6$wFpFAIOd7C~j}xq|Kg_&gZAa<6b1Sc4tM7(hZTKQT0$OV6@e z7XwA9@eq-@Lu8N}^PndBXxQyHPo+UWSV>K;*%5-6+S*og?I{!6XRY9DNlBIhS^Mu|Z5#IuK2d<( z;A~ic2e7H;#k861Pj(&CfqfA14~BTpJ(+f>4kmWh;I=X3>{I!>xIflPr%pr8Vy}ec z5Lq;|`-K+|Isrl7f5*J2)?yi@{vo`h^|3}_J?dObbn$r0G zl)UJuP0VQZB^HR7E?E0%?!sD!?*onqMUrmVdq{ghnw>#KTCfHtIAK3ti9?sp96!F= zWuk~{?>L4+xaK&}L{d7P*4RYPX($R{j;2~hXrR;bnS(YULh3rz)nb)fqfI_MV%((j#W=X5k*#A#Mp}x>4ff~NwqB;h5Dm$9OUHon za?F>wjY||F2lWW36qWfwl!pfdV5&>BJdWjC9I}6An82kV$xHPjRXe64{<}{jL^Yj9 zmn>*J(Fg2=b z8D8`XW@l(^Tj~cK?Wi8Geh2kz?FjN%wimSb9%%z3Zr^GgZBd#;1U#@f=B&!YM^{=4 z!PBff4Y+C`KvlRp$m&A=G7o#u6bkS(1|gAKz+&I+9aoO5#xF~G?L4s&+CB=ukYahT zGbIBsdcdgFF~N>2Est=v^(-UJwo_yv@K>oAXDm!KK0bORF-JcwCDu*=bb)G6rk~_e zNV9($B+jB!3An1Jrj)aoFgGVl^F_J0`CDkh;xn0-2AxVH0ht&)qI5gN)BOlZ`2%WU zhh@h8E(&;Ew_?W{_RFE^>v5QNY52x49rB04Y~4}3s$9#oVGMK5net(VF%e8XG#PA2 z-={(^v0&n*qiUzkGT%9m8U4;!anN6Jfdhxi8qP z-L=jOSgpaRj<_Rz=7KpijBKtG$-REs2`FB08F%;i85V2@oQz0JKfx^* z;4vTT$_aWCmRohaoE51}G!Z^x#~|g2^~d=1XjoF`d4*+J9_B>rYh(HQ`V$N=(^r)F zJ)V_ercGeh7ks9o7Im}_OYZcJ4p3u+Q@+*FA?=oFLa0wH6YBVl67U_Yi3bzGHg1CM zMC1+d;xOzaY=XqIV=e)NvL{{rn$Arbo%-;-TT2TJSlEEMrAa)h=rwazdIPusurmx> zrN+*(2Qls^YqYfd4ZNgVp{kzxwud7-L1!*o+wG(dKFcQ@*NAYmz~a;Lly+q&&yiDl zsw)LL(irKou+c(eQxso1hS2z?Y;MmDCp&?d(kL!?XtzARXV`xcE^&kq>aP{ru9~Tll ztOX8VkH%WUZ_w_tVq=f^({m)yQlO4um@dvthhDUg((@(PBM} z@KHA&&6?TTXV=t)B&*Lv zAp_~j9t}5bWTz?;I^%4?(l9%IUSds;@J@t(<%c7^C8Ac;tKiCpQN;>(gF`YNO7-xV zj_iNmYbv7Mc)f`T9>y2&O+&2i{1`Mp%;f2{7nj5qAdAcgLwxZM(BHVBklOFDuH2mZ z!$hDQo4O*h#}u3g@_tP`ec!w7HkL#MAJri%Sk;{FUJH1n(YrzBm)K12JK*V#R1?AU z@EgMzW}tXs88om3Z72pY_Q-Ov>V0_AiD&0WnA-t-Uqc(==Q%0^wl#PLG*1?1x&&74 zsco=kli;3(#O5YL?4x*3a~T19`}Lfqes&?z?#EXOJOT41yrIurc6kjoVlD zd$f8-WAQ{Pslsy0G(J9jZBZwZSm3kyXb3^Hh z2o>-k--5zI4ta{t0}%u{!$Z{@1$td66qr{YaDvur&O?`0Zd5x-*7zkoFo+hm72XSwGL68VY!-kmk)R!>iQ`VPz#ocr6tvy*qVzz0q7~(_TTBCiK z6oMuH_DmyH!-RN<_C2a9Gd15$5T6i8h38Vqav&TO@X%%FonT=Js>j zDkBD7?m5d~DWser519~yKDk^A`DxScovvI!BurJBDxUV?2NQy{rpyiEy?U3a82kl_ za+A*nnshSk(cQre z0C@8CIxPDFJP!KUBv);C`{G#1Du{GjPiEAuGxw*bS6I5b9DpW6i#e3I9}*sbE6}% zSHp^6BE=g)=-w!u^9+7aW5PIu0X^hdNJ7~PrMD+6I|r*>6K016mJeG?a`pY+6aG@y ziq9;(qUVkQ$KGg#5@HavC4>LCA=6VS-@+&#z*l!N6^3gGcwH;8nxKSe{{?p$B6irQ z`rN*P!f8l!$iqWZ@g9yW-c&nsgZf{3%Y+SPr}ZHjHG(hhuO@LZ7!v7(^RC&KC)_*) z1|{Na7|XEN3M+AQAFJJl%0Z0&clUvcAr|?b+j5%!U#dgr(sjVLr7OH7{qj8u?%k+VwEY>Y68sM{)t3Bpc zq`b79fp5Z^n-AU}s?4JYY`1dYG!Rv9(hxZnM?4rSKJWpmX*B{J7!Xrnl!SraEHn2kX< z_1XrN$UU@U5B*D;{-o3Nd?C492T{;2;3Y`@D4LjF&8r)%fci#9?PiVTb;4nViQD>a zO_pNi@A~EZ56ZJbuvjEgXx?@QhpCDx0?8F){^N-&u;J+e7g6MOhhz8KNtaAWZ_fv| z3l#Wg`EaNGj;i?J6wG*T?%018B+SyLjLXcF^4OF2tX3v zjBKKJ@WwOg)Lh`M_@FRZtt{sJB8C_}?`HD8K^xTW$UsthQD%hSpWIN|7bM;5BuOw4 zBMY_zQx14rW={^qx-5Zk7uerD*Vx)WP+n%+j=1RX8FPU~j5*udL$IAtjtCKNn=taX zG0)`(vo${p8;U+^Ve2sO?gGGb){x~HKTj+`RD=g_<>*T^_oYsJoW>8F*=1;?Se(Qo z7S*Ajm=LsaWpGQ&*uJ=elv*1_imF|TvbPRKO+Ziis-eoD|H0p+KZ-KCJtp8BCt7%rV=slBf2$aa(|{WWO+Uq$^MXG z>D1g!H-gB~uD5+n&i`O`ve0uT zc|PE8ABd!4*Wq9A14Vp_&VaMhG?!8a`R{K~OPeep#i%+b(IV5XgEMD=ptmk_8%Q&! zaEAz8;!Xd4;;45s&f?ejUT-{0llNc)N-93K860%>G}`LKYbVJB>gYPe7x%IwfCDy? zdHa@UKEIQ%O9eL(nya|4^9IXfZc1V{KAt;+LzxE-DixpyVx)QYfJOuy1^xNa#j$N5 zWOL@MusVaM? zfrgAFZ%-0DtdOghP4ti8PXUdvr{uS_LNC`~X|khFy7F3aqL9HIsm3AJ#MC@bYmxew zIT+&AD6%Y|7m+aCiJ4l0mA})#_yZ$0^Q~oBrcVfx_4?y+jylkU-0!*_CECLL%^dJcX0+*Fk^3S@q`>9^LhKoRi;|)mMLtl(x(pKYXWt zRDRfd7e*=e>~p4!kIIgCX`rD*8F|6$!G(Nina;k{liW`G{~V5O zh5=3!U+egp$pPt>BA0YD`*Z5PfP-BGzEPQVNj_GEU=zx>-i3l&F~M61J-o+x2c|lj zxgO%sv*T4|Qc#bwc^a zgW=nkv63pDKa5SG&+|{zVqA{?5<}Qd%BW~IPmEs$SUKG0hl3i>QW|<^K)|0@PLQifa7zHjodiDWcyku9?8a3WEfL^ydkz^N1QtT@1h7ZwtFIm6D02JLTVf~5E4#d&NxO}d>KbE}WS*HwioBHNo6$CN06dAI4E#;%OAOp{sMb%;5xco@dn9Tb&&{-H7>9JorFb9W9N5zH|)DXM8U2Gt2tRdXgKxv$Wd@MGYwZihr!P4odONV5C2x}sC@E<=oz&c8bfQPfPlRh+K`a=&h1$PM6!uD+ zNjk~&sUu41s4DF0BtnU`y2G&2HY>p0;(dH3ZFeTGjxQH1@=XLj;gqxEMu2Lg<)?_4 zjjN)@Gwn6_S;A+Vv)H&cP1yozyW;pct%Adt<27GOwhbtNIJ>P2LO8Dn;>UA&bOn>2 z)36#c%u!AK`3y%Q2N{BOfT>C$Wf5Mb98CnGNJpckJkbL;E+4Wg)vuHXWQJ|3gRXH2 z%lC4mGS)|_)0Z9_t`3v`%CnhE4Oo^IGVEC8|I`ryFOdRJ7vTgrg$+lObj(QmEjg>q zp=qxb5l>FuJuYw*qNk4bZ9vPb-8b}n5cBTLr%&!))`4Ayy%E4q=9TkKV?jY zI9WYC6;#Io{_nfi!W*m^jqv6KVcE@u)ckm*nhtEfS82$XO zIe4`ups}61UCY1{_y5C725Ufmqu>)NHS`}z2Efpbcdm$T_E3guWnW&y?9a>?Fnmtr zv8u08Wn&K`>ygy2?;i3Fo(NHgQUVbfg7OK(JwwVwwMHgV%;f?=bo^lUg)?B{OU58o z)yYh3l9D}fogryA`3V`HTa@yDRY*UN?5c=c#y?Nf`9E?=k@KKk_tW684m>m(1U2{d z;|}FnTQas)CA#YrxGX4kr?nhH(8!7UB)Z#b_#RKbUZe&h5K0{(WG@Sk%kZ$ou+Wh) z{K(t}W(VK^AUdbU+91yBn}i6nnv@0L@vLhlZ-W8&wp{F0kL&W~@y5NJ`hiZ=FkiKH z^e6h01_4KzITdz!%Q=rp=<5A-b#E$Mrh9 z8npY%4}KTeBzR_)IXsGmt6GUf)vOx(Sk<0xYCRwfX}LQ1Wc;sXD7dU{UaT6uvtHXa z3_;CbPK>m?wC_A^fWqir`w%r~K*FZNcRrxd&~wLHn^MsTlB6)-!Hg3HhYups)9ej3yW8#Ah%m3~Ga)EH5X?N!z#1!*1z`PQB3IHk5fMxXsyXY47 zzvpOI-?9jNrAe$I_zkOi23!ddW;Z)yn3!AIT7}C6SBD<%IBFEoez0B51G(r{-PUHk z2F@)PZWuU?&i-=sLt$T=;WG=f=^Kpoz$TyE@l0p3@J~%ifcNAqOgf>CEe~WhJ%UyHWb9>I4+l@b<4@l%v(dpK&k@~6v!!ut-?bU>WWFR@8>SKUsCR5 zA2aLhisqt$QF{m4Ls?DPQq4;-pCkuzU(a1kb`m*6eXxaHwD0?({d!NFTUw1zIUk>6 zGCS%d#}_971o+kj@@Hh z?Eu$jAL&5oUe?r+uEC9ixr?Qr0RfOh>G?j*mNVzxeh6REy= z$}ii^0%mpfXAQ*iZL?eed2+6a9fa|5#s91`+wV(l2`6Y=5>tXZ*z7@na43Q11xl0) zwLBh@#3UehNS^e#!ELD7%`m={#_}6ouWUNYYQV>Bg?*!pbG9!5vHVRUGNmLCwSu|n zQKLA>KqQ|Js*Ns)yNDdc3G2~&toWX$lsS_|i1O@p_1Ci>GYYEBZ1$xYR-j;75-#z= zh87IDvRmk(>rkE(KMZXVb(#u z-3V4gi>Fv0E)=3-`l9sRJ~7OA#Yv)b!mZ5rJbS5fy!<{2-&)`}`kOqvK;eeW@Sa11 z?MxdajL|C2)@W29om0`lvc4kPJr2TbNFIbrkknGdZQ(qCXVa$@Ai86t5W#vYdv>7o zsQOCwIzv^(#_Ki#Od5f2!VTo9AD`l^q6U9WjNQY9daF%%=OSc$zt?dVoY%! zHAcc4wsoz_aZ!}{NJ~9yss6;!UhH!H65VUBsF^;a`M_g6^ZDT6a{0&g(k;q#K;RJ? zpj?1#Ay-754%-LoVj{FwvsE~@g)o`J=9zmA-C-aRc4zWc7j?n8C>2+nyu@g8u%NhZ z=rudrO7oU@n3y$)_hV3K#b&uKLY(ye6k(>@Sq!y6)*4>7pQJzb(c1?NN0Mulu=YC4 z=!**`%!xCmS9G4;@r5<2E-*}NfDr+0lspe3P$ z>uV7_mltL&D|hFnWnY;+H@;0*jX_wGFn^-%0UV}NR!|YREJk$hF)hQ{I94rUN|UKJ zM7M*jNHzlpKbn8ddh$0g0*Cb*i5KAs)8D`S;iL7pPk|P{-s{e$@)B!?9v^0RjQb=c zCpv#H^sHGkP7HjoSq-_;TtKcJsj>rM#~{fA$@2bNcnqEI**raK98$5E-#=w1a;bA6 zsuW$DZC+g0Lic}6DW4Qy+s0vyM z9C~b68k9ozRv!dNLE+dMaCH50&o~vh@URLJdA3p#-e2$YjGEtdj_lhxJ7Y7kM0rho zS(_8*Px9f2jK*;u8xO3qV9-?H=PC-~q!-So7pVESCa-2e7vJB%FA0K`^$>dSOort8k4#3jUY6W zecRU{OY7EaGJu_XWg)YZ*cQy)6l{#MyZ~=po8(#k9QKj#EMiDn6PPhSM*Z#}cbSDa zNt2+2?dAb<#vt9gQ}f!}w+MWgaFAy@m}Xl2x27YPW2CzRdGx&oS6)~?R<@igALWb+ zdDqT~2)LnaLyvYIOR_#3Onc%Li$dq3I~t(&4rA8~40_&IB1d$`2$pHEAZ7%9-^zyvES~n-zGkLbTl11HztD0# z2v}cq+-Dw5={3a5z*F%57g|zrW+zfa8E>zJk(bCy5@z~}JXPaBHfKmSn;HnDboJ`2 zi}ldbAjPed#eKTj$;>saBD|LNC#oF8x;$n7Gz>9L{73anP% zL!mga?1m-6av6#zB!f&3i=q~r)*~uZQ)jh8is{l074Q_AO;$zvDK&_ ztk3H{Is$Y+q}`Xs-3A(3Zjg0~{m1L!`!qZ+dqiWFoE9bR%LwXxx%YK0{`{$nXwmYe z8EhKrIwMxAkD`t|?19xt1UfajY+PmN+;l^B>Xde*9SajVpu!WM9DhU*ITeaX?<4)m zK@SamS{5VGBqY+(vH?@E8{4aFWy9Ct9Gs4T$s695A(A-b!wSAA$cDW9^XQ$qnHH=j zpI^S%eMG@wE@U!A<=vlZf&%V(5mk4c*K)v24CFhK5Zt6xy{-i(^md2kSM*ERleU1v z`ySKJQZ*Bik#KA-el?^FBI>2ZjfVawKF+(MzhgYt#aU>`#ZAuo={h zfJ+se?~amZiX}GZScL8aXNij_CDjgfLe6_dXCxA7dSUkUDPa45OR)jL8O8$y$~~I} z!xmt!+*uMXYBE3qVWA(F#PWP#i$=$oMR-TwS^yf^1Ydb&^PlY~)Hp8r-l!Hur7B+q zqwi=>9sEK`2p@>;@>WV^*%5lrtc?ky4Kk~tnrpphp<4@ANs>!pr+Jp6#*bK`{fKEk z3dV{}a6f!V%ww9t8zWW7#D;_H{G6cPG!#>E2*P4IN~oxk9INooV<`y$JU&w^5s=#j z|Jti?c(yc(ONP+N(@-&F86GP1AAU^~AKR_)x5qKVL`zi_W34K{V)O2CzSH2m-XTI? zjc9$b6aicAzYef=llCZ6JtcK;Wf#9#KIMlWFW4CdZX0^9gd@+{lJ1{%xp0W|J|}0w zAZM`a?K8}RfX~+yOt|<58OH5YnR)Odq7XGyXyr5PfE?3NIWUffmqiWs>zrW~oi7>z zCW=-Go^(Q@kEf^TyD+J69R%Y#1K^KP1?x9ut@W;h&Z&}?ht7x*b0 zkLK%gvxc@n@7_1m#P$zT6R^L7$f;vEtNF&5`e56oJVp{ID=uRvS(rWc| zc&%s^D_>iZB$$j$O}Ey-h{5~nTTUcxIMNhw$hC-D2TMSXL-`Enm_A`kGh=?h5iN2K z_rRuDGMCuBgd-4wt9} z00N#`V&VNJO~$r4^~Kf{YR+l!9vNWkk{ zz_&$RGuf}fTz^&I{0)7)(GE(}K1oSgXJ?fv3(R21Ac0vM!Lkx@I>caoPsm6eGvxa` zldaX(U$g9d#2uQERXLYI$TT-l)KCH+E^UsLHHDz7k#HawoHPp(x@K7Ueh~?#$@xsV zox6wf*Nvmh{x}@+wZ~`GP-uNq?QtVSP@=e+h8_P@8^6Ngv&PB4aTO`#~&_wxqXV^3Aa z$B%ULyfdhNYiaPeT_y&*q8H#Rg<|+px?F}Q?(E8`2*Hri67(Qs16HvA`o$NW$ zZ-&`X1{=NwR)j86?y@do&vWRuikgRKy^KJ8bSZr&#;E_IIIHvtxpzF88EP81rk*in zc1NpM?Oo}{iui)7ClUo?d1=R>sE3{5v_Y~yxBu@tl!er4ruAhSd-5aRg^}UKGut>+ z^6{G6#%E?%MnNOlXhyUbOvuVOKuFPXOl&rFcH>*PzM`83<|r3oUc!V(5TFsyNjNW$ zMl|}fh09c`~SguP4~}95Fp_m@AGJ zTB9gqNl0de*)^LbY)yF4PRjY#XeYk=#D3x}ORQqr7=9ymKeMZ-;QXMwEI#DKC|-lg z>E@EGs}Va;*+}q$M#MC){}tK#e%eaX8L4A=P~Hou(Y^=(JwU?03pR2maA4p(S3aSA zHiw!T&oZB_u#fG@l$=!EZFail6h`G86U(fD>f=xX*soRwQM2)cKT>8d&257r+5UOS z5~6FPC7d2;on!#&>F&`D-5C-wyLqaeb_4FSO${q15CHgS0O)h$Kb2y6eQMkKn9j-X z^T*-MfyI5m>tf@Bmg6tgPu<}h6Kymou#M24b?50~TLE8=87x+t1o+B0Q9jO*B>b*8 zR{5*oL;Ah$_!A{@7OoF5pT|z;y!$ccBuU^J?kyZh8tXLxP_wwnwvyXFTnv@o6(Y!V zN&H@}HY{-7_(=p!yl3DYb}7cAj;N|%?rITFDTT1I(n=e6c%kHTCpkHK97!w?5ob%# zrlTq$hjQGH$qaN z=s&0ZAw-=SA6k?qj=^gBk!PMRd=Rzw5e)rg2(lVn2f(=iq;34#ZUT?K)Z4`rHnZvf*Z-Qr4=WY4! zF}g=jKd6ynQ`1cLT^D^Vea4UWdnGhnNYF}RL@QZ8X7WZ-T9|4@jACUT($m}iBu)H93)_7E<d419L zmWdL3)irJn@yes3;8ee0L%HJ4gZ5z?h9%lLrq2LIdD+*qk5^d-Pm}`;o*3cy$z%td7%l5Y~R!fDV;sbd$NFfNKQeq0?0@F z7l{cyN%gLRz~aXkxeID=;07bv@Jd_}4VLmqqt%!?BJabk6G^oPGvjY+k&~SvS#zs6 z^rF#QoIrm~(2Y_%H*L8s4C2Ap?glTen(yMfQM8rzQH?(B{g7UHf%;>RB$Im{!{2Pf z_$iBnD3c#ut$z;I-<2!1xV*TFb1ndr{Yf0z4U0}ICXa|-Ewl? zeSbbhe6}^FB$TY1!*1UKRG@{n3t%KSlX4cOJ5IBFc@!*RRJ}!8RjN^qB&2;jCnKS* zb#^W;SA@gF_aLlc-=pAAmrmm_S{bu z23E0}mdfGUvGrz|Ux$W`t0lNjO5FrLd1Vp4A}kkRKIfTKa*f+Klm_UNXq%sQn54@U z{N8rj0Tno3J9=icoZ*M?xMa*zwk6h zw=fJ^ymw)RIJ~eH<%9$8Cv75{O&Cd}28DP}vU_)45i+Wq zWuxjCj;bfAi2pP3;Y>QpxxMQQKgV@qRiHPYc@;V@JKW7xzp*GTyrHtMKPjnr!;XA3MfZlC#GD7L-cW zxCrR*hl`5EPyjlBI7D-|SQFdDktQ02Q344Kbc9zGs8)d4%w%r4oV4g&87N4{7lRDF zH!<{`Z7`gMP!lnsjL{BG?S#XcW#$;6;qhZhO3NTK*t?171z4wAucPL+B0F~Abz|ps zbMNKinB4f#1~Gy`Xx*ct`C8?>Py9K;yPx`@^!+giGTwD)8JrIzaWqJk&@JR4jN8ku zOnciFs~&OpmHXY#4v<300%G;)r+f`b{13tkkewkdti~Q+MP5R#*tK`Pz4dw#D)Hq0 z-yBymi4SXu*MoC6^xM}+LJuY3Vez>j+}76k-mBg;WXf&8pN?lx=;&`?-P@td4x=+s z)8l$l@XUhCvbJ7Gjz(mJIAchJc7<&*_c>X_^FfR*>NXuO4d=V!YiygshD&V%6n z*Wc$`Z+Hj6f)bsS_@e#{*pDZa%=ZkbZA^Kapnb1A<8sw1V>dI-FryJa|D*5ckR2EF ze2u9(pU^K^2)H9NJtr3EJB$3-Oa9f_#@CSF?y}D?3-CjGjR=ffY+20%O4)SEP@y^`xn#laS&Qnt6Lq4( z4z4w_Dj~@@Kfaz9OL9uAoAm_2F+{8$?>{{&Hu{cBqY)__h$HGe%5N}<9by9VjXrHl z5!NCT*V3wKgc_Beh!v$lz26nJJ|OnMHmbIqCi zScoA0ta37=Ayl}9BUlJjBy^U%TbMlPU?izWRN2I!n%_ZM*5na9&3$gSwYtZr>hy|P zP(QC$DHY=XE8p6mLo*$pETbsdaO2$Lyh;$PA-^I}R3Nhauo1oV%xQpEP! z8llWv`2J{bF~k(^wCVgkN3E9{;2DZ+gb(DtVmVIIu9?mQDK}Niz=gEup^BUke#7=5 z@|c$r&=9F@zY!me*WxWO4OeW^hm0ECMLVvQjVpPLv1&THC%b-<;|D5S`Xr@qPH;v3 z2w&BW*n#1Tcb4gBlWQfK^o7A(!0vlGPw(tCCj$RR{t>*Y>{zZ|)bN4K``kd~IF|@8 zh_m}~@i6;A4Yj>4Pp zCmaQORAkcT1pbdOn|IVN97$uu!S%^Dr5-U08TIx=m{BI*WHw8J_RM8n-qa=)exXB- z`=x_dJb!fY`O4{_D~Rf=FLEj1^o4(b+*CWd7QHnNFf~0|E`A1|aoLwOphvCSyP=8_ zQJOV{U6Iy_RS<=^a?jI;(0uXROh@AbUg*6)k< zGpeYU1uN*J=L6YH_~aqPT8y^igw>>|aBqZ1CG$I$7WRlbT%GZUr+_`U`(;&3i#s`I z(->?Z)C?_523)YY;~P>$977Xwl<~zbjgh(rbGIaj5SYxRvInL1>>63Y`mk* z5|N$)9H%f34+>qjblyI5{o#vI4=P?7cwPoBvUSv%v*kRpd@Z*Rvb!X<5~cS(+DMn8 zn>W7_pJFb*oq_n(^#Qtel2(%D^o;A@%!+JW1~-es#?Ezd95MS{#uM}49~^3x+>~s( zO$~JYgd}w$;!dEm`VWWaD^qk^W2F55eJIn*u!kX?9&CZauq|PHALooF^(TPz(z_z` zY8+AL6S+yjcqxXS|0rr`Ubrejo8KYfpU+$viJLtun%HGg^7-*W#P-zIe}n$|%S3Rs~3zx7LapE>)({-V_6OS0Yt+%|_k zlf8DIQPW9i>PqCnJjK6a!>72b&+gu1 zy;H0DVGVU@@3n0NY*M^4)#b;yiP{nihKCs>Ne3L3y=3bjc8g6cV{NtSi}~~3Q!|{E z6*@MMbM54-GLPQ+x#5srcA1Q2I>0@cH0K%QPwrpKyq`klh1WNS`N)bj9v$qz=BA(^rl*O@?Hx(J2`Xi15fM3|DsG$#+g9P3j>is4se+eQ0Lfpsv>lZaUw5>LVD*3 zOV$w*SSp@yDQY~D?b(N(QC3W|z|SMZxH#*%?#e6jB1mO3CTXfkcV^yO=ux{)xI_bM zFprs;$RGD6n0QU`F@lMlIi=oLXO+2&#T;v=ZUrNwI;hDZiWK*%%Tnk!iU{k~Mh~uIlg*6@)_kz0a-#%fSH*GWtqCTqnILJL zkkHYpiNaAdHUf<@xX1<75z`P!XK-iF+bVGc$ zq5A?tR&3g@bIA9D^D&~lG(Pa_NQ3L7%UY6OQZOdNNqp+WDD4*00K6#zN_u-8R>d}h z<2!+Ql#@JhvA*adKz*aMPoI5&E;DB&Eg4sjpNa9-!GBS`+8pI4*IgK!HscZWh6M?<1A+{$ifLQ3?&H6)XInIEuEN z?6JFj9xaW;v`yYzJ)oV4f{Yi9V-+;O7SvZy;F5_ie2Tsv>VwTrxaFd`W?iK&+|mv@ z{}0r*e|5_~!?AQC^dz4eFP3<&!wu>e02yw@Ryc%L|s)=1eqjMe>#qPU$ zA!~c6U6}DEo0}RX@4D@uneQyGr%LarULa>{XOOja6<&%7Xo9+|(@is#6C4U37r1c0HSt|ajuUt05pAtKkJs0*UZJuf>+=yt?hy~2}ilY zT>9SC$*c++a~dClatx?>IyJd?ji6S^;RCJC%sDv=UbL!K9U~?KPc>e4Trt`R`U|Gk zDD;y;K_Ub12G8^tyml^MDYY1hX0L>);K2t7s@C1AY!LpLYbJp79i4FLEezYCwH}gs zH63Nws|ox;Tx5ehl|#xsDw5^v{G<33x7hN*iE2!HeDaAcl}ZjPGy5la%fUA2JX?8# zeNWw%<-Obr&4f!5xBe|UdQgpHJ}COCbT``V`06)uU~GX4GeJHevVY?C25O7QQ*DcH z%c!UHtP@lv3IwkBN|--6EjdeM(*0 zAsh}`gp93p!eFgU3biONPtGLbG7I}(WaaEH`Fa zkIWF2cQeef^XW&lrEJ%LODoHcd}H3{?tW(da4+-0m@XYKCTA7^j=bv`%v@tBhzE`2 z_U6J#MglN27rtO8w_xWWl|f#mYE75%fy(Lq*Mw+5_uUMZ>n@P9*JK}zRveQpgU0ve5f@gXB5?UA05eGa(@j}mi4w~kdo-(m;m zy!pvClAe-Z9%7A?%zh#s{}PG{61467L>|LadxNl|H{St*g5p8`^2^{FGa%oX{Qwi~ zl^ETfZ+E(?XI6!%Uf+&8tv_WO+H0%)vsFa&rxb`l`>>%`EamuAWT2|c6HIBjyTnE* zsOAwTzlWc_NQU+z9QP9jZ}9}a&co2cq{Qy;8+{h$8zo}ur0;(#Yk352B`4AQlH@;d zA95f=PP`MwJ@xZ|u2>eAI?L|ItSnarfeDJQ9FqtZLGpJ4?`Au}=bIY>BGR%h zGfwmrK{V*URo{Kr(hT=FQh3ao-JnRX5#P~dQcVw7a|p0i&AA?LEib0m(%M+KZ@@xP zzX~2zq**{=>oVFhH7e4xUL@z)PLR*#^nVXu6Fhytls3b-mR7vHL~Xy8;qDa%yg7#@ z>0pvPg6 zt2J2ept4yOH64j5zySf`WHE`W`BVkig*}h)5t#4?)W#G|_1v%jf0tF7xIJKW5&pj( zl~*IIr~@buxPh}0jwJcb36oy)^ArV(DXthI#N8xqDU1|i)FqE`&Kv-29VKL&c{uX( zwgAe(b}nIQn4eLC5FRvc4zKZD_$hK7F{9-*yxYuySfFbtrU}$ zFj>D=PS~@uFY~?%-40B)0(_Qg7w2MjwxLb|FuQ8Sp7+X)mKRU|;BBkC<8V}a3}#Ub zPRrn(F#@JS?&aMZu*I%{ zQ_p$;I)A78jX?d6mKRAw-uEzP-_$&IF5oa*UE~RB${D|?EpBrF%kA)7+!I9LNq*GF zuHihS`Fjci3`uiiAmd3bOCej*42l9XN*=aGT8$sHrXER7w9(v}K^g^j!>pcQTH5zP zn{k>N!J;OEq%EoU+GKJvxgyP8ShAd}c1#)swcmkE1NdxNqLm7zCYMDRU@HY@axJZ} zl0o_B4EPCJBVqi63TfuB=;sulXh>2*bcp$@MH0c*E9YR*e;$1UqN@&?knP}s>A(C$ zFFKs#%GC$3T-<_fX&wz({i2!R#MEZSV@gPpF;f=>auGiJ{*7#3z?RKKwsX~J2x9YA z^RY!?c>i)ON{y>%*P)Qye3QP4(CU>=R3=d;2ub*lB{)J|gcE>2^zmOBooTVLen;B2 zG69?!%dSV=j1Cq7s&LsM7~XkQy@+Wg=;1rpv277WSemAf(~u@&9MaERq{%bdVW z_x@Jc%bDhNdU>-nNfNv2+xK(}@pA#@s{-45HSv^MGYDL;vYkW78UWHM6xNSIPq~WD zZNl0hif7maKRFjB^tIeVC)2SLwYm|qV^2*@ZOVA~^V0qlAND4uzy~@jYC6xaExQqP z)vpj7-?wC|lEHnB(GAvO3kEni+HJi<6zyCFH#k999{~Va-?SeAhv>{~wkO`{$j3AtubgX|T z$Og}Dsk8hjNPK$|Zpuf2!Cwum^ZDS3-bNjxuv=H9`M~m(8^r=7ro7(}cjY>p^eksD zVv;;(2DL-VbfNFrAqe02DooslH|S}V_1XZnY`TU^okOm^X|`q<7i0scN0jR`$@XC3 z%9h{fKz;YM!=77evR|PAjRET5Yz)3+5spT)$Oh`J4CZXv0Q=+&5~mn6v8izFqw?N9 zh{FNZhaz;HCFkU_2ME-nz4HYRtgmGpeR+@R2F{>tGw!H~V#Z1CIF>!`3Hm~<3`lv) z$w(n)QH@8|g*B;xk1bxYiZ;oA3a&Gp&S8wBA8X6oF~f~dWO1BCuw}$>^eLFE(7c~X zFlQ`~ic8y;FhULG$_cEf+o3gy+w<(ay(Xpa1T$>?AbdAPO8=fNR>uVC}h2? zT|ko}t?I}Tc_|r*6nbGjmg0hMJ*VBKezop&Fn{qZoeHKcHYuV6qT7voF{6o~Oz*PD zLM7DJJ-XEp_5V`AlqO7VXfKb_(}B!U3?NPe&j z5T**_=ZnTLjQ;(tUJ2(48bB|oSLfP@);hls$3IQD=PQiy*;}wxAtA_F$?No3 zPJPO_GG>GZmC43xbxT)gt5gbSn}E|#LeIPH?qrU?{}v;O>a$C^P>jE-!HiRP_O2Hufi9UzN}#4We9hsV{^ff z&novI-pB8Iuh*E+S42aKroMmNqP=#+81b7eGb0Yyc*1!6wyw>Q@d;WgTea&8tF*bm zofi@MEb+R>OUZyLM@vq7}^4{L&wRa{~6j>hN&k?~SLX3p}$ ztKZs#)(iPzbY7BKwc9Gox{b@+H{*1g-%#dFYW#P8;m!9&+E@#)JmsUur5vg(jM}fv zE#L9S`jb?>t4cXg*(m6IX#W&DXJPzF^(^?YliFE$|CdIOW-{vWb*fD|Naq

O#jA=Jc`)SF@!VJ!4nbfH%FB+W6)Rd_TTj~T_W3{JhVt8S z@MIbYSeATQ0m<&`K~zhrEczh@q9O~TD>{4DPRxd}1?Mr!B?6#BrP7{fV7yevY9L#F zKJV1s@8^A0;3P!?S0Sy`*-x|>&ev%GMOLSoypMCMzwMv)!7~C=dx-xm!`Dg()TJ6i z$3@ytwRh2EL4Ti`@AUIV z)Zg;NDR3cXoc_jak#44M_~}$=&>JuZKX^NRo@vST1!ZHY?lVAiZIAY1_b7uz%^oc_kyzfw9)2m*B^nlc3rsl{syv{Z8WFnrNl zZzK#Jj9RmQx7Gt*y>S)x{cXjol2q>|d2OjD%D5i4RX3>fF7%rpnYL1S`>K#z=IIcH z^8HgPd8yO*i*>#ng>&OV@&hHQ%Jb)IVQ&+6}`((?g$x=y&ANo7p^7c~RK+<1g}~J|${H0gXZz z-`?1AE(OPbifil{M-qVYP!K&#po=_=%6}`HK_O5mbV747enk^ANcnZ998^JI#%APC z4?8Hr^pC&3milfhu-4gl)HSdZ^xi8RXpoA|92{JhXPy!-teG0oWf?OQ05U~^kkfvQ z&X1X?+a7g)=D**CjW_L+%ut=C<|&eL9@x+hJ33%wnt`&O%^+!4W$^Hg48?uOOR>BO zKTF(j7ThU2!{~!Tqr0@YJHGG>`HU7Os`oiQh~dPJ%b!}yt7)RzA*hF3+dHR>J{Wu} z&~x#0J(1}2!43Ng9k!qjH)yISDmFy7WA?yf; z)+6UxwL@l9E9*vf*rADTu!5NC{(HowJdDW8&I;fUf#A^)4un5 zSZslv(!;;Q5~*-qRH)G{F^@0fd6!no<+!4!Z&?RGq1WNi$E2l_Hv=*LN-uT_Ei>D~ zvu_->5@g#4%`o=Jsg#NFhe|=K8wCGTEZ__zVY<}LP7{eJQ_0Q9O{wzAn1k;gWq0

i1MwR!8wGd9Y(&xLGxA{Uhs@ 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

Ll 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 *a>9xS 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�IzdrI);q3_ zu+p+M{2R2bETh!0SZ}huXwaGfAG7BF)?q6>aNP(Yu35J+e)yY~ceNwT)9ElCC;)=|pNq1;5iJ8=#svH-Jn3euFN;f*DL;}vbsco# zmVjcLE)rU2a&l1@>-A^3iQKDQ%oZkg5mtzOrcp6{cUW`4n-yVBn<~YJf$>Q54lI@o zxjy~HA9A;_M=24C>ktnrV*002yx9Rp;+f}TxdcdUiyot?Xo?iyTBR`PM#%cj`U_z6 z&eD6Rz}@1QH6bIWr-+G`P=rgh#UD)z9WPS~rFX%hZJ90u&(-w<&v_&VU~COV2uqZZ zfxCm+y!aQKEq6c3f<#R0+ZhBA`AHL%CN?)wSHBDa$uGDf36;pB zVv=w}4x>qMV`cJV-nBZLSq4pPQn#2}VfXDZHL@=Vj0I-7!8{F&b#dztW-`mGRzO8l z5AZ1IPWtsL#%S6xXbX^OgIeFl4~t8=C>(@Z7_DXIpvW{rBMxS@Tjj+XK+U(i78$cE zgT0kAH=uR_hxQ^V|q16`LYoTYjvAV@D+auW5))n{&zmP@@JML0W2 zG7n`5l449zEnBhl$OHX>lq6#EQ&>3*u8$hg4ysf+BTLvNe3Wy5lDbe&6SF!UmMF+{ z16^ydcHDrhO4*On%DIJpf3whY&M+gqLXI&>z!(HDtj{n4f(Vro9*|Qxqe4jteP-G; zRx;2t)LkMn5{T*t!phaeWxg=Q!_IA9v5XU40=gu_|2!gGD`I9=%_o9E`0_q5H^x@Q z&%ArT9=`sE8gNkaMRBl%6DAb3HkjP*5gb(DW&s~n+%W({5VpwQMip-KSE6P59niRe$4Ne*g{kH)p z)YYpSry*Ffm~A?Z7}viN-UD?2pPa!%!)5k=+R_F0hl{^Z6c1lyQ#&T z88!!mZ_$_eE29^Bjl=Zet;qnCz4LnnLc-{}%x1Pv4iy&30kcy6P;`G0-p+< zF!sg_L0XyM4iFyx28Ixe1Ew^+#zBv{@(KyPG~*(9Z~B;N>42$m_OV}f1>2)PmPo?w?@H4y+>xSRUS|~%w z6dFR#3#-{pbBfTzm$qD?ZO`;I6+1|BttXVZnzB>IoCz+=2B?hy%i!6M<}bzR{6ywLsi!0Kh+EoQ)7B$gfAQVnlL?Hmd%Dz#QAoYGN}5~i+Cr} z;NALz-M$0#MKZvRFE?uoER5K0PUkoIxW&cn_bg2?Gk{uKWp;9qxrLZksMTIBfM%S?Hww zKo9VOkRw87_AXjtI5a#TSY%6~{O$*Y$d-@yjDVF5+K`q-BvxSh)Bs#3pZ4Vv+ZGt} zWkREMU0NZsMjbwvLZ|#EJU8q>#=#8ll_u;{%-{8Ih^fdvlARujMA?7Qc-xiQ9{Mon zN4P}CY~S6rooRQEL^8~{PE42>lr&Au{H)jDr%$K)SDIQ(p#EsDsVhx!eFfZ5k<~0^ zX9EUC>59_=9@``JUH58TmVU4>D&5a*9UG%+QTe+0JM>l?JpZo1nu_>PdrmTvl8G;@ zXea(D&EeTe;M)?=tbGs)P*3O=9xJZJct&uP>YA@efs@7QR>#8^9xvV=Han?JeczvZ zw&a(J*Z(G@szw!;+|4Du2MXgtMW2To&PNbIl(rGgfv_t(=G4JIG;BWCT#xoc`l2*o zOQ@pw4Uv2q`_rG8kw-0#%`z(JX7K!v;E1r3bN%1JaXkqMwWyn{Ig0aRgLK45_JI+K zb6b!#SCU1uA^hgyZZnRCX$dUtma`qyfflb-bbuyY!b*euI}{R?^ATVyoF(nFXuO^^u2 z&s3+PI0JNIYe`EjukyRYN5FgsD1D<(j?t_{xXr$!lPd;9gBWIkq3|tPunARPkmoTQ zSRH7Ku#1_W{p}m^$GfKjK(2}a(Lm-cW#>u=;Yx@Q{yS7^gDt3S$rH&ZZkjel4c6h3n!aJM;6)gX*K!o#SvEY|=9QcxVi#GC z-7y5!qe94C%^Z9d4IBX#xS2-!+L?tNt8Tk;zdi;|?RWTSz7%^AFmmLJQ#qGZIIY9~ ztTe8#NUyPbO$alj1|R*D+&a>FX1~8U_^C^o9EaCC(Aj;My+Zd+Qem=*p~3V^Bz5uE z_1t=#xZoqT&L)!cs+|41FMK?l2Ramh2?%O!&ky~X^iIeuC+mW({5;cR)rQpG* z%urCr-BuWBAzD=Bcke*RgO;n%-Trg-gjdYlG~VC50}VX<>1|>I8u5c(f*ENN_?n%r zDupuN!$tMuc+ipfK3d9MbL(fOpe#oj3T$&%we)zcB?WWV*OJd2n-+k|$`ukOcgbK< zZO4i_>Y%eX0AWo5Q2NePywXkkZ5u-nBZ3Je4hFcAre|~ySsL&ZaEmRHUX3yWUH)Ou zrX=6@erJ0$_01SYTH%7fI99Anvw~?dh-=7wohMOw^!F#5K2QPL5qLDzEYV?UKFwR} zE3Toa3peD{30Vuc3_v9LY}9B&7Yk zip0KINNsk?J7nMxnHmBsuP?e&Ko62|OWV?_oxc*=>b`B#>&yGVj2&Rj)wDf%;`cTQ z&IBrjyNd1{F}88>%z3nktb!aqoO>vYC$>zFp}ShaYgg?4x1!`vXeE!EVqZzu^4W5+(xH@epUpd7+P~k8=Dhh_6bG&jeio_08OiT6zgg=xW?G2M z5=PZZ%SBPp$CpRI9;7@^&+l|IEzb;mbcCeWt_Lxl{c-y>7RKu z2X-arE?H?;R(L+C?7c_wVeCX+R=x0KT*YpPdmSt+c=O9e{ zsSaV#=OsfcEG&_a`Cw~E*{-5K%2CV(3c8Yj87Vwa>SJKGEBLWjlj)y<@@hpF&e8Cf z!Ar>giJake3gvJ${9Ld2_w|m42?ZC*ZMcHM%|y(pnIhe;(*~0vwSH)Y$08VX;p)^p zm_(-}iqQS%igMccjve%`Hd6lX5zbsybn5b`?5-)ehQQ+U<8ujIYuk{twz}cddJ9ks z1(bQWd_kv(!~MUAOl!{1Ei;4Xc0VgBJ*gs~+y4VB`mi6!KrW1ljDIIJ%xSo1ZY&!o zIrk;oIGRPG0O&rhy!!cB!F5Ss4}N5MVGY@@{xVMPGDBNiA*H9hk6_@DtS-qZ8;0hQ ztXNWfH09HFCdYb2)}CQWXVhP_nor$d2^li!60o*)O?nVbjo2Deic0R`c(_dxfXDe? zt_#f%#$b@STppFHS@Eeaakx3_4CpgnO2o;W7fn-P+zH!@9tq$s=qZm!+Dw2|gJ0O` zYb@d=t}cjN1FA5Bi^5=BnM5&r6EdBuEM?ArNPXJ^x(V6H#fB>Q@4+uuP=fsj@gu?% z=*F6lXsEMgNf^Bz_b~g$^79X+COpoHX(7|cIBlPzK(EtoCEv+Cj}a_HtYJ}MZrWuo zTY%A3h-!YK>0Z_P)^_D03H1hta4kZ4Mn%nXlMo_TGg&!NZ6%PHpJV6DGlg3 zTI*;5mKG5YvYFy!VpN(C)$Dvw9wFmdSA^l>YKl?&*yA$|nr3%TmR~Kj6cT-t>xmU; zMjC}NTbNSmh-g*#&0*8xBnnkr8hSxnux#t3QY9?2Ln8ad%8vm*+7#%iuwMTh>POEa zL7cHYO6hl$e^=+F#m-o>%V9g&zUSQV16i_?v<#lEy#L0~&`Rri0=}CMHKVty2l9H= zUaF!?^(@@efxKe4n`4G=IZz{|jqv_jWJzuaFR>q*x5PoKWa_Afk-a|$H2#C>SW#Rz zi8niOo7Ig5dv*E_HnRH0(LtEkUkd)TmF9D)`mr#VL$66uewlGp3a$J)v|o@F2C~>Y zte(MQEUtY&cayR|dkp(pR){4*Y|e=lQP$UylcQ2WTN4sl-s|3)B-OT%x6ue{xHoQR z-|($CZVQSV1V@068${yJ_Z13i@foM2K?fAcv%myKqVJN6XeLxf{)nlv@|Bl-CK4RR zC-!c$1JvBtxt(q#gG7taVdnz?CS-IfiW8Ah1a0`YqxZFrWC>UV%0|_`ztRkb-c-5Lbw8e#m~{=S=Iug<{T_`#n^s9X2)i z09O~Ko;R|xW!!4d`~5SN*TOhm4q?-R@(B{`to)sHSKsGQI$O{^%Cx9GDE&kYu9$`P zJz;IrvSNt;(%Z1v-;!C$R`vFOz0qRd^}{yvcy3A#UkFhf=@7>1wr2dhD`xKqJ`YD@ zVSw+#1=ur`rp>FcRtCfR*zc3L zAE8`&<5MQH003C_HL5RXd6w*}PfXK`(zgSQ_*`a} zX6WP~dnyjZp-`|u-=sywfYb3y|XOF%#qu5x>g)b z%|q{NZPggLG8~Fy&BH9Dud~;Tv9d>SVi3QYt!OIqemb-VKGS!-vVezZ@egZk-kyJq zTj`GFM5tNgopdI4Y@~a*Nz}3Qb3q&TTLL9KFoklKDKJ3=lSqczFphOdTC^}xITcT> zN!+Jjq0O(I|L*P&`_jf_fFvlUE5elbaV?+@cmb ztflqQ49Ou(<(xD+k*iS!b|OZGq?!nl{qsh&FMl;tHB5sxN^dGRDmFx&3R)_+fnXcO zr_F}wlujv3StcNr_{k<}7POqnDGR9@%*g2zJ+`5r2QP<`wS{YUH0I+sep9fFBO@%W z24s#}7gd3GDLj<42guLnxURvvUU>+@^gX+pqhJP#jIwwOzK~^ZwQkmb1#xU+sd7<# zqSw>;o>Um<(|)JLwxL%)str8wh273p!ngVhUjtRg!Acr` zX5c>Z?Q`9HyN5yjVdlj-`^|!GgL`(i~A9=gM#1>B7 zgC=ra#wHvpHClf0agWC0AY-4|;tbNSxwvhUC-Q#;jl89CYwUkIYD8i-qunBT(62x7 zr6Yd~bR51Xq3f5!%(Lw{oZ+O^zX#E)bc3Q<=LQ}i!B|?~d;lO(`yC$Oa4V4lPVC(A zdF5JhOr|1dcj6t1Qp7~AXzU2fvDBVS2?;J1A^0g>c!UOHm&z8)-Y*oOV=n8We+}7a}QO7nK&t^?fi_LZ?mrppwK&75h)Z&N;mcUKz2i01}T*tfR+*1s_`VEYPEjZ`kRo-~MXRuZXY}2wr_i5Az0j zi2$1HfF|l!stWDdy6H|=(-&;2Kiu97U-UM3e{v6H{sbD|1(>nO2fWasz5h%o#AQnTx!< zJr-id=YS?o-n?>`mP&xScek#U}CI2^qg(aQQgp&Aos@!LuRfYxneKQq{hah+m)Vx9X(;Y?J@m^ zISuy_Gi6IqbIGliirfUy-ee>tET)FZj4k6vdwfA)Gx9?_*`1UzLbY=5X+yed_$nfp z8i{d~Kn}_F+&A)7;tLaO)lLL2cKJ6@>I>(fQqk|KlNQ&nU$RHNiyR;LaFUdW?%7zJQ2Z!~0Pyb+RG5bN zeV~)&X<9y{0q}un=iFv(R=B!eQ6ca^(m@yIg7l-pg$f_s(cPfAXfjcbZ(C@le71pb ze8$P>P3`&SuYdyeIpkgTVWh_G^`iVr3rMijD9MUy9Dn7^K3oY<5_>qXOBjMNCAS5s z_Kh_W=f?U02A3;@ZrB`#-em;5kW7=?C=6&D6n>!X5HS#m1u<=}W&a?JjVw)6wtY+L zU=Uf{QSX^lGtVxSYI=7@Rd{T&CTpt8%r1M+|e=v z|BWr#azB4+aken_ju159y4@~Ldg$3|>E)>;mG?e%csDo8SySTZn#cc}6(bgW_Ehto z_za7QSHBuzVT$tHws2?4s=HX~T@O~RGQ8%Z5wt}l8|gBh;Gdym(kHD z`f?=(a=h)UZ;=S!zwg>Oc;{ggYTOTY`;0i&VZRjiC`o6lDi&X{6 z4=t6@*CHOM!jf~&3K@IDeI0z7{}_443{6)&($yWhH!{-eRZhDUNU>v*ugR+SIXj7FOIQJT7OFiPtS?;a+6JmcdS!{ zGTZCrSNb}ZyqU|5A=4%On$b&gEwIrifs3dS%b|>}2V$*m3ft5462^(Z{sgHsJ*k=O zM(xD1Ls&D|{WcRBI|!LJ8w9atcd{SMc#Uy*dA-Rf{PnsjaFi#LditDG&LvVDWbd(g zM0kOS#C?kB!(Br_IniMEHn!_87u|lHICg6=sjb zw2Ol-(`+0jkurUS=1b-d??Smbz-lz{`nhRlv~Mk_H~0>~EG&3&YOAY#FiV=sLS*r2 zq;C+S_{~sp-_^mtvC6)pe3W;rY}2;Z9Xk<-sONmnqE3hX6d1_0x3shkQps6hsQfOp zpoBv@KFpNwvtK!cDT;RVk15o?LN<=YCi9BNvGP+Pt~`T=K>mA)f=~SlqUZ4vd8AoM zoJd8nx6CQ2@F$^V>Qm%0Ubu*v-;bfG-klD#(QzhnDJ4wtM4qp!hc zy^Irv*Pd}l3f!(e^_PT#-Uy-!WtS2rX9Uk+jzwISfsQI}hInp%SSys1XvjhW zz6zxC0m8vVp2H97G}&w4u%dqyWal%Uk zaQRo-wpoxs0D1^2GzOo1Vy)jKF9Zc#J%BfJUxfby#u2+s=}m__GSEsv=tQ>jQb8;q zP&VLzI(6=&OCP|14@Q?7*n}!V%o|PVldn{AoyU#D0i)Hgm*g+^wX=la=8vJ6qZ{)r zBSAoKh9osw-G^lQW&NV*8>rYj)fF`2PiEj9>7$u1dL7CuxGolqdq@|#>EyPG$AjW! z41Fk9OK9opTm%^A8{T*2d7Po@0OY7*^yExB(fc+jV7u0Z0Vo7uw!HauA>Ebv`YzNY z(JtocVUlKswg))_*OuS~D5gj&`ye@Mp~HLw02eqHvtJEi97=CJ+`BR{0kDhwC-YI6 z^%i`ZBHH(VQ&ZCNyH?w%E(EUi8Y^p0hvOC))2;~k7E6B`91Qr*l2Q=~6-@~ct$I4` z14zf$Zv>GK()~cSIi-!)M5EYOh8*Q$P zi6RlUEgyIpy5F5{f$sj{t!3gE6JN$qsqpc-_H_a6!k8RE*rgIUhq1$5$Y>>kNM^J! z0aA2E+tjJMu{sn<5#PH)X^*POd0b(<+0U5LR{Gi`~FK86cUBNUKA1&wr2y>Ii zwYZOX`~85R~T(;J1_F6`ma3oyPQx_J1oVgZ_|P)e^YrK zLv(Z7iB28Sn`3}IQU8Vgz3<{@$l8!Xc%NMVQ_V`i`gBc2Twu>B$ErK5;dV*HX6TwJ zW)U5L;sGE})_|gazwvAiEz#iQ?nejBmQo2K#0SG*!q@BnR)-eDDN@e8IJbllyd(x2 zery>`Clvvda>kVzvaduBxtp3{1hDbFCqZlL6O~a$%!08>6Y0af8SSjuN8!sfPYuA&q5$#pAA-@{ z&{`;mg&-Y9)OaS^U&|yW6SSgPbHr7M=rY?Dhi{mdF1n`X1$5Em%2e89PapJ9A_wu4 z0?D6aObcXZwJDpEG1K~rm@8tvDz$M&>9Od4*r}duDoEH@d?*<%B0l7bhY@B>n@^u| zV&@&2=$6@b`2lPa?dC7NMYVW{-^{jpgtt{D_~cemyp@I&S@lLPpb<10J2HeaH+`x3v@aLl^eLPE~HtZ#FSd)hB!(l#Q;4a2zcr)tED3SVC96Dm8@Fw;2J|Ss40O zEq3*C0Z`y$NO8eTn;-gZ2jVT0b5BCV5Qw!wEzGoCRU{9b>8N`X8toX06{}3k5}Xlh zYJJBl5M4tei4cfyO8@f0fKdqA4aODJRNIff1i*k|yp~vMa6K4GBG-4t2jLD{1dn zrBLe_ttHQ#tcDc7H((j=&2>i8H=lAz^uWWw#p&f}fP^GpUwF172G<>N<0D9A zJBZx2z}%K)@kSTqxm`8mtyGn^Z_e7Xmbw^$H*&MG8%Dx`&7?C3cw{b}FQT^inmZ)d zCal{!0>0OcqMf*i`!GMg4rf5^!8al^D{?@JF!$ifK!V|6U1)8sQo(}?@t;U1vkjub zO&MnZrP2~XACvXT6h`?hJ?dkEl*ke@Q1Q9Hx_+#|CR?Y2%LJ)E)4V7>AxC4q0pfNU zp4cd93n~fEGZtRsK#toRACQEI#;!yYZO4AQ@cA=97(?k$%ZSVD3VT97kOY^q!+x{# zT;+WMj&#`dl~!m$jg6WI*@AQg43ikj%5qdY0WhJ+hX1OXsI%7cFJkii$jeP8p3Fs1 z8~hImh!>FaT;Fv)D)m#Pf*kW^wC!0(0#$iOXG&UmkEeCvcqm+2gC4&|+Y!jTYZkT^ ziOG-&z$K4YZh-=Qx#g(BX^_RH zLYAzy*h2DZI!kTbjhv+c4%V)BMS}4To&k_=(@A_AO~BCal{@C`1pwqq)Ia~FM}}o; zgkPv6<;T-C4b*-H|5_k4eC_%V@l zJ*7hZGBm@1++WLZ=_;wx<`d(@vnyS(DmVinOP>C=Mpfv?8ncmfR$Q*`qk~d8I>){H zkfyXnE91I~DC2f-;}A!V2PgI2Z=ravKBYnhKP=^*8Dd5rX`iM_p1EUBJ_cL1a_u zq$U{f%kWTs97N3P1d|5@+Co1bQN3#ioaQ}Y8X^h0;Te^_8T-6Px|==yu<#f9+J8X5 z2(rjN&y0&GP)fxx%)j#V4qmukyDh&bf0C+f0RO3!D=lnZ5}gK`SZk$#ClBdfMV)m; zS!pgFM$Y%J-}DtqiL%AN3y#XITE7LwWxMISeqF#TGuj+GVpoEX8f1G~EUN3?QZeqz!MpQ-!A-2Sf`2 zpH!TxKnp6)v5n6{Ll}$_HNGZ{Dm7isti!XrRphJa5At6;j8a%S;&4AwMQNiRnXeLH zMB4r6QH+~Kc!HVM9et6zD>*+EI8kPW4FLD>W(Ma~A&=(oLHi7)xw^KFf@gtJmURL` zL!%jJcMo&+N=CdKqe+(r{&Ftcwa)oTD4{7jL07+52yD=6iPxPRAfj2{?7*v9h_GXG zI^&|b!OAn`B;e-VOmKDpzh;97zEpDBH`f9iBrAnU1Y+Px5s^~Q#8i2x6rEm={Vqix@+ZtTV(=G-PO@iTgrMcy*?+NW*9H`cl5=A6G_%zZatI&tH$;Vd%{ZUQxydO_= zjtM>qdoxCN4$btVj;Y$uIK@%Wp-Ym8sg_@AN)DrPEjXk|Mgq{D#|a_pS}8!$IRdj{ za4~AfNh2Ome^LA!6)@@ytl?HzQPFA`<{%yxrSMp3RWeU=Oxm?;43;>r9p+XjK3F4tRXRm@x_ zs%YHAhxPMDK&(rkwqm})5Q+?3bt>ZtY=*B@3^^=tUV$af@>vbey+aRLU-%K+wKFV+ z*qo5>XWCA7NDxrpT`MeB>bvwG8)`4{BLn5rs?iA6+Ra!FUa$XRYR5I62RuHeowEKh zJ^;%E2vYwrmSo~$Cd-3lD=!|mB`=KY_~*eE#gE%*(AtjEV@x4VaG%Ysqmg25bf)9QN2gL_HJ`D| z%6_EUWuT^zn^FNHx3}{F%N5WMChaC9M$9eR;=Tbo;uksR?n2h}pJusf(HQ%DdNam6 zS4>StlOSLSS;#7l3h}m`Fn^Jx*8L>I#OBq0nZqUw9A@_#G#yMVLqt@#S1kmt-Bq8~ zhABx@Cps@Qyyzosz)j|ASe}xc%EN|%`V2E)VuI<`pA@bZ%-ziJXiy)<|Ce%RdwqgJ z6EPkUF8#hKA8@7bteYZT=)P;`$dTRg-$?5bI4Ox>q@4Wa)u%@puEK66O8W_}GtDr6 zICsG6JU{rDP(6QEt8U+UUPx|Pka+bsJs3j$s6+AkeUeEsuy4SN08K>=@YkA><*ULA zBk6@A*k}1}l~lS}<|^cTL^16MELOW%OE^rSE>^=?VokE-zzbE}+}hB9vINig2aMjY z+B00GSne>M+gnpY@hHID6RO;#wLlPXCjs8O5kMY8JBTG6Eb~btkXx8xrgqjTnsUfi z9l%_n$@4~U<(7f52j2v`fD0ZPCZbWvVG8g}^z1tiny&U1JYNl9GHtBg%dU=<$lH_2 z7*OEGPP0Og--X1RckTk>fO+v8;J$0Dp94uH~uU66!2zlpv}9unSf z{MVz28y5_7)^9LiA0Rh*RsY3`rCjC@-(TU+^N5;GW?pBHRmQm z4K6Ts(>Sb0%BC6qS-yA;VjwH&@<-4y7$0hu#W1kX`+nd{dbj?hiNDV!BS_ksFr&&- zoqG5Afv$w9iGDgmQA&m@8&mUpEJpCW0IS7M{~Gh>bS0qm!KL2}Fd3IC^z3|KYi%57 zF*9MItxR?YOBZ1paM{^B*OgY=mSJe#@(+(YA+qf0%MQ}FE?00|-XcKhF`;JmZsk+0 zWzbxn-5{DNDFghQ%|5}SYgv0zB}M>AYZP$}AbO;VRdmNo!y{NfAn+?nTp_!X`PNqb z%aCaz%7K`3yc=N*`8bvDsd=WhZHf^#%u>_|IL*k$3r_mGds-{O7vs+qCeNQx-#&^w zpJZT8j>CNYYI$+o>nKopkq@a`A6M{&fm-Wu$mng?TJePdudRY(Bdl7{$|sa#>bn78 zEFNN4B2+*IT11yv4L7n>XoB3%LTwZF8!r1@X}!CpWr3f z+Ad%raJ0o)3!wiYhE%5rD=`Bx-}V8AE}8`tQJc3Gfs|xUY^~$X?5qV{d&I80k7I?9df5Ct4#+P%oXC_`NfUTLB1IpK((1^}3=vEo7GsUHl(EaAp-pC2Dj zX`D@h6dt>b>Mq(iI(U}~86G5Ky%AHP9e5?60u5f%68Sk7mHdpc*R!^06%BS)5^Ee(_;B{9p`$oo7Z>pE@y}*Wqmm^ za9!3WrAT6@1FH{xEElWss4^4gOKiv&|q>YXJQ!{v;hs*PE$#i}*LK9k&NPQS7 zqxQbm;McP6*=LVxMBFNwYE5Z)BJUm*-PUf&)p-K9{>_x7nq4B>c;=6RqqVa4PF2BR zEQ<6B{V3U#bGkp;!S;~Y1qs(H za|yeu@9bV|r}KZs#Zn1o+^u=U0)D47Q3YuFI-SJ=kjo5h?LL>RzmYnFrutu*q(Leo zn|08sV#>2DbX7xDXFq?Wxg9RkoALVSPXB(zDmLqj264cc88arTOqU|3qV|M9#Q1J3WJlQTI?k2)&dQ*_LUz>e$k)ZwE5dnWmB1WrKW8mYu$F%QX49^8%R$xZI$d851A=>7l!~*y{XyU1nRzp9J=w?X zi)=o~xVF_8TopRHgdB_z3zlJTQYH$Z7iE9<#!m3&s!JY0e8cL-!EkdU@pxF8MI10` zm}x4xix`K8@WR)z39Lp8yfZWiysc@GUxGX(CBM%mGa&IH7^D9~ay88=KxsG;c1wDZ ze$KO8gT(gCG0%<&NHi=GRjK6T#JZSzd5@ew2ZHTh)6eoNoP`-swP(c-}4RI6Sp6X^+wVXk`p)|@uUswyv)~* zl=f#JH9^*wimkUyTGm)bp-NV#1bqGue;fE8u;W1z+s#_b7!f0uUtVA1Y_HB+(4ANddt_&#AbL^uy>SKO?=D~7WVFM52u=GUm{ ze7AM02(}y4LZzP$>iyJ3x}vE9yqCaPox-1-(J??dw+Qojs!_3m283K^g4-i*Lh9U_ zTiovI!(?h1e4r~316m!kh|3M9kGia!i%oYh2z?<_4%BLC;Q7;(u6b5v!w1Rc(L4*> zJ^jO*oz!EtDZv76M0wwd4>+xN$oe3m9HrUVv%2deE}FhS3;H9w%WDta8t6{_M>gp5 zI0|34N6Dv_&K7VCC5aoOKfk@DH}m|tfRWqxpw;6KBPej-qzGz4AWhkZ`^&GPjxcu9+2ZgklH;!OH!iz z&PbiUPjgt*tA)YUDba{nzJ*@-Pv&qddRT&ONYaMfD%}XRoneQ@*kbsW+jlkYCA#N` zK(<=EHrRveH?5oTAh@IzjL599+BzW8iwNSwC<%~9041Z+UhNRet`nr4_ObqGxblFv zGbvNsG0|nYD2rwN%c$0VLcu^w7Tuy(iHtARFA5Fn-1jfTnG_Gz2)vaz%;6kbtEG9* zxFS(RNtCpx620i13X*Z*O7-V%pcOV9kASHSKi87JGG}&YzX@_Q9yLj4q>7yOtRQ^K zmR;`DxwrP))qE=D(HssrJkeBDoXit`k?(l)Ixgiy49G<}r$X8&#)rr+_#~wjYC{Q! zpdjwJU?(X_%cz7@!IAchsjK^@5+D-Wu1J$!?JtKxZ4g}c8}51#9udHqqHHDQgVl8J z>F)8EEU$%%0QzZPc;01qKMIxDzTN<0g2BC=r@%9!kGCtDF8t&seSgwke|I5(@gh1+ zE;vRVH9bY7^^pqp^20}$ag~zslgs2i7S0_oD>sohgLJ5~Dm8vMEk2Z;|Hmaad*7%Z1n_`b2=)O(z7xA|J+&au$w z1rh3Wi8h+;V3VF=_i~INF7%9%_Wz=6;jYGt%S(K&~jJ6)=~ zJ&|UT$X3bQ(Lh)ois=)tdV4`p_q|}Mw(aAZ)n|d=5J1%JkxqmSL(R-0!rL5Kk_Ing zeUQ*F{^_Y+%-}IAHc-?`Arib8l++onvZL(u}bYMevVvyYy0f)-NIGqr z@hrN?hV|fJ_haD*Mi+7Ogtbl;oCIN8Tx>`gUz|U&usBp;oC|xh+bmRg=J*0YlgZ++ ze{@rf_L|2omF%Jc@>wrBv*)w;tEsQ%!rqgJxRyGHZfQ2IFzq(D5WHca$3narrMshGx;f0N`+`qJ7} zhT6pjcAlCepTsKqPF4QUee7f5lMM53l#`2dt%hQBvC?=E zDn4o`5~LeQp-;8yEp2{^95dn!bgQvnIT90-uYiZ|^U^R>==-o3R5SSRpYWU_g-dOf z;O9bhwA$>W#UU%XMPNH!1}%fjaq^243!pXiaaU=419MhnY7p7lIHGw}m(d+SYE#r& z2TkQCXJgN+QO8ep=Ri8w9Hl1N%tz)uGP+*KxGTormM-J)Umc`~bZ|SAMFn%pyR2O* zVG3XP$8QuCX0qV~s98Uoe5sfu!zdng;B@xD8BhB<#c~|7Ys7bix>$ z0JDb&4shx3SBo~Q{*nJA-#Rzc)07b8UrgtZ>xWMrLuw>Dd9m8}5$(v~2!FIswucg4 z<@QBPuJhqUt*ivB({cm#2XDFXTyRX4 z0ZJUu6acR4;P$lVB`UDZ48`2b9d)K?fiUFYKa(IKY5-={m})1{Y>;4*HsBhIgB#ty zvcCC-&d(Z3A!Gd?`O$(JW;L+@{9onTYsY*7oL}}xK`{8?qDhj~v zdGi*GzfaSS+e~oUMFt7O`;bgdUi%}N5KY?Vc+#pPvkMNx72?Btt1&8048`3@A$}Yi zT)5g8ndQGiI;*vSzl7#8cd}}1yFNYXMroc!??-AK)z4&jXSzbG#_^y&4b>q(w5ghT zL)=hqFyz;@*3%QDT{d4hyIBF4;X&?v%YNUG+ zMoZP;ROV@Uf%4mi`mTz^DcGvY3mNbu(3Z5Q7AoZdTzSRjQ53#y3JRAbs(uNy(hd;N z_w7x+N8(roV(?ET!CZPkA`KZ(&IAE@;i#J6mSZVT6!RfR%bMmioVwGK^EF{h`&^e9 znRyor*(%MZVycMhZ#>TJbf3UHcpL`~jTj11W4ZjC?YQmi)YxLCK4F|_5l>r6J<)~l zEou67WY^BkN!k1M3IvIS9n7n5OgDB0yLuE(t4|K2Sq7+QnZXnWzFb5-c)iX zo!`e-Qx!kS535!I`(Eh?SbKp9A_?dzd#!CHzw_VCA8)+mNcwpEPj+DPk#!%@kHUL% zL?Tb;z-5F0xtlYzU=&LcxBNCJA%;?`CfAsQVk(_*K`Z9(>|7QrLQD~OZdCIpfvl)D zFXkb?+?KR>8_CPh?wRRq~47w^YO72xmqzbI2V=|Z41m%R$M&4X_TYf`Dsj%)W0l3R8-hx%^-a*MdX5aBw&fw{#FtG>uX&R~lc> zIJb(kP)jhexoJ>nsPFz>T?u4nC{dppo9N+YN&hi{s`4=|+>+`)a`xd2I~Dh)+vY!6 zYaz6c&PY9Ev+Q1ocSA%U*dTMZ|=UrOIt9fqe@CG_AF-hE{+9hhN z5V2R1)mm<{VABeK@mbSRh3m%~-5XxWBsD0Wsqhp*>aB1-gpl?}qagiFY4xV7=P806 zheM|DIML~59u&|3iZ5_{4#0|0Tm%TAwcNaaEzr*o9k;!>_D=C?vaAD{{Gs}?8GDdc2 zxE!kJSzs~aZMsyg@x(*Qx?v;pyvHnfsYF&JV!Squ$>~A8&g+nmKp5A9d_7aq3S-vYvlWo11bJr2o`4E|tXQ9( zKIV!c&)DAbEM7Jya1bmMPE#e$d#0eijyJCl&-Hq%;TkHQCX14o&&JLx4Ua+?FHBw4 zr)$zXO6?C*WHwG5qucQtEX=@k&Qsp%Do84hXb41cDTQ65!aCasQ1SDAO26o5eEr0) zyq^oDs--cgQ5_4#kmI}ru^Wz&wRe9%tis1QsTffFKlx=ET;yOvl-2jZG9G9G`~@6W zzoi+U25e@=bzH+Ky>5}HL`jAYg=T0msku3O@_Dm-|E;D2o|5i5 zaYQ*uj&_K=DhR3Yib>p5*Vkb}*r_}sQP@j{PVMmLyC5$F-1T)Isxe$^QcRyz7j!)Dbgqar=-TIr48&Kd&I(IG8;}Qm-foiD6{yi@D_yIqBD{?xSL_BYo8V|-tE`g6< z6|hZxJ>-_aF&yx{kmDgVo?W4gshIAX1!!T}@jyowem*~$<;-<}w&!&H+r~|wc*7NO z?WJESf(0*zINF4bkhx`l9*d-DBmbga+J&6=a0cJc$CQ?0V*C36tl}FugB;azD-XAv zH^J|DaX=pywl#56Ul`9=#Rtuhz-|b98b{_^)XoJn8{=GrgS+~#DlkL9Z_aT_J4GuX`|<>nCWBV;jbMOLwgT(Q&m~#Ov=&bQr|%2vXTk;1|f3V_CcqGt@p(G(?=cf|NDJS1mUfg|^S1bDua!}`_ zUtouH%=<5B$Ik$3O^7je)*@0WQQ7C^R8}brZ;}_*Om!e=i!?N(vlOdNCp8|YeMGBo5&vs9J`*m zP)o(DWq-@YzBJTSYzHBa35Ao)Lw1>>9J7!xa(fMWdtG>ck>n*=$toHnqv`w&d(9Fy z8Sd>d`iw$f>>WY*^(t?iU5UZhRXst zaBdFw})L~VA`-CC*-dqnGivr zy^4_;kSMzP4O&Arc-8JlOa}=;in@FSGR&SbBPv=6|D=~=igwL-ujXBrH`aX|HezD& zq=GMTMh$8Ro`iE0p>ukN=EcOaP6@jJv`rzJXFBtGqP@p2pi+0 zHzGdC9I`Mj0y_Pxb}N!-zgYaot`woz)#DJzo{vAth%}04BU&fizRfQ>iwVsf;;2E& z@%1^I7PG7?y(cxe?5DMmZW39-Iy3cS*eYD_x@mcySx@mXBArmP@-wkN)LU1WP*6Ha zkRp^Od+eZb#*lSzV(>t4Y__C)E6m~%3}Cx{?nW;eLov~8?S9(u88Bxl9i+DCcH3BY zRBV>C;hhh0r|_hDG!5!&1|!dH07dEx;YtuK6)sg;%eQlr-|OR8EKlAjy5Z)TJ)sfr zMi^@@q1AolD~oqJE&Hov{#{gDXih!fBE<{a~V|s{=aQJq3{GapZ<1v402Midp z6&M@$H%-#*Iof;0NfJdO`1X{IUHcMP9;(-DG?n$2&qUU=B~IFk#Hirw z+XTRHl35!CWyV9Ed&#z6GpeD_H5w>;i7%pm%2^yz&!~sY8_c{mwH#j`y)(~^!G)HC%cl=d9rii=q z@*gYKnDhTsu`7RpcuWn^uSXaZBxFZ1atm}hdLGeYqQoRd=Sid}U%*5{WwMn2mnv9F z-MJS5+DQk>ZMar_wujR+;z|_tomY}O3+m$ZhsUh!t`q&^7j-lUzw=>_pc01rG^G-L z601Mp1~hbp>3sb#CT1$_|0Go5wB)otQnxCptJqhCATth))X~9xTrij#A&}6q`~KEe z-=I(y@m0Plp9QQ4IoByaHnZ_4)X=TL}d zPptHLCQ|G)`6RGnlImgZG;S8noIXAi+EJQ**VlC8v9|(r<8J5)?dWnK z)72c{-_d{Jou9NLYPVIpI?sOGjqA^MPz<^|p= zQ2=kO@3-wZ4{Ua2bO=FRTE&n*FzFjopiQxP4|s|d@P$xp`NHym;t}&(<|5~CT$hMHF?L#r39POCTNBUthDpTP{QLUdu zLb>#b7L)TXsZ^gl292+=tS9mO+k~pI-^u6@<13Tb%2s#?g*|{-N*_cZ3d9THNR_d< zxU5uQ%3xNLA58%(({O4RBk{JxAYQKIzY3&Y0g}+|f7)44boCoU`y&r}75B9OOL3hA zU@vbYyABFu>iZE%HtJt*}di zq=fT?SA)qCPIxCF$0n=6J?Ch`B>h0IpWW~#C92~Q_2p@t+%NHo&SmflLqj|Rp8mBA&Gn6> z43I`M!w8H@v#Dt#&3Gs2F|r=O=LBVF%JJ%#)CHzcQ22e~0qa4dt7EI0mR2KI)w^6} z@@;UZcDBiS(%D|>t5mM>Yd;y0nk~~QkO!U=a)y-D!jqOY2h*GzbR(`E-0lcro|M|T z;av9{pR-aRgx6_vF~kDNYUv)R0p4c|LdRl0t;GUH_$Q1J@SO`SIPgY&KARSxtzHYt zaLP%~Rr-Aq!)V}aHS3=x?~Vj^M0GId8T1)#HU}N1BQ>&NgN^r*Go}fZH=QXfriZXZ zaFcyn_oT%y>d9bxsKZVVJKtT{#w81|+!sTc_W32!LQvD*RtHa`e%!BlC0m)j8h^@f zTSt)wX|tlx)U*%x*uEEQlaM8cfT==zL3@B=PrJsl1vzgzlVEY(vA-2~HWGtNd!e!6 z0jSkWQpnopmE6aXyGsSa!~0a$D0o+k-f#PXDR{$CyF0~Q{>k0Wza6=ZV@s=wG&c z`#>>Y{&y+#$m)Bn6PE|fHqE>{|6->yExi{2_+wuZRbx$OJKm`kwhC^ipn|-RTc(7Z z+OT@JsmRcba8-N)xN1r#BO7Pr_aVU^(xra3c=h!N>pG4BWbGibTkCe?Gv0StOVu+u z$A|$hXgx0-=VI*%P6&=(=IJ>Cl~_5I`Fb~(2E03$-lO+H5cw`qoxj=1%F(bW(3LC# zHEa`Vc{nmcx-t)Hn`1O|ay8BYdhE~DE!{HiX{_V;^&OVLo5v~)Z`^Kyw@9ws5nkit zIjq^j%?YJsC~y$Hnp#7d<#MahU~~s>if@;_8>n^B&jmZQ+5_M!)BMobkXh)_xwvmw z$G=MjJc%kR@N5((6fN>(&KSc90+&w>pTWei#@jGko>4yQ`uaC%<3cq?MM8LH2L*FY1A~k9!F~u zW_?GHV@jjn8Dxd;r0FhJR zAoPgJJxrW$hFN?PO~qfO1X}q^D@ANrAyt~Xn=egP^X~jG-6^D=4LQH1Xk8AvlfeJ- zYqUycpwv@B)s>R}aX+{kLv#Fl zgO(m1v1Fi)2+@M?Uht*o%-(o6p906Nv=M}Uo{j8QZREcVWKc$5nez(pV|(4h3n%RUxJW8| zk$?i}cF&6{sMx30HCZ^;W1;sV={0jD=A5d5{{S9FKcrTE7m9-mAF1s@BQav5Jtp z@hjo_0W&K$Bdo#0S6@B?byOwkQ1eWlrj0F&Q-8S`1r-cS-?B30gkt~k5hqf3+(!p1 zRO{_I*fB?BOF+JgxWpWjF}qc;4S4-b^iYlzy&QSoXWqx^(niVqTu#Y;@_y%(A61s?#+XkFQ$T@=TbJNEUmF+Yzdh2#TU(YsEt%?fH-1O z=zJ#?Z~&y+T18#Z$FhID44m*-p1QYMy)PE|9urB6VXstv7@R&JeoiNZ>afqG&I3SQ zukO{^jr1h3#@AIaCr0z{-g5~a|K?uw2N-4$`3B(tC;7%^j6OjjC8jcYhW|tX8rfzT zb%k%|ANa$p^42D?sO&yv-_v~2mKjWyGwbWUdA&=x1j)zwg-}*lPvI{<7P*Gj}AZ7}h2Ua;)5;6K~D)Pe^)) zOA8nVdoI4L#jA6Z`o|svB&9Rr-T1S~*0yzo^lem}m)^Q^I^~75L;g+X& z&%oBlnh3bv47NshYArJgGk2Oh6nmB+y-z4cli%9dXeB9cl|Rijdod4krYN#&;FM-G z?h#OPiZH8c&r>7Q1$G$A!h{5gIKJWKMdr&|pRcopZ(8MWHLf-bNf(IuU4##rC+D`1 zJ^8qJYwY7WrfIJ=SdenG$tEuu(IO*L>Igd6nDxhS9^EKV)of1*`XsU07b+q0qm^5% zQ$lOPU2G?Eo4AR#C1{zzeGoeM%61USrhCWDzpY|6m5iqhs5$_DGDbf^@Q)ijGiMv9 zU|heuJuO=4fJtebP*vN>u)Esus{R0dq}|cL#kzTKlg?G)>&hbk2ZOSDhSoMQ@g27A z?9yiQ6YQ6+Y>rD0BSF~un!N=%etMSxmWJ^BouJxXZgnrC|jzJj7y? ztv@UKwlo;dMo4;_J#^*d=qi;0tD<1U|cajaNn(W9!4tF^0*_7Ht}p;U>B*T z0qvxa;SvVI)%|^NOUHPs^$K@bqB#8cZr{a~L;5b{&boI`{hCeUfnNrGoT`4+YsjIx zMShrSLaK}Om8L{wH06cHO6`Xxj1(9h%*QbHsjkoa^{;J?$`%GpTI-Q&_yjU^_lQc% zl1-sb_8-Yl8!3tgQAtl!G`na3lElT8Z2jLURjOURn4!W>S;EYp38w5&!3cep%30BP zj@UyFTv@lc1R9UI7j2cXBi$wTUH?fD)wSHhSa&n+>u30!Ac~YmqM%Vd*Zll(68kF% z0dF_=!NOF}&BocmNrv`DlN)lzkB;Bz6_44keexms8?0_#t%^d$+RdK2wayeZk7Q!k zu}^ZUI(ouoJq%PP0jgncz_sQ0j`Ikmhoo8T7i67M6na5&(Xn#O7ui1@e^2!PPgT&148c|7 z{DhB0avKdq-zB^}v5;D+F@$~#?Z{={T)FBQ-u=tL?z1*t!(S#) zS8P%2_<*#ajjzVh%N+*xe7kb~-^rTR@K6q1PoMw?=S*>m$d+cAgXlqPq-zb4@2KST z@GHPtG+J`Sh)cwh3&-=SMQ)yDS#9L&8oceE$`~ZkUuD(qWI9oGDoC7F&Ptnhx zi*5*6vIo4dmL{vV2I&2&cHsD!Tpask38x7)I;r3y`EX$j)z}__Zjz|o zWzgxaE=)QPAn4YyOogm?B08A9VSIij1IVq)EtZHS6F>9Mr%DikjXE z7b7IlNsK02`Hp)v#gr1`^S#ifYt=BO?rWrK7x2 zdGI(mOfS}ssF$3~FomeSnhMB|C)Zr%IGpl!ZtbI-_8sA;>_?NPKZ(cAh(MUOIH^*P;s0;zun~))lJulA}&ehF!0HY+-SXVq2S+zHM?brMGrma zz_O|kx#SA5I1EP66 zZ1Dhfdaw{b=_}aEA5Mgk@iA&Zz9Sg)b!9C5eu-j<3_&h#p6c`cpxbJ71==j86;Wqm z69O@_;=M~a9Ej5j0s^NX_q>SN@&^$kMkA?NS;=J{E*V90Y`?M1VoP1)W9KW>Pw198 ziqeQlGyNJy1DxiRl#sn!{jT> zU5lxXq(rA{WwyuAM#w=?ZL;&ERl~chq12fSE7YYu=0;#l#wKo-Bm%(e18xG5Lp6K; zi-N->_%q=o4ot#pyn>Kk(@{_3vXPJ526dNdMUU~XeHc`^5#&EBo`MRiIVLfX&Is#& z(azk=pyPRaA-HIqxuxlX*f3?)OsP_cxRQ9~ct@#qVyg;ds^c1z6YT0R`{a1D z_#&6{Iuno;8b0|Qd(n5kAj>K&4NY`y;vqI-c%_2G9rMP3)svP;?6rTqxu;>N38)Ax zm$?` zWB~e?fw0sqEPTC=P0BOaG13^!om34%B2r4F=s2Y0(U65|d`R7Kn)sm?nIA)yc^s^d z0RMy3-t2`!JUP5@lNz63NY|Fxc7({R>hEcP&7T_#qJCZOMv%3C!h4G zkmN zv>m2>H5gBz%Of)+nCHP+eiW!=je;1xvk+|dZdg0)N838+&K;Ms2pU-%XMvSh1Md-Z zAkVEW*MsIC8mqN9LV%NLicZnmYE!6IZEiukbU+Td83=Drx<@d2KX1lu-W&z;;qB0+ zeV-K7K1zZiMT66xvfJZSWTOTnU&#G7=~=tPZg3t*3?!PqC4#(s+rz&KG9ybskmZK` zsoN+<+|;oTEUz-D)+>2K4=%3Z|yZ|Cvg*bn473>Tk zrY79=%*5xo$BT6zJ$2HvW!QcpmSE5iZK<#J;Kj;9w{hcm16cj9l?dY-A{c0-;m{Q8 z`<@DJYdj91`p}<*+bki!&mr^^ZxSbH1|mj=JtmA|-{nr4V2EpVJ;?1WDaP}(!r8^_ z%_F$;)CmPq?#-`@LS;5)I^i+^BDFPx&+g*QD48{%&<=>}3ldysZ4^Y1kGF|sb>80; z!P4_ihO|uvek*)RqQ*d#0ET{r>bz&@{RT#nnQuCB5haaGuNBr0#a6)e z6hH4cw`PeMhvg(M_|f(kP}**o!T6OgFO=CW=ryIVKM`p5UG2kCePGNxqVxtW7Y ztXO}?d<&7gHM6MaYQfGTF8fPa1FxY#1Wsue)JWJpB}u@oKB5<%p0El7%@Q5Ikb{V{ zgj#pi7Vh0Hr;KZ3ptfW=ct~3Sw9@N}jz2d5oHf*_=5)I2Cx_gTSAI$Ha7PFKQ|@)x zRzzIzulkn6X){BrrV@o-X6%h$FC0IHED`29ce4LwDr#Cy8$bih`fuxM%t2GS)mr-& znzv1AF;C%kfs1=dVZ`KugM7Oyft$Z53T5T9f38W2@DK2b z8j$jQ9q`OPdYN1Qc}bq&`0f1Nzdr-#$R!TjB?Sm}6@>811w~sS{A4$RsJeWS0 zP*Cx@)vP?3$z0>$*|hg2&fQM)D$w2B=n}J5Z645v2$YQM;NgOI)dyfKO*Ddz&7)%o z1#Tj;V@CxZN-GH_@&d7idVQt-@?E-p&p=GbJUDgu;8FR3b2FQdkC0ROAV z0n~5un^k3V+f7{2^3Fqh>a>-Qw&pIPB))(T5Y%-|F-c%H1nGW0>gFv`HB*sCCBEhJ zJ%t6 zMXGER?qI1qM?wXSS@P8`OS0QE;B|(Kf%0@xzq;s{V-6b*YL0ziNpx-XGJb|m+v;95 zobL*;s6ti56Zat>;G9ide#@Zbr7l7#5%k2s+Bn-flJgJ^>SaqgTF$YzQ7ULo?Um zG1t(Ks0#6M9PE7{0w+{06QKQeq7sXp-NT|pr+eHR4Un+s?Q-ya$1we?;U(gTA({L) z6fdUK%Oqi$2U{=0oQK(Nqyy#1u6MFRX9MM#DTLHlPZ7rjA2Y%vHoKlwz72`9Y-l+Y zj_bf0^ah{geNdsb-*@$YGw1I2KwaB%HP`CSxNmV-`4OI`AU#Zb!@qvFfTm_iw4Q^RTfm8UlI0+;4S-9pu;!sl*Q?89i4RW2KsQ0&f=%|K6 zs~44v5YTY&YBPoDLZ5)yND#k(n*M{8Z8vRdy)QQVy`#lMj1i{6n2hYP#;}|}B#qE` z3*4-Hv)UMyHdBIhjf=>`jh7UZp5wHSGxk%4Gz{00pP?oPyA34)*ao2FekSrLGGkER zZ>&NrU5z4kIRE^&k=_^cu=NAVGkS=+#@&yGR3Qi$Vyxzw93y@$RvoOda0EWKs%7xV z9Xdf+y-0PKw_N z{*ttn$o(8aC_-iR<+FEB8FZ}chd$-*BMgb9bgDAe6kqhuvT9bzO;5n3uze;v-?eKc z%p4>D30xDtEziGW4D?7qJ_iQj2k({xB^oUXeBIA7!rflh+)x5=X_jZf$C~1-tISiW zQ^|*n&O+5Wjs&rla2e8li7Xr)Yh zS~ZuKkYxQVFI29z;Pj?!5(JZ!r$+CztOGqaBk59+c@3m3m7^#R5z`Rplv(luA-QUu=|wv2fStgE-J%Y_ z9-Zju80UqOkwh0-^}Yb5J_W*JL2i2wb(8_CUD!t!MLS@b(BX#P{kw6CJ-cuVa1gPa zsD@=VDFR4z8My9DYZx7f^_2Qvpwi4nl53dF42@{7*ODVwB0pfT3>v>*l~+UwEyK*T z*vy7W6F?7r4nCZ<=3B|qNZqwQ%p4p_lH$H2SbA$lNYEr7;ZImd_Ig11yLp!E43%Pr z*xCfgrHqg&>gj>VOaR*}@~IRDe+6gGahX?GlFisQd>iA+Hwt`yjebkJff;naM8OsO znadl-?_@F}vcS^^-xX?uH>7c9Vl)WUK5lQS-O>$tf;d)VVx<=d8Zhf1_R2UdDcuYg zP_8_7A*$neitOptA0yQ~|#aP}9Ba{(n-PGR8Z%p(ur1rX;Idf!t;V_b(7 z2nS0hi({;Ps5jb^1)8AKf00ZN@zHuH{sC7t z)}a3m8uD+CDO-7~DH!N{PMQ!zIH#QFTGXAaauFb4@r9nff=8Ut1A-Stei(Kk*@tO< zuFulG-5zT9GOV){kh17tIM=kzD)c0d{6MZ=nA#XyIh8{ZS#%LPzLqrluNI>@>6b1{ zWItijL&!sS_5>r|9qqzZ51SZU`E)O(R}70Y|7!74>;ZM16qAY(DxZ}FTEsb}=kp4Q z*iv*djYK-ces6AbNW&*!%yX1hBM_kO5%kyk3ApMTn$*Uyz>Ced(lz^ZavI2b8mv{Xwnf-Mg?<(@eCp# zeZ&Oe=R=bX@JlNQjvu({T5vG0@f*XGc6b;@#$`X|{6$_K5Kx1}{uS}5}##z8ETnnZ(fDpu4A0{=$fixzd?yEtXTpa>^gh|8& zLhSr<2nd;IWx_mKDdpieN5PGUx$gKE2v`WrR*TFr671vIY|7s@8@+;1*FkZHj4w!x)#HsCi-*g_SKL0mbuKQkS`tsV ziDk`yn5aZy(V79kyj%zAqYyznHY)E`9$(N?exHKlHt7g2%!RF}wGedQocWdT65OP2 zpO4)<*SdcB#PaVVE@?Bnri9JSRm$2x{pV+EfxFXdn<=;l&_7w3g=EiTwo-m;1NjM> zbciV41ot+q@V;i-K zvjy;UF`#E7i5Jf=h~QQEj)>`fwh1?vV%$}cJ+*mPY{sAN z&(c5X?r2f95a0;vcswnIZb{95c!V{L4>5j<=amUt*p=dnE1g&fT}!w41V@)lu81g7 zvCTfBVUA+TJDdcDgQY#H@as({y*zwX`dS1R_PG}Uo%ALRyOt({m7nI)z4DLz+DPAU z5TniqQu{A7ECoUCkgw^f)ods(xwWUPXvK)DnM{*}BF#1bAYk)zQ!yf>(+H#-(u~q`j$RfC#Zy zYx9FCsNU+6MH4_S3DZzi=k<=r!#STOgftPX1w+0mYDtt*!O;Wy6;7z*Sp#uD7NQ4Q z4O)XF31MVE;EvTi72#}QH3=~r68!P);f7msk-Y{I#EafAAdW<6a7ft+o_xMw7bg~6 za@SGc>dY|w7au&f?vsstHuCjXLT|@?z$O)Rbz#bs_nBE4d{aO;U;|O$WiUViO6fKI z7vZ#c<8)1qE2qLhj}BWOy!o*y{-u|&PT~3HKz#jol2@5Shr#vFgp}>u?2ooYTVLZ@ zayXTJjWSL$*eihvI2G~Rjbr1s{C^iVF$K9-1K&~kW?DMrG5;#GG+(xFL_&CVvXQpD zJHIg{QhA3T~T*&|L>om^t$+l;3U4#ub@1# z6oZcVQA<%l^t|H-x~y8^?dBzr9)PJjxL~z0A0V@dZ;Ced1d4%AV`5+b=>`Y&W8Big zL_0oU5DVF>r~F}(H#)#!-u6H_|M50S(lLu0^GyYTpVaIlQT*4UIbN@1xXbj%F$gGB zZC!tSayx@Co6UZ_MVQU-0oMSbK8p|{DG7ce2wD<4f*ksV*tsP@`?Wug7Z6HMkyr8$ zHc?`BCbH}<+ie6k%1s0s8n=!y+QozB%_PUCT%g{qfKh!ocgT~*AO)y_Z9)6|lvulsD>Jj9i5 zkco))nd*Z?b>k!2y$oX*_MTUTwI$@w09;B6&|mRpEY8qWr*2k7VkQ^^O*_(Ey9yy4 z$huf!F4Tw9W97ahXk{rof&Ct#ER;Nrnb>rzbnY#gic*DSf;VdnsfW=ho`wY3iUn^) zv`lQS*q(YaDjkfME_^as4Oq8S35DTdzkD85g*5&tm<~OM#t;5iBex8|yP%?<%f!ya zglYBisaO$`=h#}tk5J1PRV53Ap-ZW~c(C4A%9u>?R!)QZNim2i^g<8=!|imy}1w z&=J`S?i0GrzZwSkr(Q1-kr(EPQCd9$XkgR({M>qcyBCjW#}r4PVz*AM?Z#{aZyN7e zz;mJGaHDt=LBhi*wo{KyGOttg_WIg!(^DqzQ5}B2{`o{k*YxKBZ=I>LQVBtzH;Ppe zHBXtOEl828sydhi!U2EyPhS|FtZ*jBh|5d+K4)#yOL~tyM*=`S7fg6i=>CE&P?a@G z%i*y;g_be(EQ))&;rjGC)B{b^WYqGvv9!C+IoT=?NsAF!6=|e6KI}L?Yu&h5}GTM!gdSWKs6}Ru63;685Mq6q#Vb zYt8P^&LxwVu7nmNhv->>@n>rX@vA*wPS;?~(g&BNrw=<=s2I_Rb|N(2je7D@u5rr$ zK7e$P&Ni^4U6`B=R05J)kN&1r=r2;<_RF*U^lymxa)k8IGy1r^MJK)QvQ$2q}m0HsmGvFgmd@G z8j(*z^K~Ys(e14XQS-sDV1QL^NbhlmF0xy>ux9n|^zfhVJ{PkdrMSDmldUO?K;iaz zSc+8UL!#hW5soOzNKq>ndHtFx&8S$nl4CRTzf1dmEMrE}20m+75*Gp-(n3t;P1r~SmSB5yRx`P$~r4l?nJprnaHg47hMhk{FBA_-iMSal4rn+P4z2P zmhT|k?@+k&i7WSMC*9F+V)RyqZ-q(Dur2Ga`Z_nccfGgRDi7GUwA^`<7jP}&p>8=b z+K%1jK$;6G6iF=pbYJh=a}Ld%=6cCe1Mjh^mD;{ce!MxzhStIsn@5V^tuRE=)P%E2 zg)jc0I<9{)cF;H{1Fbs3Z+&kleVsVG6Z61@UxG5n+iraPJfg~lkj)B1>aWFOYaIgU z%-#1HQGJ^(Fqi++v?NJAPsaAqcZOR!|I2o}JKZ`o?KXq{G4%RoUc^wCKX=8^19Agu zh#)fQA9PkwNYE3()F@H`cJY*sFckEMTr{=Xv#_G> zyQO10fod=K;Y-)62``(45tCg63?6{}5>Nf~f{Bmd>-qIk`7^W2{*Nri9OW|IFiC;> z+Rt1Q5jAuH72z8JXL!#xT-2yyXB|1NEZ`ERSr^Pjc)UZlYdIB5^y9VQm*%XfDg*%y ztr}w$_qgG{@bbE^U{QNWvL0WA*~JNeah{KG-$X9fp$=HPRPwdqq*!c&blN+bKSdhK z3Y7}&^K|asXPE?aA33fxr?zWpi1+|!Q|}CO`0A#c$zNFEddg*gZf^YgtG9#IHhI7k z69u{8P${+{D;skbHyQw#?;IjJ)@|?&>VX9Z?Gw2l!_{ z7q~Dkn_MT49>eyB_!eO?yu?IdbXaU3H!{k=PKwJ#Y7ZxgD6YXOa!w?Ba18<^Pz?u5 z56{l@H&Imr5=&lp&rL7~0gpc}4|QIrxjOI<+68EK7vP%Yii$>sKy+9%Ceh7(S@)o( z&C{^}AFblcwp92R;~%|i4N+;D!tBK_$juY7N=Dk~%wV38}J=C2#(uMYa7=2M^kvT?NYPCES>crNc5$0`XX zI)eTvB+%(VjQHaX@V0q^;=s2uFkfG%Q@n%rtaeB$?TYU3IR$QgSd&4V0i@F(jD0u8 zbp<&R*Yt~@xp)LSnRvNJ7c&r8m~IuC6QCUdA&lEe z>uwqJ$}bZQ_agPBA#2!JO2|ZOY9206%Ggyp3g6k!%@!n?V#0%~9wuNPgOA9K5?S>7 z8H9qS93%Rarn&7f-AOs+Jd|Db|EFVt%I=Nl?2`(Hd7WrZSeqXngL7VEYoOiDUnIGc zt@{G$g!b)Wcd5x{ph43&BIODA2fS|9q&PQnutm;3K*O2t*x5pRx< z9#=SpLW>w`3%n@`Q*^(kW|Z}oyeMG67I=k9wSAwV46z>QO<-K7zS+Jt4|a%IQa5?M zVRTdwDKnV{jW4BxT~Y{43oOqFxf%6M@7Y{N+*FLXs~|C=z}3Jt zK_%b<#%w@}Uf1EBr@dZgD0oJT z$nB$tWT>(qH{t-?T-O*o{v&UM&EQ@|HtTbsF;&*!u(O&=F97D`M;8|Q0E(tDl0|;^5=N36c#ue?1%l)yLS` zXgCM!DE9SJeGYLLVY`K?sc@0=onkwDNSD-+mekMw4Y6o|Q;H2`w7>RS-vc=KX=Fpw z!W{zeR~AncE(JecUAT^*CFwUiCyv(%R7m24a@}wUt!jPFw{aY=s$ZPLR%-aju}t7F zsF>2sP4TQ}%X(>2ksIDCASbyz48@VMH>psf3Y}S&_lBv8D{FuF8GXMgt*Pwy8c;8Q zZtdZ++p*O%_ov1d^JERkvVIU6efFra--9*&MG)Ig;0~5vET3ds#O)m7(K6S8^&$CKg-zHyb^RNWlUA`;I?j{X`(zj%<+Hz@D zK|AFZnz}2}Y%~@rT8Hl7y}oen*M*ojT$)EKDP!k6)<8NEzX<>s56_DNb*L;==UWiO zb_Ug{d$Xj1Lg=gCi_+t$4Q0!&vq%xwG{E4$kpXqrbD&cCzPwhrUHU0ZY!!|D_^vC8c=vSA)8L)8^qPFwqDp;SMQcSX_sQN=~byZLr z7ud%!tkHn8rDBLC1c!9Ys0Zq_P`s}BaSipN=psd#qi)oP&7L(W56fsI#pEVAR<$O{ zH6XLF2}Dn5w0P>{(aLlHWq=re44k++!--8zH}XX6{d`0EZVQ}EvlFSG4OyZDT<9BQ z0t1vSk@((`t~Gfe2so;$(7K!?UjUF>s(&^{AX$8vRy3|Ib%sGUk(i!-eMd<7Y)ri_lHsdVEL%Sz0m0;^rI>kF;^RZq;V zb(l`Ixgcv?at$($yAZGInaS*P?v>tKOTWEMu8_<5b*2Drrm+!SYGW=#{8VA5+U{&* zFWmh2&`aCEgg&iKk(TixYq{kcj?s6ZU3Qu_f;j*t=o9Vf8G%g~mVtRCO+X)2A70Uv z0sBUq?C6I%BngqzGO&9BEX4$~QKGznQ&(oRVm*y>zb}Nd1S+}fTA8M)C37X|2NTX2 zJFerK7<2f+(@}@#oN!(5)yh$^XHLF;(ag0#A+N!aYjiG8Z)xoL7=c*WoFFVtbNO#~ z(TqgBS^*nlvf(b6V9iRskoSwm0uD*_W5$@6G|Rl@8Bc8~G|wZdGO?9I&yK;Cf#GeHT5OppAX^bkeyx6I0e4_Dy)x`|-D zpf(&}i?v|VrF4zh*17KA;2QQmwr9m5%gp;YYp%vBJ~xn9)I5b^?wsvY{?j-#`V+Oz ze`_kx|6F4ajrT4SKkUXK*vm^v(yOr z5c1-eJ0*D-;@{DVn^DtVc5Y4hA@6ti{f()dD{Pskdy+{$9FpVXl_Ys|g~CGdqn!=b z88q)s$$jH;P!iyf{NQVGyemI-sisK`PwCve*WiWhQin4(QzvZ_6emP)va9JIc2w{o znDD{Zf1g^@EFZ$e%GrE>T71#`%I0y4@nCumf#Coo$pD(F8KNDnas~~o|JpLSo}X`U z*Gov22m1Xf*`?XvmN0$wp2#wKfqIkxzdec`Kq^*q()g$i-=&lTo~aaNA?foa!Mi+8 z>yT}P-@Ss}MPk__NIfJ|{OuzM1#<(O5;rYf2mbQ$Dk+9ICmcwlcdS#gvY%W`L{kwL zBGh6T1_Wl#nG={kfz`;8wTmF9j#v>+jd$_hhN4p+lmU?wavrlxa&(VU?%iK})z@`i z>1~{Oy$9fYbTioR0$oQyvpm`E36Pyx=v68lqQ+uw>~pF@-CWovq3q#As{;K~15d5i zC7b>?NR}~wgFGB(RkKJe%;Bca-EB?$fVAXww6k0 zDPxzY=hd&(l;&pvgJ5$raMr+&AsE}YJYz}|ZSSa=l)Y#vnvBWb_f>eIRWtPlG8$o- zmj~?OHxCnGd7)tYylN)FlwJ5IKBi3%hg1m;GdwQ-kaIIUfGD}wcj=cwoJF4ulwtzc}!r2?VQ_9d}&C#NugwO6*)yh}wE07*c$zr-Yx{J@ve zZl?*ncWVbpW96{xALy5)n27GB8^_Ez>U>avdXAy&jkf&y-CvlWjG1*SD`pB0)z*FM zaUJM!Qp#~28c}JjXZ1?xOK?#oLM-lgM>e{*e~J0sNz|jMbUnyLkk9VymWAeu-)}0R zvSr1uA_n|_<$}geDGpxkCwRSjXWX$j_CcXHqu}>0lgHee1Axnr=@EVnMIN8;bsMF< zO$uKliaQ6^EQ-b-g1A6cLWpLILRFw5JZk{iO3X0+Dn}aU*AUFK$IzOepdqE~%yl%D zy8djD;h97gx2hDFoG(T#mZqB}kJvC4ia?X`^IYe>(YNPpZPQ;Oc9F_8oSAb-t+x@y zY_G>5M5ZC91jqShpF>(Mo9~B<&^B|~uDz$Al)C|=D`1P~aP|kLpd(hHtE*L!O8{E; zB%19jujXclMsq$>D#Z2Dgi7la*{)lwf=9tJIR~Dn071TXG5){s>!X;46?lCA`)^K7 z0oInv9E>n;u)$p<$poKX#t1B@S6h%irMSKS7q&oC7^3KiGP?CT3im@q@oSduDfb3A z<&-JcY9A_VLGdZ7+1U6f#?7*K8>(4j1}0t=jfryCBWp&f+r!c%)%*q}yA@FwWts4s z8qB~bt;LG_*2R}hU`1uGQ2l`3sNR`WB&Xs6%~KJ5hqZ>IjjD`;y8w*J^wBi0l0lba zjwUy!Ww&T0pSKvfwLQy?X<~)nRrbz|zqin$^ST%FKW|YnxO8cmRK+ILJq;Rq3>2q; z5&?+#&P*0G(j9l;5Jc1sHND$q2qTpqkteXP(i6t{Jcl$5+W$KnWE)kz%B=3DJ)~ zj@nL8QZ`1mD2-lP0wu(#c(%LPT}Br%^E{5AaIgB)bo1C$W&$tiDm z;YGh8HT9TJ*>~Vf!)Y-(R^ATOg&Thq5_dpWY@BT1$o+i0`s4V?83Y-Hd?om&NPk)m z@}*hN5xGExC(Y~OMlx47&|=djb*xcz`#A|zt&sWk1TUaE|5RuA)}4KFdS8v#f6rVj zl(-5W+GC?}w#Z2crUI(()(ozMR*_U&26;p6H>in^{r2|?!lN5$&0nMG%54{$^?`G2 zuCea~qLXPMGJ^oO?*A9It`XPuo`$nc=he$>a1J(Wya|kE&GD$dT~|#)L9Ld6t-^}z z^!5Zcv6MmrqS|xJ-*tS5w`gw!FbT24#Y{!CSAvp>hnFO+c{iT{zkrYq<4(LyM?$$8 zKQHFfqg?-V`z{G!n!vX4+z1^w|Xbjvx3XwM&`+ZGOUb9Ek!Ko6R!K?ux-aXdG z9)|BCV~WqVzTk8H^=_V6nc*jkBjUR%U>|hXkvD%y;+Wbx${0m~jrFu2Gchr@&CTF& zRRfb3$I7^1Z3xUB=HFEY(&L=y-{D()Ye;(uaqylisgRXCip~+M%)PSETxxI`zZ(A# zu3AB{>q;u~ucHu9vT|snZu%p!38vY>BnGMSR;n$L;c+b*K(_!U87-*ai3~YeB|2o- zBl`an!w1a4E!typo7X;eWp+k9c%_HOuDMR1KrRg5CDf#6qFVjEbpZCOI2Q*N6`W9B z!8(vJw~{~S^8QzeGkeM7MklU5O`b_&((?HJ@e^rl&}m#yVe%@&^pyxy0D}WJAFLHx zIlp84rR>))nU=8o@XRsnLlG|q&tb%Osl8T??&yPMI!A} z%cBM3P(sHDlV^{79+&(uDkOA|gn?v}K7*x3eET5WZ`Uh>c(a zX=t+^m^V_rqq>50C30o&1}MG-H>bn4YBFVkaa+jL8xt!5oF zmM0~P)Oxq~;2Q}dV8XsfCqaccC)qGV_~vazHLlD`6XWuDRYZ{8X%GzpeUJ1hrp|3t zAvYi|UuYx3XYThBq0Xk|b9K|*a7UTvQhUIRSfB)+B8RXp2R#Lg+~Vgtv~+Fyd;@X4 z*cNTzhqGW~IfNdY-(-d_9;%nlm7q0@$ zePGazO?ZD;Jx$?_U?iu;B`@J?n%m33C1J_(&42tScJ#ID{Hl5-&;F->U=Fv$J>4$+ z;dVIKNlA%^aSI!J$*6;E*|s;LIwf4LYRto2C#p(~4el6M1_0$)N`1Q!8S5SfZ!PTX zQ;uphRLR!zGpQ$o;BMhq@oa;KW)eAyw_PiC0b1NhN5MbJtF~I?TI^$YV};u|Hp_0O zvGPOk09uDCxB$vy@_F*r=ITFzq5~BofEsiYL$i`tahKDea!DL<`C0HKdGi}J!YQ8qeI(J$k)d+rC6hauhm)g)oE33~Lzx<6t&X#JZTpnr#wL$Cz?v$lBD*xPPUiH(D^Wav z`LcsL4O`i4X65n#v@-Dvu(eW_1K2LZ+6MZO3jP89;-@W_XlN1gW@ zaniI(%H`0KRUIDWt0lWLJ4Orj?-^d$@JW9W+GYMS7G=niU|0`pSBP5Ul|0yZ>$kdq zTNEvq4+KINj7W;{zNS2*xs4!a*{%|eKb^wAQyZ2@FO*FbfSw)`&eQM-j#cp=&gR|4 z0>-Iuzr)UM#uESA@AxlrQak(ysW)~7Tcyv%LfVDUninb(X2KyT#TFScQj)KJg_~IN zw+kR<>$SMKo}&iouH~Iz`!OxOe(vENL2PM*k|_Cc`>fVPma%q)XoN$WQgQ;sor^3m zDjS4R03I|~4GO^IL$lEs*F?KJ<(aC}D2CqI_MC*(=N17W43jL>c^NNvA9OU;7i`qK zyYp*k7BJ8F>v(@Ytm1m$xSe=C2&c)ZFQC)+vxRSUAm$Y`K2&_uH_M=~hG5jS-I(&3 zX)lzJ@ZVJ@0@}W(M{0SCsZ>&`Gs@-ACS#z@!FGUxTx+2nfQHq#U;?Lb2yAPYV+;xs zz=u9c530MrV7$U(#AFr;Vz`+5cE%U^!t8Z*1?3eRSA69gkT50w!_z2GODFa0FPsBpOS!)<=N&(zc-ugINq+-O5J0{?MEp?VYJ5?7o2i(s zC_tW-N(n}Orz=6IZk0YAGsfyn%%c9HT?Xv2ns3q;Xrg3lDH9tS%HNytTO_)2HF#8o zNZ)@UPV2CWUT5jU+v%%zdB@YBoRjnt3FR8iqaJ@yM7Pp}yEE-Iu~4YR9xC)MV=dJ| zrH7JZuK}o>>|OZV`CT9^LFE?`C|VHS@j>Gi9ZWC>B33=}tf_J&JG`f^Yp#^Lj}z^p zxZ|rGHp$c*a4leQ)!Vg5I>g1&mI3NDwWuy%FzS%&n4x|+^1oQW_{MHlzUT7q@%`d& z+2E*cwWllZ4IfP(Mpck|1ZPt_FgFzma^AW{7Uc2$_AP{QpjZsfxdb)KSR|(wI|lMP zE)#h6*Bg3-abv~p0_%h$6{qV@?T(5{6RWVn z0<~|E=#A zhl=z;Re&9fQb;D)VX479TqaLlgI2u6jmn_4$;r0obOawg=`jQq!*d?lX>Ck>w}m!E zZ5IG9U9iYHHQp|hQ@qb5NQ|$)NLW(_Q%BClyOeCmVxnX1pu#-R^p5hc?>`p{(a#;- zwP9fuC?v^~Ua7k)ZBZlcE>B{(WY_ln3XDTqqLWZq?*4QbT(_O-}s#O##0kqLx6 zw6zSc_mr%W%4^ermJ%!>D48+x#Quzl!>}}VAoY0I&WW(y_7_~Jd(ztOhrr6$EY?g@ zp@B+n)RB*3pJ1h%#pF)~{AU<_M06!R$Rxy1XP!!wcRkLw*H326>{W> zYowpvIo?Jto*WDCILDlXa`X3_VlBmzYwDQ<)T_1r#A80Kn$@EnPjs&p!2I+bBT|+m zpxQU8LIcpB%SWz%t~kq2Ej&+na5N8^6=k6JlDHr@`)D}tGZ#+5oRns+BWLUdNd>^^ z0e+;`0JR=w+a#n#3NAOhOy5d1q%}v6WVaDi_|qH>rb(0Rwj6y>4C0w_chyA68wZYb zZ7eFES z*#(8j@ELO0AnitJxp)YU#F=DU6Q#=EMRe;kBsM?hYaxmCA+eJan|Q3%kD}SHmXK-7 z!qn28zf$qovG6Kq07L2>32r~*h<}S1Zl`@lMmCD0=dY|jjQVe#;f${=fV;DIznW6y z?!F3fWhH|48hL&{I`PF99 zTL?0xYLKQ)Fy|;}TD}5+0j8paya}chcs7}>1KYaR1pepMRs&Sns}Uf7fg@^1?Q*eP zW^sQ?R4DA+atma2K9tz#J?o$pD7)8OzJ_SGp-Tp+`hjyc%khBXF<@W!r@lCUZfXnlC%e+`u7Kt?V=uCcB+fr!`YeF&g`U9zRhqgrSc}* zsSBaZDH_U|arnIN>|6y)`W7Lws){}pa!H4fBNjg7^3{O{KQM7%?XILRmSYDu9^om} ztCH;pVJp9e5Ou?HsOG6O8jJQ056xM8J6KoJHcj~hSK@A6*t6Cc^rF`D%c|&ztWWQE zvsilU!IkLJXZS-;2;Un{s80ZGh|vW&*`bp6S2(`jiZS;PpG?4avQ)^?gEP!5pEyR% z^Np7n@H5kHyl!Zo-{)>H(wb;4A6Q%N>Pi5FF9#c?MqZQV4S?Ag+{YV<#_~w~#1fWh z(%u!PH3|wyan0J-yFTOy45gl`jLknQ)oy^G9#z#pFs$4n6~}6?nW1N?G-5R2Gmw?( zhz6SV>exU9(L>PHWs%jUBf(Am(cvJj4c$Sv#vbv?CvwE7fSN2gy(P*#x_D|2&C6C= zC-frQLu)utM*m+{uP-&`RV)_rnhQ-53mbf_q`a6e651G?v*$(o)R7b>(nrezGd;>B~di#Bk!i<8X*>@dC?4-Y_s z=9}~~Ps=^^)FOTt3~tHN^N9rGmL;ih@ef9Agr3sitx?)P^bgbU(w-!YMtog!kRt|= zR$K{a4?G@pPvoltz24i&Lhs;-J*aAj1LQbmOY4VY#?G8%y=16#uVSY!R%0wpbLPY3 zIp9`KrCv4cJ7A9xiwX%9_IE7^p-2~BaXa?yWf--408sA^WzI>?m3|VQzsEb|Ro=1)4{=0PALU*$YeG2--aYLwKoV za%`X-6D7W+dA^@apG?87k;GX}_P}B+v2b3VM|Y7O@&UBCCbRX*o%z&n`L`|}?hh(V zXcj_MF6xJ!{i|xG3Dx=l-vf^97&sugbdKp$xA<0hS)B(RtUP7z9KIvnb$4e{zM?Qh zLlL70?H~x|X`22v(1&L2aLa z;C4=r56l3rPT@LAFm^^rmTS6EtRe3d=}UZ0h$WJexRL=+x<6v}vw(xVzQ@)j?8$v3 z-N`AfWk^$=O6M-)STbxqI>zF%PlR(Ty4OJ+(;|RVC7_E>CiD8JAHD^lC?a%{hshB> zu(o9V6*|NSx2l&M*ES^agNmr0xrAh0rHswCJXMd^$gEHvc|4oA@pSn~bI>@3BygZa z93!S<&%?Na6{m@HB8QwUC6h&_G}OSy8^~P1;^i^=_z4Lm*n|7dOctnJlg?O6fHJl! z2v)Cq_^z0a1%(|~C<4BwB{0#R2RhN=t39n9+l~QVoBJ~fw%i7(Sz4%5B#4j1B_{ID zo?0F?XlWxNl-lu4!sf2%YV=?Pp>2YIC0pDIlVa|TMV+6K{BffXq{ZP{9$mK3O-Ka% zmUZ6PXW5LinZXh^JKh=WEPTKQ)Oe5jraV@2p{cJ6R4$V8HuY1QkF7+ivHoOy>1Kec zBO;l2EVY5?qtWMu7vG!yQ*L+J5k6w*xsl-G-bmuUmU=?i(Wi7Sz-oo1`}h%^`4|Z) z`a1IyYEt@2@R}@uxvQTv#f=o#^YnP#J>?%2ra7gd>mg5(q=OCH<9$Bs^<21O#)^*9 z8#a~!H%W(gwyhQ~Aau{(U!@UifM}S^*s_{()7BmA8BlIWuN~sYj$R{60+RY}7>!Tx zV7k|Bgutoxq)wS1cv(8ioPpqDkH1U zZ4{OoDR-}U1NysI#XP1LOPVP?MzPqas&wel7lTspgCb>BjXY6JdT zXR&-r);)`x@LeeXrGKPlkJ%`2;3Gf8Az&f_ub=X|`qs#zNY*8r7O?(@H3TpdimAbBVLGIsYgkDplW z_x;h3n~jMC=1jKxa-%(Aqb9dR0HW}NhvCI9!mP=Mah;n%^ODNr`w7#u$hwQ67u(3f z@8WDPmGCxXI*jaZKeewy5~7Y5N|lou&=3J1tk^&+%Lcs%I8QFKi}g5o{8LO5JdcTN zPt$wR21X(c>{vox5kWg}h{q8qvV})GUrqz(eiOAKG`Jjv+nbZ;D+pVxRol|c2Gx8M zOC}r>Xai<~RSpq++wlMgbu-nf6+zRNl+;biFZ23DRe<36BnwL!E1KeC$y0W^lusxI z@7J4}z+InJ+dQrA>~Olow%WGz(>Hagj1Igqrg0sOQcELvZp#+Z`dD+Nl=o`q{@cD#BK9u z+Wd%YqGsE8B+*2p!D82BNh1{xB+|%GjC;j&0k_nj#h4wV9c(lj(w4F!w~GJx2yM<= zGX&0P2%4!T%jzLLA%v6^?E#bEHF4V`MWzT8kg>`*KiSs=;)DxGc{H@Tbfs-(Q( zE_0X4OA`s3OY9y!L?(-sxGaq?vpwl#H2ofuZGYBCFc}nnLNrTDAg)x5lff{?y4-9R zSZmOe5e@v9T%@Qff6#qfEEQ86WL1cQ)aYyPIZu4EcLi09f3Beq51KHko)ml6WR z=b_>MUajNPpE)GNlbMG4-aB#tR8d{Ouegb45OK;$Rud4DqJxna8t$lvT-s zAc0eob;w?=VagP}yAOq?wM)=))Ks}&P`4tDm$hGBd#K1u9Q(sN?m*IT z&$8X5>7Z@cPrCO*d4V~s7lxFr(0c0RH3>mrQ;sjQ{+RNb)@GZOtk-M)*?gkZORi=< zpo>qpSr8tUrpYokFm$oWc^O}3g7Pu64ntGMv5>@Rv^6_i zMg2jQ64+{te|zkdr@%P}pgZ@k-#Z2(_6WbBNzS+qa!x!qIKlJ~`35sgu!{#Qn5sd$ zW}VJ0ccx&UjQsu8cTTGtu<~Zcv-bs4Gj%m+zcg5bm^#1^6xZa6HxQ>Gx0ai%#%UT& zpt(xer`4I=&EyvNGIki-q5tHZuhHbi#JVuVkeS@LzEQIbe;(n9Fy%9`96A(SL0Tb# zXpV?dX;1I96hFibD)&}1ClvyQL4lgcyjnUJ7g9XyzhGF?IXt^>7BvR1PDFfjQADy)Ypl?V@u$J2xgUCu%a|4p~@MrpI?#}{WEf_GS`ZkaaZwQ7t({oc}YM^ z3)6gp|GNUvZ|gOb2z&0v{0v>)(pRzvkK!~cL|a|&bqk`m{}q@N6mgj}PUE*(3uj)q zv%_x1&3VKFqi|%Yf{SScYkfsuqEnM%v1!)TO@-xy((C-s+PX7Q-Nn6Cf z)+ZV)qi@9D%G4S1UZ+j+vQEsQZ4yH1JeS`~Ol67YqO60)>g0`#sypm6J7?rA_OIY` zVz1s{;6<&mY&Al@JJoI`Np@Y#71!PIjv5YyQFB-o6@RhTGG!$~tHxHJmfA-B0n zzkmQLE3#)#pbE7>(RY|hna{a5Of#AGXG(ZOU?wU>Xeh`1=*D|}!y`2K<6OaJfL}RS z(npSyw}*(K^wY8&t1ai!dl`Wa7QNe(x!p2-cwfr5ecIF+NDx3&!=DaCr$2jEknb^U zN=!;CX6)(K{SCoh)q}0N>Xa%tKiftbXN(F!eUffUzo!7EGbbDho+EXf{I$^?Ku%_+ar1{2?jduthm zR$f*hYD$jT67EW;9SG1z?eoNt&A}huiwzvAblMlvVELDgey4@AX6`u)_hyIGrBXP{QEB_^!_HqEBdxM8EmJ+_2$THObw2`lYa3K|$biyPV?zr@H~_ouJ^cLFQ2V@`$N4$I$>2+TY=0&}_hyrb zHwb;@F7?b~HVj;L^gVXoG&;ixD)%wOI3y>Mll|IY<}7+Nu* zr`|&FQ1BMT{&eQTXp{3BRd~c6^MNRB#Bs%O@!s%#@P{2OzJ{v3S~U}mAQZBYc`H@Q zn_!ejWmTaDrF=@GnX9|_XfawmSLsd)6Bi-SukF5E&h+|&mpaT_ZhCeUj6_NFfp8_U ztLojBY@M$Dliz4>61(c9i%rE&7e~gpdAd2_o7LP?`EuvW#@&<}hOt?@weQ8GmOktw zBUCO$A{rMVtRK67&KA`pzeHxV`h_5)_X@ z`p<@`uJ@FBo6V^zEfnn>Vj@HW`m%BmHmj6|zHeSm9m?>-&$(2N44um3ItCwkyd)_s z{ZKC9u)i@lR|dW5f4-zOJuhol61b%t`#OZF#VFxnF|=7o35MS8Znp2a?Nf?;`%k|- z$uajWb4PcBHYI)Ry0)r*x(BBZr$A++mn0-W+r={(ydjeDL{P?xxTjFU#^1>`V1ij;f)T&{|;RsunDM_fh1VRgc9RU`f&)k+z(0i{XbX!Fi>s z8aquY4EQWp>UYo#3jRfnIdB0BaeT78s)ZGs zmGxPkt=lL4D-6g9YvdREO=ZZN3OPiF-1&*L4&ZE!K8OoaMSvu9uL?=`)5Z)`u!)^~ z1e=Ni4WtLjd1bnCQEl5yNq>S~r^bBTP5QR6djUQK7>+;*%Es_rW8h8+hS z#Re7Evey8K$K=j3xi2q<>z)i|(|RKy(JuUXU@{z7dQ^sQt|dTpP4>jfaP6pxHR!5t*_+aVSmrrp8wdj2o%@?xnrv-cT;U9eh zvEz$DRaW_~13|2s3|r`O^SA>_r1xEmvr3o>)Y2t6v;i*|>D}+J=>cFGR7)`;C+LlwLCtBJwinR!J7td0lsVF?)n|NI1phQnQ30jid-=Lb+*m=+)KALTaw9ZSpijNxFyif`ONGVS%&Rj#GRuB#JWyYz za%Aqk{z*&1#KrbfBY4!~p(&cE)52U^wSZ_lLhq8c5`8fwVbRnq_Q@r!qySN_mOkef z=^`Isw3n~T5x2asC8HfCuJh_twGU&X#7c~J6(7}sM2xId&Nt{xz#)!^aeBMQ zRK;G*Hbr107M=loNjl>zdnIpd&I%GgWh7!c6GM^{V&F0gk=2`C=R=7{-c=%{XekVy z65^2C=H%BQ(7OLNK{S;zt9M$DW6T;W`DDl`jq+8ME^cL_HYoGn|1Vff<0K2m&=#o5 zv(_HJPUC*xNpRDG``zSmNciWTKnt1s$HFtvT5I@2%6`;O_`y4{nHeYt37K6*Eg z6~qeL2t)xa3GDejS@vXoRE%WTneUn^cq^o)hG2U?CH=o9^K8E+PY8OP|h8JdL z$NMEA7;7I{j1}i1JC<)Hd*a8X(Rgm6I{8OZ~IE zB)Bt_LHnsuH#t}KIwk-QdA_?WeSU%_00kAh3C?*jdocU+AL#G|Q`UUA_0UD+D>`j7 z7HXp^;~njLiVlYi;(nzhxKy|RSC9({rGT~Pf=`QSMF3PRZzlcC*LacDfxMy3i=ly9 z2ASF4$wqvuPF@h^jtX866dzY~)bx%j6(JNyx25H@%YKI<+Q_wDQ%$F4aNQrO{&(j1 z`K<*H8?m_TkHAhAKaCHapL?R)S~WPg3K*N^i;0<@RkJCXS6zNMK6VP2vEZ0_+i4gL zCNdn=ZaJ)2=dI;E*zYH&z$t*tI-s(SghVTd-JG=LxZKeVP7kxXVtb`q7`1iYl6uME zJJv!DN#RXJH-vZ8J2W4sU(5(aCTrwb?X-C36f|d#h5;NLnL~kQmFIu@yJtW9K6N#r zEO6BF>N*$*NUwUOil!05isy<_*0g%!uT;rL6eH-K{UVvQ4{@z2;9Bpy2j>@x7Q&hx zhV`@M6T;rwNB{@pF_uYZU2`ARpeq*Uu|&^3$()-0y43fgftHM4^bbzU%)T1V~NyT_)`H>hBBpbv=Zb7SGyPQ5>aix;Z`*!1Xrg$zD5{6(|uUW9A+ z%2Xmt4u8hcK*AUpC*g{!9^;p-It`9;;4Lv+DBt7Ex*@Qb29I~0f`IW>1_CJ>R!M;r zV|5);=t6I5HKgi_$#@C|Gt`SjqwneR=6xP?&}A3!p8a#@oXjenZB&pSQ;6L#hsL&^`Q~c^~zsF4*J@vuW zjR;uiAP7nNw-D5sPnifO#u>?l03l)WXTXLtzl0p9s^atIW&b;#bnJb4ohc@ayho~t zN6#S2?l_RKW7Gtz;tQcin+}`tHSfSvVXL9f-NiNo6(qPWdnM>j)HzIcVD~3##^goT zfOwo=ar_r`|~c=*xt%f!1Ah+U9PSulH>i)t95YyRH}#uq|UO1^ZJ@q>VRY!zNar z+zu^t2%dn|`GM{4<}$hqr<#sggu1%S@X*f(JAmm}#<+c$!q(>=zSu#3SdjM>vw(V% z#GATa1c>WrJ&!QnHbFqr_CBRJge6zCb$^+Vq)CJnS#L^^4A&gfi?fHVZH-;CURYaYtLhc%sryuFrrFyjdt;O7u;Hf*2fW!UliB0pg7t=)m+R|JDgsD< z3hz`cg`HXYrS0_9({GPM74!P(&Na!uxIqinwj~3fHcs+Etz$D*uG{fU1q8;EOoFyN z6=hJLwijM87>&>-w{#v0l?HQNGqqr>k=cFnq5nG_HIYqoyX(Dm+F>^FzQX{YZKM;n zA-6UEG-ZcZ!vEd69?al6ZC)Yr5=nDFQav&`40{d(hHm!+X{tH4^MpqXoUqSpWNXn`$c>BK!q#I+Kx zeC>_y6$}OBX|eia3S{q8_mwz(doDll%$pmhOn8&)35hTcaR%!eK8pvYhRC^t;FAzt z)$py9nyVE`hR?YBomV(wLgz^JM)62a>!ug>cQFjpapE)l(vH4X6*B9|#ByK6q}WKl z+FfMI{E)U{`io>5sUJ%<@B&Zc2O)f?rX3+A8ZMqESjEEs0s(44bRJsY(v5K*ns~+z zsn=Y_D6%=2@U6(dYx$%4H;D*MHNw2tE*8#dvWk=O36= z`B(A5Bb%(LWaoI~M6246N=;H77e4rHNmXdwLcB%>jU&fIF+elg4cgB1V5FZpz9tGQ zG!uIEoN>q_T`rpFOqPZ9+`3e`3RcO$pagr?OJ;>j?h!a7WM$d3pz7T7zQTJfHqRln zdd&bk!;OE#E6IFeUeAGT{&&C+)T;a-M5F^+T;!BVW*xB@*WDlwFPqY6#ipu!n(cKz z^q(T*X#AkIYXbeD`Ph`4v!w|d9~WNeS(*z#0eI4@VC+!fHZu#Qds!44>HEml*r(RB zUyF?@~K3)3s7`yk;DBCdKY{1eX~i6RZ^!(TbrU~pU`6YLyTPPI-V)E3aR3VQ|C z1ftj&cJ3J^%q}Nu(|wz6GRx59d#j2e?w3k$;4b(QEd_!ofz`#Qvg;+t0*v7~lGa`S zoDQQGBnLG#_FX|Ys$ez^mW)Ac!m%gor93t|6ppE7It$EGodB zGh{!{6cv>aVYXF1m6f!EE4fbufu!#|`xfqb4VhBAb2$Y^Kwf8t761xu z+idhjiSCC>Q}3IFao1@1Sqv24nZJ~57c{h(g1s|zl?0}iCR;RNIkIr6X36wA$RU^a zi1GQP|A{4wfA3|0*Ii_rJyo^NK&l>jocaC|kH~sM0Bqp4R~ba%vGvp58S-34vUzmS zGi==43FdqVd9Y}ib6~*tpd;lCMV*xS)Wb~{K!)QAgt_O&%|34o`fs{7b+N-} ztzggYIK!_z=sz2+8`}Rcd1br0e1<-;(zG+g2xGfUhrwA?gki`w_8>9>QQ@cT;S)NaS#$mvZ_-O>TY7VD95G}es$kuPDUxsYhG#TK>H*H9j5q(D zhn{qD+H9&!U717sPv*sD0>=*GRvLkV2esgRgoqajMiq@bg*vb}<=E+&iluq1{D2ue zMJslR7IYP=bC|flPj{J`scQaz0k}_628Xbq5bo3Codx+sm*Z)y#-9-?eH}O|Om`>u zXgL|noC5T+QA=ZGR8>QgVw;f@`vYaH#3o*}E?}T3LA$8v!@)s`c{j^sMM^cPj%ztM z>)Bdue-8I4WvNqJ;(QmheUEh5Bjog5!m~@pKWF-QZS-p20;-yc=0jFDq}T(lCpXdj z;0_o}o?G%8OxEFIa~G^f&-n#Y!R^(GI<>Q&dpJf1R~c03Yjh+0-UL{|Vsps$Ngf;Y)AEqzSV9f+Unpnpyw0teJX5>jiWIwVMx1J|{)jm$WO|#9k5CM0p z#CkDxV>BYAFug+69OK^acMJR-8VjA0c=D^p>FaokfU;|J#(+U`&@h z)o52uBpr*TiX5bp0;mW16T`Y;tJ3rTA3{8GUs1MynJ>)E4hlS#0on08AlbFR%EN;o zLxKZ;6 zF9JE1f+lLKh!YTH4JUT)<9|m(IjeF8_cozfARJB37d)lTqUHTkAQ#g!>SFI%vbzCA zY9v+k9HSXwBetXsdU?I?JqWke&yt@xOUi0R(sO@>79wr?ce{ZP;Y6q?@N=W)9Fk)h zfD6!RJ5yyGc4AF_3jQRab5P{x9L*drY%?r?_zI!eHE8GJ&2AlyZg()b{pk>9L5;n%($fG+PZ!V^nIEtcw=vZ7mkN4KYQX8%6DEIK9 z^o$~R3knCag#3wto0X*FWIWY-Ui@v;&hAP@hpxa(zFar~ca1qJjH4$ zj>sus|J7q_uv?AJFc#`$R{$5$8PV@#=1v_xoy&^@+Zs!PBm*r#)?036h;cBReGrxk zk&*tboY3QY6FXWTF4wEC5aXuV0)!`wOQLV=nRYzDbZfA71)fDTN>2V|v>HaJo{RmG zd2di8Q8=A#<&BY>ABqT9q!!8aZsEAVOsJ^7T@80`64O?1>P3m_Pv>Ps?Vl}$KNWxd zxqUZP_;n@$*{Ln0De(p>8j;hJ5g>GTDS~mD9ZsQ0px(q8R;{g~u5rj`FUyv@L{9xr zGd;ZFhrY&fB&su}a*`hbq?)73rGHYg&xHd!C(R2wM^pAwOT0?^uNyhD7>id!IG&Iw z7Gl(R5rF41D8`L^)93a@fN%>eDtE;ERjEf%>>QgkO|o3@7ruKVmNh#!g}J?mofBki zpJ(5eA<9#;=VmjtQlL!&;F_G!6#Wk<9oi%(jRJ;FG#Q0EFQz-^nw3#{^N9lmXP`Ix zX!t)?>MR8G>a~YfF6@R|gm=&Q%`I~UD0Ml>dF#pjF!U4%aX?8OOB3px3WrlvuO8!_0cn!8L!5B+b3V5;Q}ggaz_=;md{p2QIIWJeFFDyd;@u;gW zK)hEusB27iW8Hlp@5Rv?5$ym)K)S!2?=&BOxLq4kHb~L!e>i?KjaJL+4$Zcq4<)O) z*bQa5ua-wSiR+VKUlw3BnvYiu=c)w3CxEclhDj2y1b@%&z)|5h+4tawU0%O2G%i%A z7*}oMy^bu2;=aiki|EP>=_y$Szs^L zfg*=NLOyQT8tg1g>{&hnA{NE5sV9TO7P-f5U680x-}{^_&dT^Kbdr_QAg{j<$+7raPZuj3v2WJ*2-F1DHTX;ZXd|xC%VpIyG#(rol?FsfnAtDya{C&wiw0;h=$^g z4|;jyy(lgcHj!o;UQ7S7YcF}0&G%+R&TA)=MxWBFNNIEjhw*pB1>Ksp>c{sH`0+!& zhvhPG+8+!Uq+GM!bZnYMT+hGZe#oc>oIou+W0FFODWOsaWqaUjn$9ru_HQw0ISf(h z$IQ9E_D2gdsnzL9CC<{h<%_etPvo=$IL6KsC=|y%Wmd2ZUjoo9<Dxvug6lUMcS$t3A4^JT~r2@pwm2ZoOVPxss%F4&1-P7_xGWn8ki3Het{ zQc3l*g5(oThIgZyUHSCoy_Y(Fz9zf>H*KNy!V4G=9aU_1{KWJt(bljAqKBlD?j=Oe zeIa`jk^7q+C<48%rpyRXE|W=GtsBA^-=B(a6mSpTGJkcoCKhqqK!RdL|I4F72wJPi zv|UqVTkNH|#2tP3MSz_C8au-259j}_atAXYP~q}8OWceLAgpSHB{br2M7PH8sK&Fk zDsncS3+cywWs+moBl83b^?d}?&>p$BnE8I9fhmo+#Cn!I+5+zI-4o)tT*)p_@W@3d z&jcoDp!PK3Lq|<~b-G`CMpNyVubl}PfScyX5-A*8ty;Hjd;s;=$7r*k-Biy^@pb>u zee!wOP zWcK~{!z~U;T>t*#)0?XJBNYn$N=LKhb7PI7GxWJ6enN@lw#{jkX3!g)uS$y*Tup2h zfSe_kZ9an>^mnN3|M?1JM)2vX6oL8w5*sb+ud(KRD7W4v zZp!k=%%!zdNunxMwIQ@{)9NzY@M!&ovP=avUp{G&pLI>I5KGDC76?s=uv6PBAP<kW z*Q5D0+KJ;kTvn7J8!#&?uaJLKN{wPFWrTOAGmSZTnSyE)TEVBiVB5}tQKtK2JEHt< z3*t>B#SJw{)kl*Ldzem9MhSBCVN}{Utn;-qYFR0Nx^$4G-orp0t*JJP7%RWKAT*|< z5(UAF{Rz5!e9rQmr4bckRboP!C9>`s+Z3o3z;cDP$iQrzLjl)FB%RTT#v{T>UDyT} z`YjE&v$mHw*B22&E}|V<|Ie#y(kWST&-f)Rpy26lyC68Ax!?W&kpFzi!aX!+K?Bqi zGR3LiAT@nNL#O8JiS&Qf+NxWIn7+qjC*Ul$#s5uv&xhktpKBys8cX;7|0c8km?Bt@ z4jL0Zo6CA+?c_6|BG~m&3Lu7ctB^aKe1v&{k=t(mS9`PQN&lY8T#qa%o2&3A_n%&p zkp_Ra*8(}$^#I*OFD+^Hq+-negx*xEJ8>*U2rz6YY#^H{CqRDPb%V^iv3(&drhWM) z_ot0c= z;$r%suNE9I2rraX3PxL^6=MAK-oY20ZucHIH`lcxLql)=@s0MG9=)W`@+TD|(yC5@ z1;JO~JGvu4d@-B8y?k?mfp!9etkW9aW$E!bABZWNWLZYk8?SV#m^9r$Il$3xZB7UG z2@lY5Ni)~!4)*9%E#mH76k9sm6u<|E!~1y^F!5;CwD~VmV-tRGgxZnj5EAw1E5&`u zYSg2J)Hn7fwx7Mp&l1<20Q(Z#(eJE_0r+^@g$=UfA17Tf&-92z?7Qft-lQU6iV#vD=8k#;23iZ;uuBL1b^*B3)0!N)fp_FKiz zqDMHBG^S4Z-mbS3w^kOV(s1Qt^y0>E3jmlDzR*m_QU6b4Ex7TxdHoP6~ zQLGw_J?YPyw?S8|$dRmL3t|?fonFW^Lj^)L*Az3nY!oorWd5fRWY$}dKMh}98(E^- ze%uW(3JFd|*#avjLK`c~0J>JyyGn=dyT_qtP3sLT zloIA@%bzg4Jx&l#x0$qYnPJM>oA0&l67u;IHJ&-}y1Hum?#?{MPbeW@X>W@Y%6t|j zbN=XWCLcIVn^vTc;?P#!`Wo0J<|=4dM7hRaC_(y0C|o}{Mmvv-Koy+79B5to;qiGb zCs>v(nq_78^bfmY6{Z0$oUyU7+@BVSl3P}Gv6}m3FGi`69quAX6@K-Q5s;P_H%W@6&zo8;6AH2btQI$Aa>B%ERG0u$7f#!xLX@?{y+p^hoZ0FOM+GUZToYy z5)6^#SP_6BauLkDkD-4BkVVDlm-Ryi7>F_ad^*jAhzwg0lXM!89g42H4bU-co~eSq z65dw{AK;cCAn{mcDTjN|R9Xlw7*`sue=Q*DjC%JHo!a6m8N|!rZw=zkx3{0^3w<&` zLF83@%SCl3ivMgWD7;8(7mnUgd%pDE1(N?ZY0u(a6a4gfhroxy2iM^U{VptIhZqtU<=i zICLz9?Fnv~X(Twqq7#A59c2Z%$LfOjIAsR=h-b`1C>}lKQ#T z#_ut;+LkIP@A2NDm@8BU2O^5+BG*2RvLaZ6yOCIIl`Y~DY21Qq_*Nc|73Q+%*nYK- z$x{g{j4D^*j}|X}*%-?&r52Z2H57Z{Art_3LrAvW2uiT_Te|Mcmr7Kqns1z=;>bb?^~+_Uku^loC9}CsGB>o&OFjJCt(P zY{+bLW528~qd~RD=Ll04wcZ{u44dbOX4xO8xAZqin!w_tKeI>>95}^MwmCioJwniI zo0d;V6xGkp4$Hxkr)j11h?Gj(-TFZ~lkq6Go}X_)4y$l(9d%E|!P~$-Rq~g^SP{PE ztdYd8!EnSEpO=wkw})Kq%}c)eGS`j5vMRZz7UO_(egIQ79#4%kqs4|-HJ%3Oea&EO zg?BnuEp(!oq?`Ew1S*mM|6L@BKgVaj=sZB1-XYE>Hr}6tbGF}dvi*?E>5lxKsfSQurq8yVXJC606GB}H5Ko&{coL~z4=-i_#fZa%x#6*9yj~zfyixr^JLIO#0$Fl zq-f_Q^=B<#un3cJ17lK?d1D3Ae#3Zqza?H1ypz`3y3R|yuF`Rt@xR4hWGSdINgyM>~}bxg3owA?=>Qm+0jD2WTxvzC!1U9Je#?1w!aZOJ2U=Pjk| znYJQJc2K?r3Qi6bnf9M6jrzXy=m-g7AHoO_&^gn9L_JKB%;o|RK2-tqa=o2YfKFGC ziU+I$TQAGnb!^vj7GP#;F@_x8B^u^h5H37wjE2U8p+H9?G?W~i>qp~J&86E*tyCj4 zb0x?yiR1s~-_~cgTX^4UK_{@?dSq6)_q6Axbr7HuhE@b3D5Q2Rq78<|E^1KqUe5gw z>EHmg+yCqmGBlHXTzn09xafuF^@rl=9Zhhh|8W&8Sqd z?gDX_jqJ{HyMB^TdNNRYI^{us{?y0fGY7@+N+~dWYpRHI1#wS0-5*PF6;=Xyhxe$< zB^g-t@!A^8%zHtd455 zj7dU3V}q%E2eT&#d?T`;QtXaqjI>E2s;nn4`m77m`}umN7r~x_qD9hfXXQPwe9dhnz@hwKkh;<&qG2#a{fDeu-Aqp(bq?uDBMq#&vx}coKGh>$1aiQ(w|2LRLF;rl26G`kefO zlv`(gfHLMq>}QrSrUwsjt&lDjrK(Bi!Z-a)J1dH_r{;N zF%7dEa`bF2s|^zO00B2IcBg2Mukq9@`cMi^0C z2Q309iO@-zHri2#kDKxO9~yA%MztrwA+i3gCm;Pk|?`AdNe>@w?kSY&nY>or901Dew zw_Q>gtkUf<5-r@9gEFOK82YK=2#i@!;N(^yNeLvG>F;J&tBIUf0;acD>l4Ce{8j1)PE&D(@t$kRjiD zO)*nnC;!$G$ivNH4;v}DKf)RRy%DVYQmO9(kHYxGmjkh&wM48_2=9B4OE_5U>woMM zL45t|thRuNx~2E?m+aNsgT4)gFA0c*`aQBpNkGa7Cw}tYjfVs6i^APniOm&UCb$i> zfpAjz2NBCK;VheGbqfF>{4hKh{u!p5E7wa}+8@gzZp22qB;m6c@xeOy3bx$V=~Gnw zMbV$s>zwX~dmhy7Zn*d8-~_dmk^@z}J^O=599uKgvMWihSTOeSWq9UGeAzDMm?|rK zUXmtT4%RpzV{?RRUs7=4JHQJ?9n2pBGcfQlq3p&e!Ru|_{D`t(UPv8zn=vpdK;%JgxOGs z9Zvu16rvNru*jbjQde|4(Q$j`HAov>K7Hv*60|jHeG8{~t`Qa>#4b{~ z@h^nR$CMm~r#Z^C%wyqc6JSxp9Q~prP*|6RK&LR(wSPUO|5~2o;TFntXfweVi(t+y z!wawl6PBWpSw&*jsNYOrV)01vc7Yr%(KXDZiKgdX4I^HMSz|dD9~&4rLxCKwgVk8X z=Tv>_(GNx-N5eUj(8de<6@Zl-#cHXe9|AN_CwfM(7~!6sPXcC0W+JG$PwJGPM!sEi z(Mb$@I8b$SFtPf-0z$8E;fEpUIZtiX&;iNR_#Q&N_|X%{a{q~pe73RUM4#$p_V3=KHv z^jO{5Kkp$GYPH9yE`SeFc{?)Mdm?#$WUxj{a5Ln1`3H5$#6 zGgNFu_Mz)u_ahMRzpDDoksvYCid6T57szOEnsdk$@q8e4!v?n7KwG9=E9UkaH(x9t zBIjwHoxla^bY4lnbWlJHBSW{g9^fZHO@WA}Od>JE$UzowIpDAD#(JK;OO$aWSVI$= z0$1&!i19Nx7BF+e-mAkoJY;fe9*DT$cyCNIR{fs$9fuU^Z<$R~3+ceglR^{`@opdCxAzqb;H@BIO>$Ogjuh^}nS5D@zRPnp@g>JU3 z`CZi6yk~d&k+i3+fI*oZdIxJwePr`&0%t&V?JmAKXk&<$JD0_zc+q6lhOUM-M@6K) z#6XBKAN>y|1KXXHXyt0(ErHlx$0D+Y&yme zRkhno#rn@_srp7GH=b@u@V8e+#-dc}15>BKQ+o4lO;-l&l`s?tWyT*biO}hSO9+Db ztL+ILcLlw6w3^#NUb-iDy>PW6N=#7Px+C&WNk&jA4qQQ_FiiQYs7jkefmk00M4TTY zAp;-qel%VJ`%n~0!Tzu%CO)^`rQZkf5tNBr!il3C_=_0XC^(AlP)E3tM_`i_;`g|; zOa|3qj}VW72l+%2Mbe9Bww*CR?6+7yN(b)^286UARpU|V z;6Ko-(lSH*w}?RF5Pll|%L0Z|)kB)!z`u+qKnXRn(3bN4D&#LI^Ip43x*VhmI?ywP zuJBQVzYK^9F3@UJ4_&5LDK?29VB%YlT5o6Yrmlq6==~m;&A*h)7jra&5TkzzmgMdi zN1C(AcGZvsPM;0BA^N{*UZWK7`5mD22)RzFDuP^TivJ(SNTdBUN3mHc z)Od^b0KrHu2+mF5)D#o0#D-nCU2aPPi<}qGMzB>RQraLHG-|wJ<)IywCq7j#4T)>E zRl#4OsPU~uT2iJ$wliw}@s^apR8@6nvP)3IaHQn7|LQ1^KO}YLNyPWk%uTNE*eRe+JIEzV%G1Y}T6apIx**;DZu&uqL~h7gWKaZ+8`bDqo*O}=zl zAn=!Z6!zk7DQ&6Y_Q7^?%Rm3+Kt}RyF{IwtxBZR+L>nZRJ^Wzg6sc`$9yA<6j@?y8 zTHKO62HNdgVp?B)FZdU;#XQ8xFvMdC2u*!TjQ#%e7_7Y5v33EYfA#stW$x|beca6J z&APUeNl1zAF$iB2O~ylcjZ)3c|7!r|zf(+%*!W9hln@NvLvIES&r~8seA>J~+yrFb z4m)FvmJOfnj3KaT(_xkrKT0wZ&e}J6_~COOr)XDbLZW7Gm|3a!-VT~WTj(4%HZkyj zk|;e7KE8T+SY9Ui>aeY;r075!Refbmwi?Fy6c?WbP&~_s4-`fvRNI^r<03KW&8|aR zmm4Pop9ty68|FA_BGL0;dB2=74uQCxWygZ2%X45{BsZqFlPB(QxG3V6QD7dQe2U%p z*tb$m<(FGL=d$lt6Esy?JILUvn?Sh&2WgmbiGS3u|;aI9cwEN@cP@N(Gh!{go8mbK{pv<^~FY zmmWx-@44c{pWWSF_}GR%nd{0k&wn6$66{FhRRkn(-YohF&XULaYtgYcF|`=96ZImN z?-&4TNUg5~8#P~v71;PT580>wa0T_@&iZAMM~sgs(DNCDyY7~)m~62|H$#mj`LL48 z1RF6|m2N_YP5qJ!Vq(a4d~x-TZTfpP%2%cb%I9A{&TsJ?4HsjsKCv zd)u|nl0q1d4!?FvE`UW1=DIh4Q__pW75QkD=1A((6GkYgWE>yAIe|3a2emza-xT>D z65Q}NQZ}TxH`BMaA~KoBQQJFJ7#Gv{DzxHz@uWkD{-T=NB|4lX?wC(t16f|Lx@x zzdd4dJdvl#R94Am$KMxEu}*UeAbCVuwZ4P2HMCx-N#&=%`{ zfvuh^PT3UIoq&H&s#cZY-CdCe+aa@XO~PG2L<%`BCQm+DC#TmH{kYc5#s|(TD}k#> zS3)+$(3yh+kmoFU#P_w6J8g|&9ST|5Bt&Z5e|H->>HuUjXpO_I4+rtd0UpP{@{fd+oy3Z~60G%-&{zOy zzB#if)$$C$bK8QFI z&w@9n%VKa;*17b2w(GiY(O+B1<8HUUJ4x=z^tIg#*sdA;PJ|Pk<-f9G<2^A09v$Wu zM~+wgf07%2uAeyJrJ3fY&VPvZpQJaEUK{~biH(GKT45NwGI2JW7(J#PPJP4pp{y~B zT{NJ9Tahcg&bXZAmoeD_-t_4RP!q0s>I>Gq7%*%M&!v*MY&m~&*@IsySbZH zY!aG96P?|87=v0uz%0Sk#?XHm=)MGi{>9;J_<;9qVch3eaE^2pT`x53uaXQQ-s_7m zS1xatU$ilBb99hHJT;*i>$;vlAsyH&c%L8$2_wRIOJHG<&xk#em#xa4gwoa%b?wD z!l=%?0ip{APbo0C7incWXG>&TnDo>dyaH;jblE=wc?AZU%%k5Vb!b)03H7HnVk$sh$zMoOH z+Wn0wiGu}bj5|Td1ln-yeg1(=5xzENe)1l*=b@Y!lpUqco({)VmNVMz9)`~ zPhWh>>EqQ1SFl)W77@@-;-K<(|JRYpcuL74pdb$&A6nR-$nns9FI{9s`}^WSOc0IC z2PXFpDPJ6Qq}Tq?t}nzr&9GPv4i8b#WSH^D;5z!uWJJ4*)uw5-3Wc7{BnmQWSoZ7n%IAwoYBed>FjJ zQ@N^kQ*?Jgs(#IkV8`&QJ7hGb9=?g4L=z0s(WHW5&}&{H)>^wM33z2nUpwOo2-1TQwmj>|Zu4$5_%6hv5`7W=S z&}OxulEhSx)flAn)45oQu-tr2bZme_L%AT_pMemDDq@v62Ch)yos_kbQr7W1)e!h3 zm>Fz$>_+MSx$nyfJz~d~1}jMlVYTwtY*9m#u8-ZLh!kG5hJAmH#36i3aLU;^4~msL z$^yPTFO?N{VTPZ*$e;h@u4C(M&#Jrkh17K!!#ftflbwy^-pE%{L~ ztZT0Pyy>YU2CH)({CERw3)OLY*Ln|Nd)Xirb;Dcy+=zAglpyr~}fN8(>5fJ7i7d;7FI!A$29?DxE? zk-e{0h9ses&xxVK1BAm#n0N(&!!-|P&RNd9cNR^FPGAi!+JrZ|;jpx}LKJaBRFKXz z4%?e~lBjFA2fm8ChzE*-QyJtwh*e#f8pE|gPG$j-8}Q+m=^;>?`t#8uC4iHClB;PO zv%;=2XLxl0_es5^?QI6CQ9qgToV*|@@t~$U<}PyVO3*X!7l>?x+dp?{&f(sX7m^AE ztcb@pEEm2c5nku{>J=f9B}D4QffP>YzOayXFhdyF>4n;L8)S7cse(9DMe_(>8EE|9 z#h~M(AXUmKfxT}{ENI5WHXAVHZ8=$T`DH=I*l-P!o^Iv@>lS>;P2GuYczBz_Y4Zq( z4$5VXF~wV$WyipiWxGbY^V9I3c61P1RU}4QaMs_vj8##OZQn#SE?oN@-n6&aN=9>z ze;QI%DuuGSVD4Q{ZuYd%%O zOdq!spBuA(XQ>;W8J(iLZK5shuMxUnrq&l}7`xwynWVcF}7{J6wbxxv2`s-t1b{yFvgpWA?lMB5sREi<0-F7_+0~(l;HJ0XV@Fl z1vF#_hTJ(yjI#Q1Y9K}218oF3e+Qbf(0x+Sj^#Ug2MapR@(zR>M7m8KVJvMJMA2sW zX`bjgv@r~TOLpmoMzSFV_f;9?lXynP}2aVOUoQ*E==RL*eQK-Pflv(nX~l64Kli= za|1ufdUjZUv1oTXX-zCxUSSodgW!+p<-#*xbY9K={R&5*sjNEO5#ZX7^$`RM(LaLc zt*kK~dOAoUS?v2Wh&-5XV`Xj(+OY!~M(rKvMiob8zS*SR+jZaTa(;X|GHW6MWAIKK zpJzyMV?=MO!EBw8ri-FVy`}X(vVoOkwA~zZiWp!Dj<8-&0 zaC*oSa_<7jS+bb+_ptj0;!6Z|C|k*M&0%V9<1BCCE>-A-y9FmX!$Y--+Zm8_D6N@8 z63!e`Lbp0i2e=j%HBE&a&UW*lw?QL=oOu$s_;-QR1@1E3A=ED?@pX&kLv{$e(DeZz0;(fZTV_=z#xl?4OGu@y15b-Y) zz#$uQHt5mWQsO-_VowXx6Vn<&LsFYXI~Jx^JWKP9Q61@Dtk zt}5i1EtVQn;8kJA*c;BUWlM>@L*`96^wG2H=aP5$K?roG8eILSIEu@?8f82Ikgo~Y zJ~FVr+Ux0M{D{Ge@cpb@7GF?l3&46=1_tcOp+RU0G!t(wpga+&mOe5}w z02%#f*%+HAF?T6A-Hw=NcBICiFKf+$mC%z^E|~<<)ooo z>t#=ofNpDGCh-(6&;sWc$pFhFtbfdd2A{H)&);9J&4+`RZ!}NhJ$^P>J^E2@u(7BL zIhZA1{mnJIPXMsZ&}{*9shEbFoZ)!3_5rTd(lHmHNe&Dv4? zE8r;P=Pj=a7!kd#+YcYyP)>c0%a4pa?KVz%$lXhK>C8?%1=2L+TF02AIc# zFHQWn^p<{<^mcFNmF81H+U$4j3Pu>O*yIvd`^svu_sawq$Ey$;I_fIY-g3#p`y{}| z#M<>2asGW_uLt;WCWHtef9oR@Etll61tGRtrZ!xF1KGSY)cWAeZ;PP9Q9IoL^={sI2 zHXds|3Qa|nn-q2&h+*=wDJQ1EGK%IdqmLdUm@mr5Ljj=KrQ~p@614IUOghWJCQyoi zq}-y{aFTpS>lS`-hvBO%6D$&!Io7FG;Wd|^Gof3&#o+jbGQ{xt=0`nx5%RQ%Lh;ej z`{Ig3p6Kd>>Bf(#M{DwtaPUn>URvMXNy!G}*c)?aid1@M%{4nj_RzcIjXx1(OO-l) zt~OR+W1Hz?5ibCrz!}{opfDOj8hj7l1vX=_w^>6zopJDtSsd#Atg`s_eN7Dizj*?1 zLhLts&188L%O*9gXKQ!nt7tmF{-l3dL$zjDY>h6>W5>GxaMjJ3JQ&5&`QBFKA?n7q z!%o*9mH5lDaVp)2fnflzf;?4_K@x|VRLvgA)=2QwQ z-&SPt6;dAU((-gt=XQyLv_K_Tu|tO<=$<@ydeo!IFlr1~>Ns;!)u;N)n%VaYG1Ue5 zkq{tghSRN4uE!edP4Q6g)(vy!1NpgmAX;VXgbae@GQ;m8c`***ROsjv{Is&+$FAcb z2XK~UhMH7ytP?8`fGnLgzk#6-lXu(;j0*M3PCqp*qhjpxyAE1saCvRBhIHmx2?J8R z7c_Z-i?ZTFw!+s9*U^H&;nMpjqBDXeqDaSU2|^LOZrZNEfta3E?E6%Yb>i#--iS1( z%)8a=E|`knZ6~U5W{q6GX>NWWPig_oJO)H-TBV{89OvEc;sLk1uY9`ETvu6LX0jhgRwQ ze|1XUK`~F3xCai{;#R-)E}wURD5sC_CgqY%h0wE$`x1Tg|F{U{rN2yIP55UVx<7AO z$PzQ*Gn2642(`_CNX`~O&=td(q&@RF^NDhY?EN)q3R+q*qX>HmUeH&2%?wfV8mRYY zXQ9o9Nx`)Nwru5A-?^et0dihga%Ts#RNNf=@64H&t!gKmpe3UfN53ZfP%Hey#!YK3 zq9f2nH{htQGju*z&)Zb*L?Anm0hLZhW6Td!rOCutFP^=A|DLxjGK_Cr>rw60CiSwh zE~OtW7YwL#fhyVVX|Nf~_^}590Ul*WU}3~B)eo&3BmBOAC%MyZE-wqoNTb!v0^|y<PRZ4#B-Hff5>I~;3g1!Z zo;Ah$2U>LcV&%Sr;w((M?3q_E{4E9+lo~%S#*%2o0jNud)SR+|2T|r;2AO#|M0$%VS9gI9K()ur%0s#6_Tw zhGCYDh{c(|yx(Elr(;nXLHh%&CP1Vhnw1&%3RTU(6yX|%GoL|ezm&xTu?8DcAEivg z*n4DW6PNj-Hrnh)X1XE=mz>bBj1kC5t>e+D0CrQW?O1(F0$WJN|c}LUZ*D`U88JZ({gYR^T$Qmp5`mjqkK=AAkJA! zCd9M0R{0j8X9qo`(qfiTG2!MRKhI`w%BN?Y4*U<_*^(ijjL#9&^Vnzr{Zc|VIt)>?raexucc1q<4ThVXQU|lnA zR=qF2H?gqYdKYO;{5bQ9feyTnP6!K)BUG`5rUkh_%5cl1wSL8W3=oKEG6`(!Nx!;z z^2W*1XoI*{jTK#x66e01A+b8q6lfZ_<+;eZ1Mm!rTJzaoO#*r%Nc)`{3MOXNS`XGw z9YBx>@C`L=m+xK30Heh#qtnX1!h}5{zmT>!YWlwgJZAw36XN-S#Q+2oej)rK)3TZiLn(_gpYH#`97?%+%kZ0 zz?GJ>p($h)xyQJI{ELCO@(+?MjNiT~j-D2%h&007mh--~9D}C+p5enDs**4QSkfyv zc%(3vSuvKh_WVZxLGXm~(aHrF71J$^Mzs2Mr>??yRb?2_pL+8C`)Lbgibbv?qe90z z+SA0<;^_ucD+1~|vpyrdlt2N=A{Np1=`50OYw9Lg;RoK6;w5{he^4}tdy`RnWUMlr z>d|?t$GBElOHuFvN|V|e2*XIPL*8Inj}r%s*PWOA#*}g-B`h7do0{`5(mS$Kpg4;h z{VWZZ8#Z-Qqx4CeNr3d!&Cm`{{@eYk-Uo}E{_FA$LfkQ_W(r=oGSS9AoXo^EzAebp z*ya~Q8UvAX{VZU=SNrwnyD(57i3+-{gg$}wi7ZvANr8q?PQ?eJoZ6t5I|2t;g0)8qUt*5fUT9!<5_kXD!$Muk zs0%Wh>a`mZmr>QIv-GtcRkeppq+t9^O|b$UOB`hSwZjo z3C0q(R=V7Bv6Nkuzh7~oGDF==#x<(pFEJ(DsxtPP`XU()9DqBtnz{jO+C+iZ?`2)mQXEx#PMK#S#1pwkUqm&Hqq9rd%9({;Z z><(G4rs`}$6qaFymEjnvIT?4lVU@km!00>gAV~=k8{GX#9cQB{@Z%pqJdEyGBUvaZ zVa5?FAY0QP=49CRWLh$y?rO3IF>nqdgm`!UnrVEwwgbeow_VNY)mMm-NThp4myJbK zGd9ohO&&fMZU`NBf^-1yu=s%7czlZpw;(Ek<>Jwzum{Zc?cBmmnfU;c5j%n^l%?K* zagKeUOWmnldbVv%<-)$=?HarTOKtx_WCK`Mg~|R5l@7$s8RR3DStx))>2{$~Hw`zD z2R9cty?v?USB`ItdK>0>%q1msfwR(F)+Jmgi;-?syJO?NdC@=-6t(=$ZheW)5;G%# zgchd!eY5|-^i%d^l!2sPruN}s9g&gQ>Z>mNKNn$EdSF$1fXREQt17R^d5|XebI+n_ zrZ^vMOqmkGnhC!4c+=(37R?P4wN^pB$8RQJn>hOIGM-FN<)@9 zSVfeYvq{=jS|>|(Zx81Bp0}<>meLq%%Ot^k){S9agcR~?e|)V}PMo=6YPGBKHt_e0 zcT%LjMWe|Y8)FgBGXGPTMc%X?Is|%4p7ps1#BE6Psa8#u(}NikyGfFM=*cXw`XUZa zwT#U4om?QylY$g0n11=Pi&_vn7p@TGpvhd&q)FM>gs`0DR-VrasuJ3 zYEbrzsg-0`pW@|16l%o_(E1%`EbH?YR*k>`;%yy12|T9c^wAMpGk4aQOAvHM;~(tA z72n_AAvzZ;-y*Hpg~EF2Z0ksllcKf~$_;6tA-gNa74DUF&X&TuK-PwegLFe0*qL5? zOb&X1xPlJzM5MoIGbC-g=C1L9SMC}1k}iHK2*MtiPGYgH?Gc3pCCt1ezxg|~msyj{ zbRw9u&%i}6@I;A8rgS6?DmW(!v|C|5>G|-sKfcY%5*i@RqzSD4hswq`r|^?gMF@;1Y2C)yH@$J9^%B!-Qa)(G_@ z&&Ce}Jg2P)fpLfxq!LSsP=%ckWkx(_`6JxQ0?W}oP3S5BmGv8jue|V{zU4ymJ)G%v zx;Ooyve|P;KmR&Mlc{^2Yvc%1cI?G2VW#A~W(XDu-|bfj-c@T*{KwMM-2N#@o=Q09 z7r1v8nZXgWI*5!qg`Viel|3wSJk3*hEwB+VfxR)5QrCEctLFzC%%QKnfhg0CEL)Gr zmRYRiD}UE>lw++5g(CkZUhemGG`zrO&}IHicw+`=6N7+v<%uE}(}w;3lL|`O$2}Y( znZsotSS=7yn}BjrE~GceQMn$c!R-xRHS?SoWiQa-@7+w$}Ip09K$0Ol8kw{${p4%?AR^CD$rdin74nIN%q_Cq(&_V8XBSTH6~^Uw^&6OBQIy^;e|t1eJlv@6*R zf;v*XCnQ(tHt@|4J#BhaC?A3mSj}vK5b@t~ka7>eMnW~fTaC+1dtJoH7|6|@+pz>yM zNPG%~8&?#KAQVz_T{#4gq5NI~YIRnu1)4dA8G9Cu)I54<1+K7^Nk)xM~AAOUjVVquAqd@89JEQy=g^9 zPKgXln7S@5oYPKf23-1*ON11I$GF20=9KW?~p zyF+-WVGjCL71=8zBmGhZn+6R1)LKN%lI+s8`%$B^(OecB%i6Z#cvc~G9w=!TTaf=k zw`TzYC1Iy0He1zm+(GpLS6TQgHBZjuwu3*_kkeO%D?FArNfrD2+Z5*ll%{8&?V#e9 zdJ-yPQTY=>%lfO&YxLqxW!C#uue(8;#+E!YkujI#NxoS$ot?p80K&|mp|7q>QOw@^ zv_mpr_X8MU^>s2_cb?E~NrcQJ1XGbQWdT4zJmhM?lNLqW3wVY1Y1Wx(9@f^=wi47M z*++bnN~*KvuH^y&62&`Y?=ZNd|7U?Ipor&p0ZeEtGBhUJUV+^m|4o|lX6EaXI=gF3 zSPw58;=5r29r1kv6WXubH%mzO?{!x}tZN0Xszzh<{3PtQz_H%tdQ*BNPSq!bz zS!DIGS<}%q*3%c4e0rc2$>N~#Z>7iUvqI${P{9jq+DVx}H7|B8hm9Ro3$zE7 zR6gyNzINSx2YZjRH4ojZL^>Q4*$RtZ^x=^l@dONoh1vT53!%9y6wAgZn6NtW@+lSJ zLKdbz9U=+Zb=t9mvn}1iQA;K56@9>f#5*Jse(TowR7oGl+y_rIkr3&J5XK}2{rsZYN{zy?#^-Zs zvcpmeo6(eSVo&G5_3zu33%5W=5p9^)^C5L z5DEKHu1HW$yIE5xF>iH%ouiSyAkV9H0v8!$Kp4`p&34&P@|A(PS65o!MI<>0O8_s! zUVD%PQBCo&PP#t(IQ3?W7F>R;8LfKLP$-f>^=0&IZ>$W&I#nw4lqLmenWczr~da_>5}t# z%~i0JXY3}(0=14=n_{nS2SqLuqC}X@a6o7}CV!hqSAoNUx8T*xt9Iy7M6p=xiF~qe z`bHmFJ;wn^q+3Rt;XqS>IyRbby6%_9<`avrpED^f%wJg>$K<+?Y!`Bj=j=jEYq+KA z^=2iS7whlUzxYR3*aFQ{(DQtF?6%6oNh6(Kx%0}N@F^^g6_#Q7fyRq!g#Yqpn5bWorQy>g6^F0vIBSd>p&at9}{6r*b&XSpHe{4E@R0WS|QEqq^S zH==bH57}rvZ}dxw93&oB?j<)kIN3yYQ$8Z<2Z3W(?f%A;FeT!Y`_#DjU4{`)fmDO0 z-!mqQ@Hrh{>lwgbpgweAm~F%Bc(s zbSX{)s{j{cE+ab^S=Q;gW4NHE?uwZ5lKZJ>UiR~r{%R!gjo#wZSVM`xTxz~)Am&lM zi-nz6nx}0uueR8;D*BXZA_b9A82_=sEtB&UC7wI9hF3{scWuVf5BVX zl0z{|Sj=ZnD_)5UGTWS+q0RS%jyOJ2?-hqoYGYn+Z_@}d~9 zKk=|+4O~0#R}2kib1bj1q50Ds3tZV}iPT(h7!a_UmhP#q1??4a!F~6^ZY<=br+R@} z3o4hZEP);k8W`TlZNGUN%oW?p7|yn;tY%TK+ikF;I&u4lD{8}LSr%@1iNO&YZdj!% zI%nitXfO1)fjDiHYH;Bfd z1Y@$+A>tf(`#rGNJ;*$!eVrcM%pv8__*kz^+yUySbVvsC5vSIjxl&Lj8oKZb8A zuEQo`?lzipBqA->e_c@UT7==A8E>oEx(SYnLaS$+sXEV7j--P0NgiXD!asYLPU zwRt1fiDd|P`t^HroKExd+1?j2)Z7R$5_bPPh*EoqTxD4CKgOSeUvb)HMT$`Yob#q1 z*3TC|NS+?F2opT4q>spCB$e{sHb_PljA|B_6M# zO`xw+3lXY>c;gawmIi|+U-t-#Mxb?9#TEV6v&V2zER@yP>=y38BVLQ~DS*OpGCE*K z(d;m}mxlexa0|? zT;;O~a>4hxx$$F}A2U@9qBZvi2aoKKezloq0DWuAs(ol$GUz1?E#S3gP{B(N^GW5H_FVEt# z4(sDQ-Lp%Qych(lA?C1a_IC96TYzz#bi_maWDWKvxQ&d3d7?`5j|DL>>~=J2KaF>; z=+(<4eL9KT+Tl^xG|%`cDGl|~AVPZ1GUUM!bs-qCU~Lz*r!p1W{R2A<@nvg{u88ko zp9>9Uyy1(BE4_0Rjv1dB^sV(}NE=?>$SA~;Upp$w!}`-9`W9j#8U=xKzp{YA_>Qdn z>7w@x?4jraCeO_c0l#O>;|EZENk-^gm4t1(b-7c??f-a5mp+-c0K|609d@f56TcB{ z9(AXY5TQcOYBuhKRA>1_P`Ya+j3Q#Xk8Qzo7PxNwtSBi!FOEd&@240VP9Lp_;?)g2C=J#naVIa@UwwVLs;1iYQ@B(m zj8)N;h9+;+SnWU|+OMifo zG6RTR?3#abheoaAC*Exefq9pdY3@nuFCxlmL5R{F%=Eck5f}NNPKuFO}AHF(zzBq43`81@-&=s8XFo;0QB{~MJZx;~`x#(iHdq`}! zUg^<-o4Ih!W24!(4@~-t_Le2SR%x|g`m_8O->S_HqeJDJ@x;)8y83eg#*t8m2J3#R zC*ZUpmelWa`#gkszkLu%I&iYaTvHL8{Uo;~ayK152tb7oX57x>613!^!$l|WyDgg| z1|qR*#4~oy?=Ms9DM1YAV@RbJmI?$FlgUk76;w~CI-+MJQ>Ndq;c9i!6}I&JKZHnI&}dXjB?GmCsF{UsbZ%5OkqqCOwy%^ls-FL-P(Z-@LlTZ~D=S1%%0 zA$$gY)FDF1Bb1(V@wU|GM1${U1tjQRFcTyU1Ny1jL*!xiR4Namgv#`LEJ=_h%t)}y z%If9NM83@*Tbs}zMo-0CCrirINH^gD^a-ARduIfyY5NTT_<^g)QixX}gAFaS$orj> zdtodIou_mLxIee+$(Om=>N9{|b|Y1tP8a7#CrmA2egbxeTmI*tS5-)jNdhB5QXR3! zn$8^*oJXs$W4fZqjw3&gG_TfKs$$prSroi}LV=yU;BmEIET0ow#oO;2TUko%CswOv z*mG6m@?lzq!@pde+L&S@-N8cub4iObl7B7Z(ee*`v}MI83aEu0c+r)4S;fn=y%ys% zk`|8D+Iw^$fded2?f0^(SB`Db=Nju*{5^eVx;Itu!B0k()W~G#k@WadiA65$%9pX% zy-x8d!K+cEhH;@A&_n9E%#8T=r#T%bZNb^Dq%5Xi3%`+RlzqVK2mYlZ3A_ z_zs=A9&XmQa-5crp7k@cYm0v>qJmIzU|-2T0p62IW2XC^Jxp8b8RV1}q|nE;ot-Rn zJU}wtM%U2&oz4*}mr$S)KyhArzZO_-U!W8qlZYTYe~KT9f;5D$452rginUr>WCFZr zsD-}cdV;L>M&%hzc<~5R-qfn<=ExLC#h1`7;qp_TZvCMq69V&u<&2rmN=t@1YIGF4 z>6LP?O(MWUT=Yo~&yb7SObhsP>Ky6vJmN$)hU;MIcli+0qv@3(q2;{=0hDj0x32n9 zTm&uW5J@u-X)?Bn_=LE^I=LAVEo(jXFX$tWv zdl-YjxKufU4C^&cWI7)PKHEjVCp=*vg>VK~;5CltH2C((nHF7L z_m#I7^acYpyaltN9wHW&OSQ4959j@YO}(=Qb#{jCQ`Gq%&w$W#vR|c(TY^ zF(&j+O&Nh`y14jPEYmsEMGEkc*xkwz(dQX5B{ukRg1UXq8+5J6T`;`>@Q%ct1RxPk zk3`_P_G32P>0^}Gahk0gH*dPn&>^j4`KHW@NBXLxYd%ZXjULDdSN$9j7)1MDsDEKf zzDs~ITeT}??cX6_Qlj#X(!ex^jcptyPjiC1wY(X3G^fP89|b%e5Q*hJV4-=h4+$N3fFpb z4VP06Dm>K&IZoaTqrbN5ZH7-1e4@R-m(Sv(POw(S6TRAAOc`Yb&FSkDn_4a4`1{-G zfrhznjPMH1Zey!uq*vMv7K~CP?7+2jg$rC@Y^0sf5DV%j?B1g?mgmL6Qvu>Zr)_eC z`4ESuzq+Z547l&W_A8BikR3g>&!JWa`1zf00W?t=Yq!c1fJ7SU{;7GP-s*CO(^K&y znz?Ji8r^{U81+9p?C(1mekoPMabqQx**j|TF&xYrI^D)m`3}$ITTlj}VrY30ma(@( zQ_K8fK#nzgiLABdv>tVq{kKy;69Azib?X&pUUf>ja7w46xMMmAv+W(OB=5=Qv z=C>{#PRIQtQB`imH46o&yLtDHR}@)8{lUM1J{6K@B?qfxXd%20!DAH#Qp_$&5V9`2 zE%<`IiIO){F5pJ51!UlDH5|Br&zW2dWwpzJdpoogFsS$VPs)Hx;tV0tf$z1FsNQA7 z65lB0qe;$oH_EpXkr0dmZ{!o9RETMCX%vC--f_ z)vMOTFqYtl(5T!Z5(atSSnYArL<3n`0!I88gkc&Kb>riVFzA-g)B&uUFCa_@(|uB1 z6>Wb`k78J*t+CmSvj~th6PEZ=X;M^y;3p0(xYr7UwM!aNyLX@nve)=6q|iv3%0h=p zt6@FT{xqd8Pf(&K(ibyF(@lUkyA(47>iB44oHsg4!Qx+WKAUNK>Asah4%GAxc4ahr zq0b`Yt#Mf^k`hUj{iUZpS_ce$f@5&(^0ac5gp|cN{yZL>p^?Ff9YH$$6`#?2=C8XR z;E?Xpc;s7yz%<_MA4KIKTVNjl!VMOmQ-@wE1W|lTN=h7kivjl?f(?W6G7=^(weWDK zUr~2w!ynkM>GB%1AZ>xr!oC-}H`6Q^QiUwn|H$ISp}rra$mxTW%vnB1PMs~`vf3Xl zJs@7~b4MSv_-=zjz@|oi%n^Z0J{N7pZ-5!c-DTq-47M$a1Tm=DJ1B}WAzotr-|lar zKqL|`CPZ3?6Gt8@@0q3kjJuVNw_0E8qa4Wi>D<1gk;`8IS+8{I>%U8@SacO+I>}A2 zEI8@H+fiWC$Qxk+Cl*HP2NA~YRe2_)_4kQk)lEP)^uJwxP~CmcHRLB)iO$>Ew&?ph z#8c@;&nK`AyG@`#l>rx)U=1q9`o8*F@4y{DQ4biDG@G?p_3)PAdF+{nc_!HemfYV=wAD#yyC?WrVH{{8rF)HG@a$op8KGz=k&sVxmRn>t+-D3{ zO!DDQVAQTzp00@)CpEU%4(6!g8>1&_^@L|bbdVFCcjjD@dfy$chl&aS!G9(bdcMC8_V@CXJ>7~M^D?s*{<$5hX4D%nJAV zahu2}3|Gw;B|Ox#<^7UMETl+cU&BhaMqP8o{ZvrKdur$xQyga@ATS+)j_pO)=x3Gh z$tCsb)SR`&n(_`gq&9h}0l2Q0Ini>!xk-Po2HO|PlE(Pms!r90+ZO$&*OoEhC^91% zB`C*g+4^?^uLMT87(Fp!y6#1?A1TU9luJAyo$&ge>#z1LXOPO15ASDup6jKT%j&wYKp=Q5mgt->@epRdP zhbawx@{dx`aRG4W_osi-3fNmkgt^l+ej%}zS^WD&c7b}6x%)$7J0|Ddu$Q!> z7dyz)s%0D-W;Df@yNf$tqV7n|?>5FdAbs}b2y{>lAkidnHwy6&ucJ(8L7(TSUf zAalMV!NR`BOKXZ2Abg{RmGglpqg2FAK-!uiqh$IC@dWcr4p7|~YO!i+Sd3mQRhD3U zvtu7Rt&ew$pRea3s+q33H$ z+{S}1nfVpnl~-Bj^|m102A>(@1O9!wML^Ap;=TnMY+pbiPeREik3lUshqUq(SM{QX z>FeYB;${utl+);^+gu=VsLd}dEJ!_ltyu^NXdecatbg+|Ap?1n%*6^@z=HGL>%Yyy zMU7RBB;&|Q{iR(Jp%^-#&nsACg83pcq`e#3e*wpjLMo=#2*;UN^Tm0pJ-=7&OENt4xBMF-CUMtAYcAGeuHep>5lze-b*eP zLwxxbY#y48EFx5KiLc;{&%xZUtGAAggam%((_Wire1E2hq`yS)MZ17pShy_{9~Ba3 z6_X%qoGST(yr^e93heYYHBMZheL@J&2fTUCH*8R{1GQW)+KJ@5iP-0TbBjg=J*;*W z#pLvP@LZVQKg{16cB}xRTnx=#`lHDVXQW7gbHSN`YnnvOOfp|-Q$hw@SaLg(Q&(*u z-9k)KYK}uO@)3Y!OflkJl%N2TWXRb`4hPUu<@tAT&7=m2DA8pOr>7_bYJVSm97k&qiW% zLUz_VzB;`_7>!SvOhZ413zZ?g5_J`!4yiE|w#T1S1Rhv*@ z&D|+poKjOQKE!^gP*~XhKa6=W0jG19e_sEERNQsv8rG;JI7G9W57bIOB;!N zKXlkm2d$13pzu=3(*9@x1lh**hy+Gy2zB-i;qe?0aYO;9+_?jrht1pwz5iZR1h~Ce8@X2J{EH`o_KNqI!Z@>bb{^smP@OPDj@Dt}Hdpx~Xyn)79tD`!U z&xUsk6@BhNOSi~ryqO#@4#y{h#UXUQhuTicdA03-#6C@ecffAdjV(F{1?UWgU$M}^ z(np&u8yhLE8keH`lVZ#GsAIdv?Q08exob7?j&B7Kb!#I`ChT~(R_o130FDJvS@=3# z{Yf0|Z@Xn$tyao-Xo@e0^9I={0*SoXCvJ5P!byx@6%!_#M2Y`o8308uT`XkEM-%wd z&X;xTeZe*ODU1W;F#x&`^=l%pu#w`%K!LCzIH7y1_kLkDkJmf0*R{s z!^y|BZb4Q3(Ce9UNb9o=9UpWskLgut2UvPjtzo; z6p2CUC4+&xG7&<&Txz@pYwh9Xi{(!Cam5Mj2P&`lrVlE|Mst6GK7G8IPS|ah#qJK# zB>Y{*N^j9Mmp$LT#6NN&5<@0?EGLdES{*{mj(KapZScHe6+*x3**uV$JmtJ%%Tr=C zHBv?_RszlUZepx;2RfUu+n``E5RM+p8x-E3xZ;m=cQUB&fF9^gILKz(CKl?zyuv`2 z1PO=@I#USbDPfe;FRepEscqi#LfYT%A$AP4b)r-)>mTBvu$VRjs{tWp<3}IlBz5*# zoLyof$ZdAiJ%=RYUvc3PBK0%AxK@!aG+vqLI=pV=BP5BgC8*2v47{2%*`{;7RAJZ& z(^-?^(Uh8l5`Ej$%uHFb<^h;n%sJ&wL$KT;#rFm84sEq*FfsSkvh$fBjfCnfHny(LIydBXp zybZ*jT&8COJ%S!EylH%Z4cB+3u)5_iv-He$Ch$i%;H?zU$U;_?!1PQ_YAn-F{2dP2D z>HKzs5J5UIJszpE5%5s^XmvugEG<+AZ$;H&spfkNO4p(MG?*O)qvr$JlHAM07J}mI zxjEl(@xKlisaMk(i@Txw1GK zyg7vhmhbHK1mRuU?Gr&`m^FJOx;LzQF6Q`(PZlkT_*C|mHSioXvA#HtG&I&}luzqD zg~qETK<*H%LbM269iD^+(W&W-NMOu;;Q5o| z#VnL%N0!{aLF5ce z?ooJU+cUo=fk`5wx`t@1rE`D~2sJ<5)Ei0I_6~UBTJ5qDxkIdoM$HFQDoUn!W=GX# zyQ-`Qif!%`G^eE#^JBhE5!SjwSzp+o<60(bvud|WYJwy6@7l|`KN!0BLq@Q{aWdLSQODWDPPt=1FH%zP>fQvW;g654$`)_dbZd3rVtZeP%?pSFRCqOG8~B)jYo5?W_Xvl*q)0 zQ0yFUi4WxWhRd)fKFukAmv(-KsCz-~S&F-IEVqo{Fj9-FoI5s!r+YLZbch{G`fh7S zyW!TF;4H@fc&-ML8-M?KbsI+jhz(SC5tfc-$FdHcx%SM(-9ma3FIVX&Di{jnY!Cuh z;~1ydirwC=r(H=xYCs`4ZIR#t=vqXA8`EIVf^2Nci2J)fTY5Jr4nXNkb5Xk zCZ!qe{cV&P)bUaSzv=J$bQq9QXE@jqH5KU)CXmp<#SaISZp2)8xJ3%D%%M6yeBlYo zw0{KWx|*>-6ZWIMn-UJJl=-*qRI{Fbxx>`X0hP2&-qT>o?$#X!nWvpa>E@Pvr&0?0 zhtq&Ll?~Xj32JlsZOf3`|J}vByv&^(m2F)sCaVV}B*~fXCPj4xjD^fEv8xJmD-few zXV+w+QPR3T`zbE>!ypP=KTn!9vI$Wz7fVEeDWJFDVy`H&kq?O$fDBOEegw!g3PFwW zvT|K+zuooM(6Vu`cg`jP%=K{qs|CY)o)#RPoi!hYT>g;jx4nrF6T& z9*11!S(ao0@x|6-t)byb$h~4W!PS$&1jS+ooZQLC9CX?Z6Uqv_)*e0`uD2vF!-%V_ zAP<=o_*CtO*E2HUo(>|FC3o@!A1xr)j{Md6*%1k)R~~X7G)DN=*R(OUZS>D|RW#n{*%EaO#A=>3?w1dw7}HPRM__p;}P_I6Duk0UXG;r z`N==SPbZ9&hOk++7^L`uB?HtWndY>?-uE#ih+7h*@KSvGcy)j{6cAeBN$UmJA2)oDoI+m&8VZTAO*q9*9I;mDTf%!@ZDDmKHQBY5B^Z%zYc!M^9^d-UcI^ zGcfq(Qb6Dmfz2uos=`EOWJJ%4P&og(+JWGlqHuDcDKD-;XX}`H?nA?DhxJsU3{*Qc z*9sZ?0jn6Ba8UBU* zxaAJd4;<7Tt^9hGE^cI|HKiP4kYH~!Gl=1mYlC9~MR01vTXsm*mAoU8-pL;(ND4G5Mt`zvfypchtoisi-MW(9c4FM(7cN!eY7Co= z`8O}*Zk$$UbqMi>K8EEd(?~!7b(0NMy5C{k!!@itIe}F^h>)J+$0x`_0j#5>l8ZjS zafYlVQ{akC!tbLN2IVu}eXG$IcrQvje@xovo(m5de%Z=18wK^}^}v=N!gAQnG~x@> z*{#;UCM8w(i2{|N%hzjs%32*GufPFVP^;o+tZ{3dr8yLp)T>Rx_IQnn8+r5lf4y6a zYr#7(t1d+6G%BupG*XZ7J6k^HQlfK}uiMloBh1Nw0+*GzwneN^#a4hrjeQ9|xkc7- z?)MZfyP!!NM&*+G+8+y{TbP9CMBIi4O&8ez+b{i3l|mR?or^=bYlEoG34_j1b+clg z#HswRp0;-}$@0dC#-F>Py6%UAtCgNR`MW3u6{Hh)fGNS3m`@iCxXm}+)5PUngX)3H zfdMHD^vC@7Ku1-N*M-0^NdP%sIMn&wOEDgKPp$HI)4HWR%XAuGIzFVER_=T}7^uOr z`^q4L@wq~9WO>g7RN-9>_@B6%xa+zX9x$4zaw=~HqA>z{3xQ;BzYABwOj23X13GDY z{oC7S_r1b&Zu-YhS1l%dbO#i>dcJ>G%7*Ph=7&$~$^orGrXyj(mb=ihm<2^zqtiASW3`Kfa$Jac4K4815}c5X!Hnf8N?6+1bw zu-OEX5W(ZPgH?(I;E!)NTLzOD*ei=h6pH99s+k|l<8423JY&x5K8gU|GDFkog3=Mm z9Rv-AFpj6(Y6~*UN>Yfu=F?EDK+X@gZ1=I=hX6)9EB3aA67Ih`=jut={S{jgO@Bh2<3i-c2o}0#;jt2GLEFB1qn=EP084k143gC zXbibI;gkq=A9QG`wd!)Z>ali~nU}V+nsAKP^IuCWW0Mj|(J&kNsR4FH?7b6K1?IaS zETrg>gWju$n7daiC(lZS04}}njE6Qu^WJAwQ7Kg))=zmA!oDM*R00_r(P8=RNmis0 zD2G@Sy0C3cNk+&jDakVp84ytCyaIs~-ixO^xeS$GeR?C2FMSzgBOz8i`Kd6l3o<`` zEf6_#Z-}Ll;?+PZqFOP2k8p0PmR_N5y)Sfj|K375{K6+z@Q3~dRt>gYNMtGM18}^Q zn8qMRK~?8GFbTvFyp-iD<4$tJqBwrGEFdB92ow(ZECJ!!TiLr(!L_vr_q+^ zhiWbeM3trN^yU|6p`20U!`chJN4b?s{g~_6)F_q{kB<|VF~U!CiElV9<;>2H05#hg zqu3{IAFZ#w@8by#E_Ka@;abh9eM-`D!B^<18FXvp<6%M7-nAyd=8KdG!#^4Df%La2 z1ZP|2vY)!@vrDSd9%IOU7)3cfJMa4d;4k z)pHQGX>vGDc~-l=ZlWd{-5rI0g_BF+U2ydAdpO>UKDgf2!~Il6zT43^%Txlsq6eYJ zl^#nct1zq}u8HdO+Re2RZzOfnRi<6keOR{=cl($rOT&C^Zxsm<(O~7MJyWzbCD{34 z`}P_I6~TEhDU);nc}*8@ca@o@@@~~=as#lzd=-V-j7WUX-y7trs>#vCh-1|~ENhmD zR+b3rLbr>G^1Z6kYazlTTkbFOWxb!MJIQ9vVa3hlrQX5i)jW3i;Xf)>4+vPDmlZDK z7xY+#{5AofN0CRA1g=fK4!is5=LK@w!l)LEt7m7?;8&DbLi7?dOJvwNme_)AKMgNU z!}rq(Qa_-_f>12wAqO6VnhPoCS!l?RPfNp8Oj)2p34WlHTMOHiyTfsA5dAU}ayfl9 zj==tsa%F*vg+K-dR}3njM z8`$E$7IBIfCc(_WRD9m=d4K1>erzxIArYIGdfj`mI;P8&WSv^dtG*uL*V?~YjZ9h8 z-SU&dYh8X=9FknURMyYHE;Z)uI$3Ex85Y*^9~}PUhk7h~qGpaA1LIDg{SLLtxrG@HG)|6W7d``vTQ2w2y72}K6e$?c+G9%08UkcSKoBwdAK#7g_J44~7SkyIKC$#X>sbaqy4ATaWg^ zP)E(ZS8CxW0;?zzJZVo%rG+jPB*@Q5g4{A|*wr@Ly-pJ8i?eGaXHq6%N>jh2#8Pt> zafN6_j1U@eqg~UEK9DVS9gouKE@#2Fxwn$*bGI?_^4nH!-UA$MpnQpfcO7~O%S3bX z^#70zr&jXuM&0Ih*eE6>{pDmZXNIdBjCyt}9bV`aM9f zhR1S#7YxMVD_%8u{TkHq%YYui_H3k7NyAKqXQmk(U%0X|Cb8Jq_(U&pl8IwdPG~07 z{I-#m5C6KlVK)?M>#jBg1FYbx1Yxvqb+5j_-cc{Fr~6#ZP2)>Q_PDmycHQ*nueA>K zRer3o3tZS6z`9B62>|qQl62khkdQ8bR#Yc0;eD>9?i5^@)Q!qT5E(GDP-lNklk?SI z24zZ4GzmpG*;Ki%4v6wkZWg(Xzm++^cqNECF)_U}+&Wszj``uiY|eu5DV&AFovmgZ zCKlajIhQv{-?N^{PcIQ(vvV}1zd!u4Zq(A)!hNj@3^Ec0IyvgI5=S>HpLApOk4tdP=!%=3imC0+L8<* zjbPe_REPuOh>{FML~uhUk3=$Jg7R-{EDpUZuPnaOJpUOs zuIcYY1C6`xJ9Tg_90APD<_}~~Dbx9|tA6Tj-9KRp0l22}VZ7&zl@&>0yDBc2SglF3 zMrm=%xK(LpVi@VZa0$OH*V@5Tr8&SY+zO=eC^A+7rj)}L=!7E#7f6CX24 zw$p9(zBe}!SE2}Uj5KYeztU7QdxLI|Kc+yvJ?N#b{UYM_s|gtd?JurfPMi4{)To{X zGQy8qiLFb+x%jSymsYtB{YkX>^n$%NQ{(ZKR@P|U3W$n=3x(w{iaon=b0Eu0VH#0HMeo`_afKNN!KATZ? z{r}V4?5Q(ROT=+Ts|l**RKG6kmtm3fslP}*s*dFnd&+T63cuMmMb4ec%GGX{xRJX` zq$~jT*)|C8fH*a|FT;=5C%slc79HQ}+-ppwBfhl5^39wnL3(uD)BuumUNn5pZ}utO zFIfvAzw=giK7FD%A*!6yUDT{J`uYti#a|4*d=ff^)xrZnbPi9EZ!9;gzyV z2g&J5=@F5O!ntq>)3+5y0VbAs)rjAv(_J5A>xaa!Y~&7;R*DPBT8D%uhwj-*BG)jV z{kpq2ErhQB0l@RE>6Vo+13lt+uX-&0dZdDR0)5QNyUFTN)&YR}j7Q#cNn z6@Ns0=z2I@Vr&>YhfYxEyN1nqSBsg+z6;?+`6S$}R5v_;f^)!JnaNb30Lq5h3Z}o7 zis{d3G@wMr&UrlwK5nlG8`kHhIlJ3UYsV zgG(57krWSaza)9`tF~AAJ}bmIMN=YQ2(6@Pn$PNci=l01trT$ojk4#Ep;^MwWbqw| zI`@UCBHh6`3rY3(IjU5pGq?D7d-rw+M;}D=U~S0}iHo?4N9Pi&Ogn=8FU2EWe zza_^K4EvWOf~Yvm34>8sQSi>G`g+-Y{!tjFbZrDUXd$_Hcrw<-%=M)snq)FYv7m%( zW>SxQenn`E=<;ztUFBvTKH?tZp&Ku!n5-OxWYEnl&E~e=F1C03&*%wRlSOg*(puvs z)xN0>M&iEE`}JJ3gL<7uC~v)H-Kgq)C*HDuSs(jvp7y-1J=b}K`X(UoszbGBUc!K% zI15`Nw0x{?d;*m(wL!%RGU{V+iUq^FFXcimn*+4ZJ#$F*tZr6q!XcqhscEvn)eGHl z{6Qo~nu(Q0?+PT!Vyhhh9UyepEhp3tdH)%)5$m&D2aqGEdCI?f=zqC zEGx1?;Ev7R6~9Je((Q7fK!sQ+5i%c zD%mNQvedZYhZr1y_0bm7+XoPP-0O8dCk}f<`^W zd>$L~@y)w?yUMly4HV+o1>%R}XFloJtk24``CNVMK=RgzqCMGnek4Bc?)J$#t}Qv3 zrwi`>jpHIIyx~x)5}yc^o#}c%C0)IOV?PN7!Vm0z7EvQ&mvv%kn8*GrMg6fx*NcuP z#dp6@92w=hHh6^rFN?`%k+fV96iNzCXv&%X^(6Z!O~Al6dg$`8hI-H=~c^|EY+k(Qn_lWV z8|=F%v9RNlHpyff^inGg+Jvf?(^jBrV1xVPBPv@KW^7HsCIRRdXF9l|9{#JE#zipO z$>|z@zorRkH+l--gf=TQmV{`$69^wRlTf`Um&AGasHOWO`kqZ)3@aACAkHS6&$+>O zEjb3&LrB8K0Wyd9iE=@JKUm#u0`Tg~16je(iI%pP(;B6pdy5C(h2b$sVl4 zd@?9B+I}}RdhAuqq$vvi{Qxjxhbnmvk)oFLb}}?O|9u{5cNiLU)}}S9;}Aw`36PQ- z@|@m2)e&L@0rt2>8GZkwpcI3?Pw08+6r;7DrWyq>5ex!d*-W)iBvyxvl`)vjO4zg! z8o>5}*&XvE+v%!f=8(%+#RAe|(zuO}56gP)vRm}o3akJ(K*+x?D%)% z8T5dcQuwi^7$sjcS7vyyUwez{BTmD!Yv(YTod+I)see-KMS`<_qigZ=WUt;=YKC7KG5c>f&TdsS{_A^?|frEbWHc| z(%ZYdM)Y{=Nho_-K)8{ye3FF(kK24qnYe+S!voDyOWSD;)YMMjrJ$ zIF-$CTo*0YCNim5I-GO`1mH#(_OVJ#Xmv~;B zS-&S2eM6ZOIxUM->!6gm7n6x8u5#rrV{Y-IWN#ZttHY;!E6OBydU@*2VfUyvNV=Tr z^sHVto3$qiSIFb)$8$YjBZWx!%iU7fP~tw>RhA2q+dc&Y+{nCOKX-&mHhSWWC)=C2 zNRNE9%z+S?-Nniq0ip1J_e83H>Ku7Ri|ZUj!9^3=xCpmnMG(Sm&zaTvfbe3Zu?}x- z(QM4bv76Ep2ocA{@PBudP)-fBa?@KO+@jJRNE6xnbU)nWp=QExbWHE*v9?)nhqd%Q zxiau0hCs{2AgcjvkEeH0_cebQn|sJfaA6A0Smby`#;7d2HLGp#vHmd)DG;WfNtwYy zSZ;`&N?_3b2mnrdX7cGcbfjlu%{>HL!F*U`ls6xcVDWoBD_h;QmV^a-79eGvdIn)S zv&;RWfT=wH-fyJkfOO;8@DgOhB~oo4;nOA&hJXjZ0)ME2m!RJ91W+@p_IILdzC;X$ zw1l^bLAJ)~095&q#`j@@TXs7ARrt91aDjk0M2b~g)-clPWZqPakn|#d>?7wERzb#? z?o|N416Igl+LEMKfS1fHejKx57Daa+hxTTJq}?jz4C0VkAfilDCZFBJDHpM?hR zA~1-X8&Z>Ef$;0xaj=Jwd9=uUqy_FEC@h!Y zQvK3BSUxlaZzzLwm5`YQLWguGTmxwA4hxT5!RHjc%#FFP{lOM~LAROSHoIQ=I{C_{Cm>FXT9{n^OP>8`Fm?muU_Ru=zkkAvsc)Eb8-#f^-AA<<6Mcxm9 zzEHffX$LPx1>B-qM>vSdg%|v#M0ttQF>;``x^xLyP$SQGIQA{SiGaSplzr!+-EnOa zBw_~}70$4jzd!pQ?^}Y6Z4gfxk7@OKpvdH40*PglJ_LDPes6(^zU!56_PLA}m4_rf z|7phABG`-76Ig4V`YoA0Ul)ZZ`Ax9(z1i#-&q|$_fo+{^-eC&21b;8DVO0`p%|G^P zB=B~DbBXzRgAUnY2VtEmt+#NCaIEDmjfCHKtE&Ek98!=*>dI)^A_lo}1_dM(gC-%cBtQB9f#U-Isa*C*u2+yKq=&2KEekb z9=xpP#~{PE=3Qqam9wfGV}B-gO+WUGwLBCTRY<1U@j`odLy9AQ{cJ89J+8k2&Mj*;58&)bF2FI6GZYk*tvF8C-nc@I>G8MetI`v1|!@Ry_{(Ox| zRI7a8=WXs>2plOMCpM1I6m9!}wDewz{*;V7^(b9Fa^!B@7wJ%au9j+?jS>~rSi{N4QNg@4%#&MPzvev(xFlzk0sUJy0ANY>NPC0_95s7&g=t3 zSJ*&jW6Sy}xN?JHv*@wDm({_SqYdfs_Q;_3GR>Cqm&+&>)~9~Kcr|2;swm6`;p=Vz zeVb(vE`P@2EM@(a!8h>wS!w^|^e^QMB>bvL`sg%mYuy(d212qZc+!&SBR4F!L}w{a zV%|s#_X?M}hr|H>p5JM)CYAsCetd{931V;wX9g^*wp2^XbAoqC__CYQ!%; z=l!ERfnyREii|r+lge|Lr<`_V!z(a+=zsN(8z=oihbMw!YxqsYAX`AJW2fQF) z`OhYKY*8(;B3s{&{eb}^)W$7GoJ%!8oi`E|KZTAY4x5>vp$-7RR*Mqu5gr0|2{+)0u+N?Nw z@b{hMA!as_PAS~f!bRF#o4yOkblO`ML#6zFZW8J#(3~BThNu9kwfBpsP?Ycf394nx zf+NxQGCQ0sTmZVsY%4jESw=gH*eAr+!aRzTodWrL2+4nF%iBtZUhJf?bBtkO0-m8V zjDN66oxmb%x09$Kn$Szcx^uc_*3$Vi>N{4y0mCz67taE*P36j$s>C~QhvHT*s>R?z zd4lr7znw~eU4Q%GN<`+EsX5=ayGhFK)B%Jr8oT@Nn;(OV zzH!jXqPB6uH1x=BC(;8Dt>_G?oQpiPeuUbGKns?w*m7bftIYAr-IWs<$P&-p>W#I$ zSiOVg1i92|4qmdWz{4IcPNcGj*4U7gdUJ=^2W2(v-A_(dcMQyo;2w{UAIt2GoJOJ* zve&@d@*x>{;6?u3`wV?tWGRC?A;x=_n5{aAdaae+&?sm?|0hod4zWrioLB5lvn)^3 zmSSSU`H>WXRek_-uqN-t+ak{VTZiovO&ZrEv>ES74Cq-<)cC%5>NL22iYTEzew%OlJM=ybJ=zschlFpZL$8N9TqL?`7)zErl=?#Cxlk{ol zAbkfOg z+>@5-tn~DXrOU}&jD2m@{nYTyG>={>KPre zC0EGE3?f!>NSBd_3->x}>T$~Cli4bYU)G{5it{f6XN0=UbSsBpZQ>DlXqZ19 z1pvdsXaE~Z@PxnbWDm6b0loF_$Fo1_o(orcip`wC**+|Wf4_UY>L1A6TeHB?F~MvB zNDU(i-krb{Tt`>aKCTV8B*@TNxo26o`VfU44i{9T5_xSc*51n9ab8JEqA4|Y!0Zly z|0^rELdsnkTj#uN?u+%W!S(#Jj4tjPcH(z$?UJKZ1!%?+A)GH#(eE(v#71;+X_;rH zj^c3|xvb(Qy{!e-AklaRqM-h56-M=f%g z=B^$j)ws-4L)f7K5sRcA!lxV52Pq&U8K?>%+LdMprU0Zb|2b9fvIs$2YtNGLgd^TLTu$fOc z*Nw6V;3Ipthm&Rlt*WAPpOtr46^!6NxPdwM3KDh*?y^|n`cAQuu>4n5N)86MQKPn* zh%Y{nPgy!?Z6s1}g{5p7f=~@&NoY%xp`F@{UtcPXgv?^pDCO&E@(Urwyy?eZENu<3 zz?mK@-J6&l+(DF2Dlr6~nHuwUA?E!pXK$pFg4%to?(V^DD=qdLAC2nVJIacHic#|z zi^*MQ*&Ju^MQ(wA@X9{;6XV}lg4e)q)8YxmHt)^d`#ouGO^@gFV~PxICQ3}$_Z#0& zB9xFD;yknAH{6{2`1j^wfOlu5-1KRph~!mv%q0#A-o*iHtg;39x*6L-{}N|SeO>2c zX_c*Fwt@S)jXwge==tR9G3VRj=cbi!6em^)FAf?*MbnsE;}&H9FI&7A6Iw=VJ#4a* zlNSFO>D17b467<73f{H4I_nvZcbz&t$8{##bcMFa7-MJQl>HMik(+!*91;921tbDq zSZCYNIHMN+grR#_3NjP*`<40PaOh7HRhCo|Q*o!U4PhtdSRkk)=xOi|N4LWQRLUKO z4+ps2F{#$2A@>&je$GvReVjP$ZN415_2%8y!M^w;HvZ{?Gz7MGHC9t>`Hn6LggHtU zdE*2Ef5c?zd^;UZUC5frrCtcI0&4>OXV^lfK#w?<0-rkT=6-vQn~T&1D<4i-mJawq zoeIu|k4VvfCrr(6D_|D;p8X-@P5+`)>b1S;hdCZHDCBp0mUOrr5@^s6u?XNo!5b&! zzKbXY20egH2jm%T&G>2JWw#otpaO)%bI=(g%K$p=`CkXEYCwR$s#md;`^ z`MzS|P#X)yyg?Y8nov$aR8PitqJoe*fun}}YCbm;8IKX5Y@pSWsz#LK0J{bup+|&c zpRpchmNK@(-L>|4VBScrC)2394p|}9nS(0;oV&t>T9=Eg$Jy~h{EW%hbu0!1Bxnm zd#|$vuTHULEPh=N=v?*M9EeB2c2%kU8MByV&fazd2y=Cp?&&vIZSwN1NndpB37f9MTe zVqbe|Ztk)aV?5M`PLiT;!Nt}*1d;aU%!BT{{ybw~H@|IzK+eIRc|^2Qd{nr0u=N|r-JBdyNGbXy4@zEEZ7?bZnM4i6V&-xl*7_54P#Sq{Wy*}?I&Yl-)n(`nL zk|&QU;B{}h)6)HP%eFHgM1>-bH4<4|m(rK<1w-beAAcilqioK=+g57J30Bu8apqot zyGWeEsJbB3KJN2hs2f-+>93CT3NqCU-|9c&NJ}r<6{~xE!)^59>wldQy+53Ms-!t@ z`91IsOdrmlUfMx5Cfy+Cwfs6EzO8{kNDJ=d=d>y+pA|%`?=x}By7l|w@3twTxzZ0b z1Dz;v0E8@HwJkM);gV;0#HLJMT%8=p+i3!7(H<^iya~>Qt;fx9DQyma^4UeTA)Km= zB6R$vhL+!sIXarhRKY53w_K{gtlt~fn#eG= z!V)y&t&}W$t@#_$+M~AgM|8Oo>1Hb>o63-axGWV@1)E~}NzZKBJ5}NoI7?ZF5_j{S zoLh6v30A-bb05?-N56mcNcLd&F|?n|8CJxaLAh$t;E;V$y)WP0m9lHo>?tl`rK7Ay zCC(sL6sjl+bw$yo9Kzt4+NVGu!l@^~Is}D?%rtGJ9WOVrBjO`9-3P`Gf3yCNlE1mI z#No|x{U$hAtIE~|NY>Fr<|AC1%@{;wOXePVzEY$x=u$X?WH+^Ji*`mm0sh_=T&V!X=*3prFM^4KJB4wAyKGUE z#WyE>(j`P6(1@*e$TfNPInD)lTMXqqq$1|PlKF8t+&9ar&D@!u)SJMq|EV1+VG&Va zBvmTBNs{Va7CZ^(z@bfT+`r+TqMOVha*-wH8bR?iE%l57O(M?*O~ zKYGG*ypw$X)$}N5f^%huNLOPIZ>lshCkha*W1a$_jBh~hnQu#&o~^MqR`l__&!VN7 zn%aqu;<7PcG*G!);R@7@v+0LtdLZ-uVtqcW&5_;i+3TQ{VE-AI7<{0h?eiBXq(M>8Lo4pMy&3%7U7ABns{4oy{ZblXsBX$JIpMc`8+D9K$UD zQCv6I(?lTXDEI!gYNy0=h(x!?CDT-u>QT147Fg-filPdK1P%vjt{m}+7LWjT%HQ%; zp}@3O!$&dak9PQoDPs;5faq7XTM@7?5Btn(WpCmhLjKUsXnwc}r83z4Ro}AQDYL)I z^J@>B8hk!NZTV(dVt`=Cw7Ys{I6+F_jtaZXN_APfu%Q5ATeDT>Z9R5wEZ7?|qAY9y z4A09nrtpY%i>aax)}fe%qaM}5uH<62&Ugg;C-DzGd(LnxyTD;XJg5xfMInI!&>S_v z#z?mVZd77;5#1Y(NM%pgWhj|-2gh@A8CR>po>|IRtm}128#F?!neOIe-889qJeRNEgkBHfCPKGM!)d$3@FCavgn%$ z=`Dbs$eoshO(f4u&M$n$ENq$)|Fjlbfs}?aBe$am)8^k&41UIq^P90z#s?!jT^12k z!kS4V&GRCXG{PeJa=0>sKNY*|*R%GXijkk15}tB~OU~AT?0TOQJg5hEgJwZ4^dkwQX|W%* z&yK%RpkF1yeHe_H*$J_pWn&q4h1eD~c`b#bN5 zUFoWrc~kh}3*k^*0KltpJ9ic8d5^>aVTvJK?#4B~_Wq*vCNJ3V8Z)u2|z>#{n|~ zal=C{eRgJzTN1(Ux3gNPcTwSMIt9qwBsBYY@fb#jIU4<4W>Ic*Pp8Tlja(!bqWMl^ zG&By_%J^d&^ahy!CUpf6ONSZC;+>HX?MQBus7a?)jOKXP!P&zw+n+^ez55J-YkS)E zh?3FLiwIX*>!R8m7lGq)fjOM2L6SIxGq!>AYvt*f=Y|8m#4Ie`R0WIAN_Nrh&U$Jd zpc$&H51GBvcT^DT;Y~jI)ofoGuji_^)hk%PqP0+DdzXUwrm z$sy6Ig31LWV*{mD4_nDe`Nnxv~ZNTtp*zJq6Oi&)2cHp@v@QTV>P?zbKIzowA zK>jdewKej1FOOWBL%i-@S-f%$<+J^Cjt@mNk7|So&L4)Ltg%12g5im6ZXeBr4Sble zcn!Au*03;m1->ogRkk8O8gF#NNY)wu+z)Q*EhZ}2tZxwgoUs=%J_i9T*WNDDjZi~; zx^48bu#ur<`M(vAK4xJH0g}Otaj(+JDj_O^rc=5icwt4Z?iwSCKO*2^ffVP0|EAP| zzg;!=0t=USN3R&Geo7yiD7hdPV;sHXw!DP0MNP%!=?~sPr(g3<@2Z&M5sD=CC4Jn?NfkQEgajeq6LD{ZMKzgoN?m}?J_{^0el0Z zj%C-VHC1JlORcP3sH>t{?!m;?xOaO|MeRfnCuogcSn|G{NC`dhg#=1sIN)(lIlK@@ zF+8XYa9q$b_p!Efp=qaxQfc87727chpvD|EC7FQ4d;CV#<X5E7sofJStCo(OA}lKi=^x(U#ij}pU+V{1737xjA0<51dl38| z@w1qoTM9DP?&}Eo_}f5I`40zO=y-%S@#E;E=B&Rvwf6s&!bjydtt6QA)gCFcCfws} z=w3K98?2)X%S}q@LX=r9EuuXu0bw{be$)R_H`IszLA6;<*hF-8(e9?_F zk7?{~W$9niPfIEA*`ZXi|GD5#TG$hJ1QGa|>BbgzV{zVWm_02{SbSnhZGKq_L!VuM z24_0^1Jf+q!my)r$um)|1Efm+sllVA1P{LPQ}=&lXT4V8pZ0SSSvr=!OsN>z51Qv7 z2*7aI*q(w|S!m!YHSybkTA{#m&#Xz)RYx6~*YxRejrfZQbJD!IgSeGZKOVZw$XqV< z@GllRHASKA`3;H>vPH;lEoZ_EZa!pw#&o&<<(LHJm)M}X6fQ_rGn;o6@96IHoixMj zP&tR6a_d)pbM_Zhq8XR3UG8S`gW0ORC=wE`Gs&rc#I9pCaRzz4q%8|P(Hr3kus|oh zJ$m(n713Qc{yz@LNqx zNu!f;jgpy`GF5hgRSt581rtcl{Wd$B*tHOUrce3HT-2ESkO<>pYATBNTTDyryde{| z6WYnC$rN1pcB|2sxVfckz7dnonrCeTB>Aa}3^yw(DpxyrS4dSS7pq6chE@q`KR6cZ z<>9-9A96>$I*DF8H)tA`LK_H_9lb8weHStiu(SSl%=f-;*r<=Vv71ozaTY6tBQyc7 zKe5M#p>b#F@w@5!#)?)1$%#>hM5N6*g}a2IewlDKi75Mdn2)EhW^4)LgB61@ ze-EN~h^WBcca%2>G_@oWWP1Nc#vOLEHd7l&DMJYgfw1$)P(aK*8r^M=dM25KEnUx9^ z4K0Z#&!7@Dw@9vN8tp9LesmsZ?u6(y8CW)|M>=;`5(a zeA6tPW#@M*0g)tHBR}h{no(c$I@MXz`p-+oPCTzSm)Io-GWz7m(MC*zf* zB#UKxu@9J2gAlRmFVI92hPsikDJZK@@0Ig4x?oXMv=YOPh-0)R&BRZcD2%I>UapqK zp~5f}46(LMR8xFF5zUo{KO`lqUJK#H3EKiTC2-xh!I+Omx)9e~x2m1FxX@FJx7bu# zMrPx`c{qrmxYy$a+WVU0rQ<1Cmq^>fWN#r_|4OeJ;OYmqa@DADsNU!?|HB|K^x5*D z5^a;$iQQ&eI1s}~Cc%gnqvx+fUDBL#@pr#30q|OqHPo5Jr2HayHW8GlD+S~kd<#iv z_na)>lGAS7jdKNXdL?zH7o+`$mM~qgJQ3Q1Tb-BF@JxsWl+N=D&{DV4AHMAlru}pG zW+~2rQT-G)N|kUmLDK8ZtlT#v`nJ%a_?X|^v8=q^J|D*?0D+;SXyeE!2Q@f_PIIGC zH5m}&o*}j_^`qd;pNj$_QA9SJni?Yi`IMlwG~%U7sOeq+$<@wdvyAU2gVp3L@b|a7 zP$}N?03D~i|KTS0=}663H^_$}6gY{YMO5%W}Z?3Yrwzb+IS6&n)u zmYUi8r!1bA)(`Wh$JiJDl;c*>f6GP6$7PxL>I3-PcS}5;6G1hUHeb=CgUPQPJ~2rT zLH?Uqjg0z`C(2hVOHnY4@w^|@$HW-XtFD-9V$py}IaR0NMNNA#-J?EsFw2$cY^qQ zRM+DZttZ+Qw?W!hQr&;m(C+WRx^j@$Ep>2(j^9k{{<35!(IOzLWQ{T4=bKB-#oJRcghyR?;KxNivY9pJR>)!EVz>jEl29 z(2!|uMK`vNgeLhQ4JBn$MV(NetIn0M)K~DIwKk-@{CTjE*K_<7=Syn-IhHAULZpZi zFwR5c&iC!U?{43r-ejSTcZr1i{`=Nw<-~fwc=L-tC?O6lj>ASvL}RthZlmo%A5Gd< z0zi&5gUna0v5|ySL|H3~F+1dOG_AJN6(%f}{x;f3RT{0X{-lxT4(RZunrPlOB|x$q zC`-|s)p2!p3$)g#Q;u0_C=qVxSEYzZ(S*;Qn)!0erOel@nSb;~sJyTbEb>GRaa1=_ zuVj?{w+Hfxtx}MTcnc@XW@CoH+8+`aO_OM|&TUJL=eC}`;{b!nd?}Mvsd|eQpi;*k zno;%0MU@d`SR^NK#hxB>NcK{0wuO#9XofZ^+y`fZ>1IY1_I)ZPQo*$Xv_4xPWR{^C zKs*M=#yBURPl`Y7Xk6w*0IC5z8N1M6O`qS&^Y;RqbWhymi*^vKH& z{`{cnS{|sUMD%vXrBxEAHdnLc741NA2)aINZV%t}Z|Fu5#WN_taBDiO=os)3T6IWP zq~6$Y?pyF4r%jsYOP6gZ+VjB|r;*(moz?R`> z*@ROR|J$!)1H@cIxnA-YN$}q-ZHOb&64CP%AiM5=ZlxsMCC3r>YKq=d5BlFj`+CQk zD+=nzkn?swi7&^kuhfXQ@e;sJPJ;^O?S3Rq(MSpYFhN%Vr7;E3s}R z-*Ef;xQK6`^>GkKl@tHZ&pz4~_rxj(H&ETsvdQ+2X?>gGD>rkP_VBmFwDeu#F5qj~ zNhUFzNzFuVsi>NS6}t~n-FagA7YS0`ne<(sj2CD_2llwuCJ31>GGvH%_q2{T&zYr? z+TswNvq8tkD(L;v()Q2)2ySKe-1d>)5g&Yh>kQqvOeM{-L-bX{tWAmIF)(utUCY(! z6Rf*Wr-m(MH_smb!MEux*sbvWl{g(ADBKsNrg86-oGpFmx z><7Cz%@M)w7Q|Sz>K<{j8167gR$Jdm3Q82?@M!MH^UWLqJK>Y3z6Qc59aPZqJK;R}LQ-*a zb$JZ5C@a@(?8lOF%UTZ;2oH_gnG{G<56vd94o{g<4$}a@?RY^FGMxIknO)wG_(`Q> z8%4TBdM4?P>IMmo|*tM;thD+XDn4fumNTwXvd2VQRtwKAK089mdZmb@PPZ0Qd5 z0Lw;^Fhw>)# zH7x?Zb{%PrEiugyF1QgTaSa(LM2V#yZi>}Z0GtaSrf(89QR@Y~bgkR}P9;XKL9~`K z&6XeM!ek=Q)_{WTM8<>8_f{}$*lQ))^ze}&QHO}W(O=MKM1lTD4px&XQhfhv{!|#4W**;qh$-WBe z3@Z=P7%AD!7>*@y*>?*wNGFfxzqP)eU3~CRd-CQXCoC-SLmk*nzH}P!FwC$-Kw{<3 z+Ud^=Y7V$Q+C-z8dK#+FjK=mdBWMPI6U+p0iCOq?LNA5YS_O7T#{D7;&o!88X{{N5 z{z2r{r?CP1w*|u8BOI%_kdjBmxzQVB-{Q~qA9I|uF|$LXo-?_8JH(>!(oTWB$)6~S z9ohPwIkREYhUX`0?tF!9x3feSiAeW5$+G*V1eTm6%9Uvn@=LHYk0Di``OzfRRST%s z0yU)C+W;GW3$hqrOcIumW+j{;$GDPG0Y!}hQ7MpP^F z-65r#ExxD=HhNX9xTc*4Tu<=ts)1AQxPqShG_em*!S8su!L&>qh@3aL6 zGASvd;AdFM3$rYsI5JTMhAce%i>YFHF5GGrhPe|H_;#i{?*bY)aO85&AStust2u3C zd3`To%YdGmOg7pl0QBa$irvD|bCFbrIJw+d22N#dcL;=#5035X;fp3`peoVU3(GJ> zBa{O|n)K{wK`e-VgyVAi)IB;j*Xwytsgabdv{oeIxgn-VLK)<)sRX1Nmd?Be(P;k~ zTI4>#Ig#*}i#d8yI{B^G#2M0atiq~xB;?R-*`UN#1<`_A@K~iUP|PEA^>t~oIHpD? zf2G$CE_ds&aQtbo72uB)`r*MC`I61^15{@cj1Xxz)T-9>d)|e@?!o z8!kMW37?!mllN+s{EvT-B{Ou>qGFv-u-k`%Dg?RM>ZgK(@s-74<@J8}R{x_)<;g6f zbA9;hsh>H5y(%$gwiMko7z!{j5bFsT14X&jHhh|s$qkW7XBI!)f@FG5%%v->IEw>M z{zzaSuUsjZ5$wM0iS4pDL6lI8+5jYcGe3C;OkItczfrS3>u{5n&6g3H7MTtSR0dlI zPP-kCgv40d)mS>Y{cIIkM$kcXgfMn{|5XAq1SLY;G|@Vh6rFr?6`*XLjGZmy5R(*v z#{6R|(m3C;wI`WiFcEcPebf);Q`lteWQh=Dh7X*rFLh4iyX{``Au}`Hdlukk-v+0S z&^ll=>1M&4Ei;wy&O+|u6>*Gh9K0nQ9Gih`bqa0%(5xBq{Jpb&C-(n~7ucgW;x)SB zP0QZc7R%4R?bAW^6ff6?D^qWq3Y^~h7wxrT+^0^1?WqdLnM~IK(Ah4& z2e-OysvODjN|sa+nF<>QKdWYpp~|PBHZ{)`uMg*N=7Yw6H}%u%)0zG}l<^w^B⁢ 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

!Tkh`$rKWUH(h+%@ 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%0D(;s#-y>s;@HzD#r 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 kB(B~1oIF_AdpgBz-%+*`m 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 J(f>%Q*u98%I+_3g literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-ek/.settings/language.settings.xml b/bsp/renesas/ra8d1-ek/.settings/language.settings.xml new file mode 100644 index 0000000000..860c3fd8bb --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/.settings/org.eclipse.core.runtime.prefs b/bsp/renesas/ra8d1-ek/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000000..9f1acfcfba --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,3 @@ +content-types/enabled=true +content-types/org.eclipse.cdt.core.asmSource/file-extensions=s +eclipse.preferences.version=1 \ No newline at end of file diff --git a/bsp/renesas/ra8d1-ek/.settings/projcfg.ini b/bsp/renesas/ra8d1-ek/.settings/projcfg.ini new file mode 100644 index 0000000000..c5a64cce53 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.settings/projcfg.ini @@ -0,0 +1,19 @@ +#RT-Thread Studio Project Configuration +#Tue Jan 10 14:37:39 CST 2023 +cfg_version=v3.0 +board_name=ra6m3-ek +example_name= +hardware_adapter=J-Link +board_base_nano_proj=false +project_type=rt-thread +chip_name=R7FA6M3AH\n +selected_rtt_version=latest +bsp_version= +os_branch=master +project_base_rtt_bsp=true +output_project_path=E\:softwareRT-ThreadStudioworkspace\ra6m3-temp +is_base_example_project=false +is_use_scons_build=true +project_name=ra6m3-temp +os_version=latest +bsp_path= diff --git a/bsp/renesas/ra8d1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch b/bsp/renesas/ra8d1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch new file mode 100644 index 0000000000..5cae09bdb0 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.settings/ra6m3-temp.JLink.Debug.rttlaunch @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/.settings/standalone.prefs b/bsp/renesas/ra8d1-ek/.settings/standalone.prefs new file mode 100644 index 0000000000..becac0791c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/.settings/standalone.prefs @@ -0,0 +1,21 @@ +#Sun Dec 17 21:02:40 CST 2023 +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#ra8d1_ek\#\#\#\#5.1.0/all=3509892698,ra/board/ra8d1_ek/board_leds.h|3819758545,ra/board/ra8d1_ek/board_sdram.c|2603656871,ra/board/ra8d1_ek/board_leds.c|3640013112,ra/board/ra8d1_ek/board_sdram.h|105041966,ra/board/ra8d1_ek/board_init.h|95488157,ra/board/ra8d1_ek/board.h|1628416776,ra/board/ra8d1_ek/board_ethernet_phy.h|777474786,ra/board/ra8d1_ek/board_init.c +com.renesas.cdt.ddsc.content/com.renesas.cdt.ddsc.content.defaultlinkerscript=script/fsp.scat +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#5.1.0/all=3058606325,ra/fsp/inc/instances/r_ioport.h|1896254027,ra/fsp/inc/api/r_ioport_api.h|3002446768,ra/fsp/src/r_ioport/r_ioport.c +com.renesas.cdt.ddsc.contentgen.options/options/suppresswarningspaths=ra/arm +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#R7FA8D1BHECBD\#\#5.1.0/all= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#\#\#5.1.0/all=3387474234,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h +com.renesas.cdt.ddsc.settingseditor/com.renesas.cdt.ddsc.settingseditor.active_page=PinConfiguration +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#fsp\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_b_uart\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#fsp\#\#\#\#5.1.0/all=4143092756,script/fsp.scat|346195372,script/ac6/fsp_keep.via|934437302,ra/fsp/inc/fsp_features.h|3058606325,ra/fsp/inc/instances/r_ioport.h|543620856,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c|1171232788,ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c|296810838,ra/fsp/src/bsp/mcu/all/bsp_guard.c|1632728582,ra/fsp/src/bsp/mcu/all/bsp_common.h|2702335218,ra/fsp/src/bsp/mcu/all/bsp_group_irq.c|3171976222,ra/fsp/src/bsp/mcu/all/bsp_security.c|429234293,ra/fsp/src/bsp/mcu/all/bsp_common.c|2365965045,ra/fsp/src/bsp/mcu/all/bsp_sbrk.c|1835725510,ra/fsp/src/bsp/mcu/all/bsp_io.c|271204625,ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h|3610800851,ra/fsp/src/bsp/mcu/all/bsp_guard.h|3569788004,ra/fsp/src/bsp/mcu/all/bsp_io.h|3085135894,ra/fsp/src/bsp/mcu/all/bsp_group_irq.h|1246740431,ra/fsp/src/bsp/mcu/all/bsp_delay.h|248082807,ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h|1884526901,ra/fsp/src/bsp/mcu/all/bsp_register_protection.h|2942105346,ra/fsp/src/bsp/mcu/all/bsp_irq.c|1331691689,ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c|4116718951,ra/fsp/src/bsp/mcu/all/bsp_clocks.c|1668386995,ra/fsp/src/bsp/mcu/all/bsp_security.h|2551036977,ra/fsp/src/bsp/mcu/all/bsp_module_stop.h|3324174567,ra/fsp/src/bsp/mcu/all/bsp_exceptions.h|3881030941,ra/fsp/src/bsp/mcu/all/bsp_clocks.h|1437525339,ra/fsp/src/bsp/mcu/all/bsp_register_protection.c|4092753007,ra/fsp/src/bsp/mcu/all/bsp_delay.c|2550773705,ra/fsp/src/bsp/mcu/all/bsp_tfu.h|690210506,ra/fsp/src/bsp/mcu/all/bsp_irq.h|2190391198,ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h|944400528,ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h|3051997639,ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h|4150320773,ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.9.0+renesas.0.fsp.5.1.0/all=1441545198,ra/arm/CMSIS_5/LICENSE.txt|1577199483,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h|304461792,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h|3007265674,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h|4290386133,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h|2327633156,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h|2635219934,ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h|2851112248,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h|1044777225,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h|302860276,ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h|4147548732,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h|1745843273,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h|3898569239,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h|1290634672,ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h|1494441116,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h|1438162915,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h|2701379970,ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h|1017116116,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h|1564341101,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h|1480183821,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h|1924015782,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h|3163610011,ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h|1608305587,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h|4084823319,ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h|2675617387,ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h|364344841,ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h|3911746910,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h|1372010515,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h|3358993753,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h|3778515955,ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h|965562395,ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_b_uart\#\#\#\#5.1.0/all=419014891,ra/fsp/inc/instances/r_sci_b_uart.h|3115705082,ra/fsp/inc/api/r_transfer_api.h|1476071459,ra/fsp/inc/api/r_uart_api.h|3063216256,ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#ra8d1\#\#device\#\#R7FA8D1BHECBD\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#5.1.0/all=3217525171,ra/fsp/inc/fsp_version.h|1896254027,ra/fsp/inc/api/r_ioport_api.h|2560512765,ra/fsp/inc/api/bsp_api.h|1037141086,ra/fsp/inc/api/fsp_common_api.h|4290340792,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h|3088407548,ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#ra8d1_ek\#\#\#\#5.1.0/libraries= +com.renesas.cdt.ddsc.threads.configurator/collapse/module.driver.uart_on_sci_b_uart.1514241209=false +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#CoreM\#\#\#\#5.9.0+renesas.0.fsp.5.1.0/libraries= diff --git a/bsp/renesas/ra8d1-ek/Kconfig b/bsp/renesas/ra8d1-ek/Kconfig new file mode 100644 index 0000000000..006f89db58 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/Kconfig @@ -0,0 +1,29 @@ +mainmenu "RT-Thread Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +# you can change the RTT_ROOT default "../.." to your rtthread_root, +# example : default "F:/git_repositories/rt-thread" + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +config ENV_DIR + string + option env="ENV_ROOT" + default "/" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" +source "../libraries/Kconfig" +source "$BSP_DIR/board/Kconfig" diff --git a/bsp/renesas/ra8d1-ek/README.md b/bsp/renesas/ra8d1-ek/README.md new file mode 100644 index 0000000000..742bb9afbf --- /dev/null +++ b/bsp/renesas/ra8d1-ek/README.md @@ -0,0 +1,176 @@ +# 瑞萨 EK-RA8D1 开发板 BSP 说明 + +中文|[English](README_EN.md) + +## 简介 + +本文档为 EK-RA8D1 开发板提供的 BSP (板级支持包) 说明。通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。 + +主要内容如下: + +- 开发板介绍 +- BSP 快速上手指南 + +## 开发板介绍 + +基于瑞萨 RA8D1 MCU 开发的 EK-RA8D1 评估板,通过灵活配置软件包和 IDE,可帮助用户对 RA8 MCU 群组的特性轻松进行评估,并对嵌入系统应用程序进行开发。 + +开发板正面外观如下图: + +![](docs/picture/front.png) + +该开发板常用 **板载资源** 如下: + +- MCU:R7FA8D1BH,480MHz,**Arm®Cortex®-M85** 内核,2MB 代码闪存, 1MB SRAM +- Jlink OB +- OSPI FLASH(64MX8) +- USB-Host +- USB-Device +- CANFD +- 以太网接口 +- 2个PMOD+Arduino+micro BUS接口 +- 3个用户LED +- 3个按键:2个用户按键,1个复位按键 + +**更多详细资料及工具** + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **片上外设** | **支持情况** | **备注** | +| :----------------: | :----------------: | :------------: | +| UART | 支持 | UART9 为默认日志输出端口 | +| GPIO | 支持 | | +| USB | 支持 | TinyUSB | +| Camera | 支持 | ov2640、ov7725、ov7670... | +| SDHC | 支持 | 1bit、4bit | +| ADC | 支持 | | +| DAC | 支持 | | +| SPI | 支持 | | +| PWM | 支持 | | +| RTC | 支持 | | +| FLASH | 支持 | 片上flash | +| WDT | 支持 | | +| IIC | 支持 | | + +* 注意:仓库刚拉下来是最小系统,若需添加/使能其他外设需参考:[外设驱动使用教程 (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列BSP外设驱动使用教程) + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 + +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 支持的编译平台 + +* armclang(AC6 V6.19) +* LLVM(V16/17)[ARM-software/LLVM-embedded-toolchain-for-Arm (github.com)](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/tag/release-17.0.1) + +## FSP版本说明 + +本BSP使用的是FSP5.1.0版本,进行外设相关开发需要下载并安装。 + +* 下载链接:[rasc-5.1.0](https://github.com/renesas/fsp/releases/download/v5.1.0/setup_fsp_v5_1_0_rasc_v2023-10.exe) + +* 注意:BSP默认是最小系统,若需添加/使能其他外设需参考:[外设驱动使用教程 (rt-thread.org)](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列BSP外设驱动使用教程) + +### 快速上手 + +#### 1、使用 MDK 编译: + +本 BSP 目前提供 MDK5 工程。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。 + +**编译下载** + +- 编译:双击 project.uvprojx 文件,打开 MDK5 工程,编译程序。 +- 下载:点击 MDK 的 Debug 按钮进行下载调试 + +#### 2、使用 LLVM 编译 + +使用 env 工具打开当前 bsp,设定要使用的工具链和对应的路径。 + +```shell +set RTT_CC=llvm-arm +set RTT_EXEC_PATH=D:\Progrem\LLVMEmbeddedToolchainForArm-17.0.1-Windows-x86_64\bin +``` + +然后运行 scons 命令,执行编译 + +```shell +scons +``` + +**查看运行结果** + +下载程序成功之后,系统会自动运行并打印系统信息。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。 + +```bash +initialize rti_board_start:0 done + + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Oct 30 2023 16:14:05 + 2006 - 2022 Copyright by RT-Thread team +do components initialization. +initialize rti_board_end:0 done +initialize finsh_system_init:0 done + +Hello RT-Thread! +msh > +``` + +**应用入口函数** + +应用层的入口函数在 **bsp\renesas\ra8d1-ek\src\hal_entry.c** 中 的 `void hal_entry(void)` 。用户编写的源文件可直接放在 src 目录下。 + +```c +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} +``` + +### 进阶使用 + +**资料及文档** + +- [开发板官网主页](https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8d1-evaluation-kit-ra8d1-mcu-group#overview) +- [开发板用户手册](https://www.renesas.cn/cn/zh/document/mat/ek-ra8d1-v1-users-manual?r=25452351) +- [瑞萨RA MCU 基础知识](https://www2.renesas.cn/cn/zh/document/gde/1520091) + +**ENV 配置** + +- 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) + +此 BSP 默认只开启了 UART9 的功能,如果需使用更多高级功能例如组件、软件包等,需要利用 ENV 工具进行配置。 + +步骤如下: +1. 在 bsp 下打开 env 工具。 +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 +3. 输入`pkgs --update`命令更新软件包。 +4. 输入`scons --target=mdk5` 命令重新生成工程。 + +## 联系人信息 + +在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) + +## 贡献代码 + +如果您对 EK-RA8D1 感兴趣,并且有一些好玩的项目愿意与大家分享的话欢迎给我们贡献代码,您可以参考 [如何向 RT-Thread 代码贡献](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/development-guide/github/github)。 diff --git a/bsp/renesas/ra8d1-ek/README_EN.md b/bsp/renesas/ra8d1-ek/README_EN.md new file mode 100644 index 0000000000..f4bca06975 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/README_EN.md @@ -0,0 +1,143 @@ +# EK-RA8D1 BSP Instruction + +中文|[English](README.md) + +## Introduction + +Prepare for an exhilarating journey into the realm of the EK-RA8D1 development board! This guide is your treasure map, leading you to a trove of knowledge about the Board Support Package (BSP). The Quick Start section is your launchpad, propelling developers into action with the BSP, and getting RT-Thread operational on the development board faster than a speeding bullet. + +Here’s a sneak peek of the adventure that awaits: + +• A captivating exploration of the development board + +• A practical and user-friendly BSP Quick Start Guide + +## Hardware + +The EK-RA8D1 evaluation board, developed based on the Renesas RA8D1 MCU, is a handy tool that allows users to easily evaluate the features of the RA8 MCU group. With flexible software package and IDE configurations, it’s a breeze to develop embedded system applications. + +Here’s a sneak peek of what the front of the development board looks like: + +![](docs/picture/front.png) + +The board comes with some commonly used **on-board resources**. Let’s dive in and explore! + +- MCU:R7FA8D1BH, 480MHz, **Arm®Cortex®-M85**, 2MB Flash, 1MB SRAM +- Jlink OB +- OSPI FLASH(64MX8) +- USB-Host +- USB-Device +- CANFD +- ethernet +- 2个PMOD+Arduino+micro BUS interface +- 3 user LED +- 3 button: 2 user button, 1 reset button + +**More Details** + +### Peripheral Condition + +Each peripheral supporting condition for this BSP is as follows: + +| **On-chip Peripheral Drivers** | **Support** | **Remark** | +| :----------------: | :----------------: | :------------- | +| UART | Support | UART9 is the default log output port. | +| GPIO | Support | | +| USB | Support | TinyUSB | +| Camera | Support | ov2640、ov7725、ov7670... | +| SDHC | Support | 1bit、4bit | +| ADC | Support | | +| DAC | Support | | +| SPI | Support | | +| PWM | Support | | +| RTC | Support | | +| FLASH | Support | On board flash | +| WDT | Support | | +| IIC | Support | | + +## Instructions for Use + +The instructions for use are divided into the following two sections: + +• Quick Start + +This section is a user guide for newcomers to RT-Thread. By following simple steps, you can run the RT-Thread operating system on this development board and see the experimental results. + +• Advanced Use + +This section is for developers who want to enable more development board resources on the RT-Thread operating system. By using the ENV tool to configure the BSP, you can enable more on-board resources and achieve more advanced functions. + +### Quick Start + +This BSP currently only provides an MDK5 project. The following tutorial takes the MDK5 development environment as an example to introduce how to run the system. + +**Compile and Download** + +• Compile: Double-click the **project.uvprojx** file to open the MDK5 project and compile the program. + +• Download: Click the Debug button in MDK to download and debug + +**Running results** + +After the program is downloaded successfully, the system will automatically run and print system information. + +Connect the corresponding serial port of the development board to the PC, open the corresponding serial port (115200-8-1-N) in the terminal tool, reset the device, and you can see RT-Thread’s output information. Enter the help command can view the commands supported by the system. + +```bash +initialize rti_board_start:0 done + + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Oct 30 2023 16:14:05 + 2006 - 2022 Copyright by RT-Thread team +do components initialization. +initialize rti_board_end:0 done +initialize finsh_system_init:0 done + +Hello RT-Thread! +msh > +``` + +**Entry function** + +The entry function of the application layer is in **bsp\renesas\ra8d1-ek\src\hal_entry.c** in `void hal_entry(void)`. Source files that you created can be placed directly in the src directory. + +```c +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} +``` + +### Advanced Features + +**Resources & Documents** + +- [Development Board Overview](https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8d1-evaluation-kit-ra8d1-mcu-group#documents) +- [User Guide](https://www.renesas.com/us/en/document/mat/ek-ra8d1-v1-users-manual?r=25452351) +- [RA MCU](https://www.renesas.com/us/en/document/gde/1520091) + +**ENV Configuration** + +• How to use the ENV tool: [RT-Thread env tool user manual](https://www.rt-thread.io/document/site/programming-manual/env/env/). + +This BSP only enables the function of UART9 by default. If you're looking for more advanced functions such as components and software packages, ENV tool for configuration is available. + +The steps are as follows: + +1. Open the env tool under bsp. +2. Enter the `menuconfig` command to configure the project, and save and exit after configuration. +3. Enter the `pkgs --update` command to update the software package. +4. Enter the `scons --target=mdk5` command to regenerate the project. + +## Contribute the Code + +If you’re interested in the EK-RA8D1 and have some cool projects you’d like to share with everyone, we’d love for you to contribute your code! You can check out [how to contribute to RT-Thread’s code](https://www.rt-thread.io/contribution.html). Let’s make something awesome together! \ No newline at end of file diff --git a/bsp/renesas/ra8d1-ek/SConscript b/bsp/renesas/ra8d1-ek/SConscript new file mode 100644 index 0000000000..ba761a6dc6 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/SConscript @@ -0,0 +1,28 @@ +# for module compiling +import os +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +CPPPATH = [] +list = os.listdir(cwd) + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + CPPPATH = [cwd] + src = Glob('./src/*.c') + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +Return('group') diff --git a/bsp/renesas/ra8d1-ek/SConstruct b/bsp/renesas/ra8d1-ek/SConstruct new file mode 100644 index 0000000000..67511e3048 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/SConstruct @@ -0,0 +1,55 @@ +import os +import sys +import rtconfig + +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') +else: + RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +try: + from building import * +except: + print('Cannot found RT-Thread root directory, please check RTT_ROOT') + print(RTT_ROOT) + exit(-1) + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) + +if rtconfig.PLATFORM in ['iccarm']: + env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES']) + env.Replace(ARFLAGS = ['']) + env.Replace(LINKCOM = env["LINKCOM"] + ' --map project.map') + +Export('RTT_ROOT') +Export('rtconfig') + +SDK_ROOT = os.path.abspath('./') +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +rtconfig.BSP_LIBRARY_TYPE = None + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript'))) + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/renesas/ra8d1-ek/board/Kconfig b/bsp/renesas/ra8d1-ek/board/Kconfig new file mode 100644 index 0000000000..531186b99d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/Kconfig @@ -0,0 +1,581 @@ +menu "Hardware Drivers Config" + + config SOC_R7FA8D1AH + bool + select SOC_SERIES_R7FA8M85 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + + menu "On-chip Peripheral Drivers" + + source "../libraries/HAL_Drivers/Kconfig" + + menuconfig BSP_USING_UART + bool "Enable UART" + default y + select RT_USING_SERIAL + select RT_USING_SERIAL_V2 + if BSP_USING_UART + menuconfig BSP_USING_UART3 + bool "Enable UART3" + default n + if BSP_USING_UART3 + config BSP_UART3_RX_USING_DMA + bool "Enable UART3 RX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + + config BSP_UART3_TX_USING_DMA + bool "Enable UART3 TX DMA" + depends on BSP_USING_UART3 && RT_SERIAL_USING_DMA + default n + + config BSP_UART3_RX_BUFSIZE + int "Set UART3 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART3_TX_BUFSIZE + int "Set UART3 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + menuconfig BSP_USING_UART9 + bool "Enable UART9" + default n + if BSP_USING_UART9 + config BSP_UART9_RX_USING_DMA + bool "Enable UART9 RX DMA" + depends on BSP_USING_UART9 && RT_SERIAL_USING_DMA + default n + + config BSP_UART9_TX_USING_DMA + bool "Enable UART9 TX DMA" + depends on BSP_USING_UART9 && RT_SERIAL_USING_DMA + default n + + config BSP_UART9_RX_BUFSIZE + int "Set UART9 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART9_TX_BUFSIZE + int "Set UART9 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + + menuconfig BSP_USING_SCI_SPI + bool "Enable SCI SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SCI_SPI + config BSP_USING_SCI_SPI0 + bool "Enable SCI SPI0 BUS" + default n + config BSP_USING_SCI_SPI1 + bool "Enable SCI SPI1 BUS" + default n + config BSP_USING_SCI_SPI2 + bool "Enable SCI SPI2 BUS" + default n + config BSP_USING_SCI_SPI3 + bool "Enable SCI SPI3 BUS" + default n + config BSP_USING_SCI_SPI6 + bool "Enable SCI SPI6 BUS" + default n + endif + + menuconfig BSP_USING_SCI + bool "Enable SCI Controller" + default n + config BSP_USING_SCIn_SPI + bool + default n + depends on BSP_USING_SCI + select RT_USING_SPI + + config BSP_USING_SCIn_I2C + bool + default n + depends on BSP_USING_SCI + select RT_USING_I2C + + config BSP_USING_SCIn_UART + bool + default n + depends on BSP_USING_SCI + select RT_USING_SERIAL + select RT_USING_SERIAL_V2 + + if BSP_USING_SCI + config BSP_USING_SCI0 + bool "Enable SCI0" + default n + if BSP_USING_SCI0 + choice + prompt "choice sci mode" + default BSP_USING_SCI0_SPI + config BSP_USING_SCI0_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI0_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI0_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI0_UART + config BSP_SCI0_UART_RX_BUFSIZE + int "Set UART0 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI0_UART_TX_BUFSIZE + int "Set UART0 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI1 + bool "Enable SCI1" + default n + if BSP_USING_SCI1 + choice + prompt "choice sci mode" + default BSP_USING_SCI1_SPI + config BSP_USING_SCI1_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI1_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI1_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI1_UART + config BSP_SCI1_UART_RX_BUFSIZE + int "Set UART1 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI1_UART_TX_BUFSIZE + int "Set UART1 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI2 + bool "Enable SCI2" + default n + if BSP_USING_SCI2 + choice + prompt "choice sci mode" + default BSP_USING_SCI2_SPI + config BSP_USING_SCI2_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI2_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI2_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI2_UART + config BSP_SCI2_UART_RX_BUFSIZE + int "Set UART2 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI2_UART_TX_BUFSIZE + int "Set UART2 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI3 + bool "Enable SCI3" + default n + if BSP_USING_SCI3 + choice + prompt "choice sci mode" + default BSP_USING_SCI3_SPI + config BSP_USING_SCI3_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI3_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI3_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI3_UART + config BSP_SCI3_UART_RX_BUFSIZE + int "Set UART3 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI3_UART_TX_BUFSIZE + int "Set UART3 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI4 + bool "Enable SCI4" + default n + if BSP_USING_SCI4 + choice + prompt "choice sci mode" + default BSP_USING_SCI4_SPI + config BSP_USING_SCI4_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI4_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI4_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI4_UART + config BSP_SCI4_UART_RX_BUFSIZE + int "Set UART4 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI4_UART_TX_BUFSIZE + int "Set UART4 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI5 + bool "Enable SCI5" + default n + if BSP_USING_SCI5 + choice + prompt "choice sci mode" + default BSP_USING_SCI5_SPI + config BSP_USING_SCI5_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI5_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI5_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI5_UART + config BSP_SCI5_UART_RX_BUFSIZE + int "Set UART5 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI5_UART_TX_BUFSIZE + int "Set UART5 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI6 + bool "Enable SCI6" + default n + if BSP_USING_SCI6 + choice + prompt "choice sci mode" + default BSP_USING_SCI6_SPI + config BSP_USING_SCI6_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI6_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI6_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI6_UART + config BSP_SCI6_UART_RX_BUFSIZE + int "Set UART6 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI6_UART_TX_BUFSIZE + int "Set UART6 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI7 + bool "Enable SCI7" + default n + if BSP_USING_SCI7 + choice + prompt "choice sci mode" + default BSP_USING_SCI7_SPI + config BSP_USING_SCI7_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI7_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI7_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI7_UART + config BSP_SCI7_UART_RX_BUFSIZE + int "Set UART7 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI7_UART_TX_BUFSIZE + int "Set UART7 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI8 + bool "Enable SCI8" + default n + if BSP_USING_SCI8 + choice + prompt "choice sci mode" + default BSP_USING_SCI8_SPI + config BSP_USING_SCI8_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI8_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI8_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI8_UART + config BSP_SCI8_UART_RX_BUFSIZE + int "Set UART8 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI8_UART_TX_BUFSIZE + int "Set UART8 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + config BSP_USING_SCI9 + bool "Enable SCI9" + default n + if BSP_USING_SCI9 + choice + prompt "choice sci mode" + default BSP_USING_SCI9_SPI + config BSP_USING_SCI9_SPI + select BSP_USING_SCIn_SPI + bool "SPI mode" + config BSP_USING_SCI9_I2C + select BSP_USING_SCIn_I2C + bool "I2C mode" + config BSP_USING_SCI9_UART + select BSP_USING_SCIn_UART + bool "UART mode" + endchoice + if BSP_USING_SCI9_UART + config BSP_SCI9_UART_RX_BUFSIZE + int "Set UART9 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_SCI9_UART_TX_BUFSIZE + int "Set UART9 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + endif + + menuconfig BSP_USING_SPI + bool "Enable SPI BUS" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI0 + bool "Enable SPI0 BUS" + default n + config BSP_USING_SPI1 + bool "Enable SPI1 BUS" + default n + endif + + menuconfig BSP_USING_I2C + bool "Enable I2C BUS" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C + config BSP_USING_HW_I2C + bool "Enable Hardware I2C BUS" + default n + if BSP_USING_HW_I2C + config BSP_USING_HW_I2C1 + bool "Enable Hardware I2C1 BUS" + default n + endif + if !BSP_USING_HW_I2C + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default y + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + hex "i2c1 scl pin number" + range 0x0000 0x0B0F + default 0x050C + config BSP_I2C1_SDA_PIN + hex "I2C1 sda pin number" + range 0x0000 0x0B0F + default 0x050B + endif + endif + endif + + menuconfig BSP_USING_FS + bool "Enable filesystem" + default n + if BSP_USING_FS + config BSP_USING_ONCHIP_FS + bool "Enable ONCHIP filesystem" + select RT_USING_FAL + select RT_USING_DFS_ELMFAT + select RT_USING_MTD_NOR + select BSP_USING_ONCHIP_FLASH + default n + config BSP_USING_SDCARD_FS + bool "Enable SDCARD filesystem" + select BSP_USING_SDHI + select RT_USING_DFS_ELMFAT + default n + config BSP_USING_SPICARD_FS + bool "Enable SPI FLASH filesystem" + select BSP_USING_SCI_SPI + select BSP_USING_SCI_SPI2 + select RT_USING_SPI_MSD + select RT_USING_DFS_ELMFAT + default n + endif + + menuconfig BSP_USING_SDHI + bool "Enable SDHI" + default n + select RT_USING_SDIO + select RT_USING_DFS + select RT_LIBC_USING_FILEIO + select RT_USING_POSIX_DEVIO + if BSP_USING_SDHI + config SDHI_USING_1_BIT + bool "Use 1-bit Mode(4-bit when disable)" + default y + endif + + menuconfig BSP_USING_PWM + bool "Enable PWM" + default n + select RT_USING_PWM + if BSP_USING_PWM + config BSP_USING_PWM12 + bool "Enable GPT12 (16-Bits) output PWM" + default n + endif + + menuconfig BSP_USING_CAN + bool "Enable CAN" + default n + select RT_USING_CAN + if BSP_USING_CAN + config BSP_USING_CAN0 + bool "Enable CAN0" + default n + endif + + menuconfig BSP_USING_LCD + bool "Enable LCD" + default n + select BSP_USING_GPIO + if BSP_USING_LCD + config BSP_USING_RGB565_LCD + bool "Enable RGB565 LCD" + default n + config BSP_USING_MIPI_LCD + bool "Enable MIPI LCD" + default n + endif + + menuconfig BSP_USING_SDRAM + bool "Enable SDRAM" + if BSP_USING_SDRAM + config BSP_USING_SDRAM_SIZE + hex "(HEX)SDRAM SIZE" + default 0x8000000 + endif + + config BSP_USING_G2D + bool "Enable G2D" + default n + + config BSP_USING_JPEG + bool "Enable JPEG" + default n + + config BSP_USING_ETH + bool "Enable Ethernet" + select RT_USING_SAL + select RT_USING_LWIP + select RT_USING_NETDEV + default n + + menuconfig BSP_USING_LVGL + bool "Enable LVGL for LCD" + select PKG_USING_LVGL + default n + if BSP_USING_LVGL + config BSP_USING_LCD_RGB + bool "Enable LVGL for LCD_RGB565" + select BSP_USING_LCD + default n + endif + endmenu +endmenu diff --git a/bsp/renesas/ra8d1-ek/board/SConscript b/bsp/renesas/ra8d1-ek/board/SConscript new file mode 100644 index 0000000000..59c56a1442 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/SConscript @@ -0,0 +1,21 @@ +import os +from building import * + +objs = [] +cwd = GetCurrentDir() +list = os.listdir(cwd) +CPPPATH = [cwd] +src = Glob('*.c') + +if GetDepend(['BSP_USING_FS']): + src += Glob('ports/mnt.c') + +CPPDEFINES = ['BSP_CFG_RTOS = 2'] + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/renesas/ra8d1-ek/board/board.h b/bsp/renesas/ra8d1-ek/board/board.h new file mode 100644 index 0000000000..ea8fb03729 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/board.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-10 Sherman first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define RA_SRAM_SIZE 896 /* The SRAM size of the chip needs to be modified */ +#define RA_SRAM_END (0x22000000 + RA_SRAM_SIZE * 1024) + +#ifdef __ARMCC_VERSION +extern int Image$$RAM_END$$ZI$$Base; +#define HEAP_BEGIN ((void *)&Image$$RAM_END$$ZI$$Base) +#elif __ICCARM__ +#pragma section="CSTACK" +#define HEAP_BEGIN (__segment_end("CSTACK")) +#else +extern int __RAM_segment_used_end__; +#define HEAP_BEGIN (&__RAM_segment_used_end__) +#endif + +#define HEAP_END RA_SRAM_END + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/renesas/ra8d1-ek/board/lvgl/SConscript b/bsp/renesas/ra8d1-ek/board/lvgl/SConscript new file mode 100644 index 0000000000..79d9772177 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/lvgl/SConscript @@ -0,0 +1,16 @@ +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +group = group + DefineGroup('LVGL-port', src, depend = ['BSP_USING_LVGL'], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8d1-ek/board/lvgl/demo/SConscript b/bsp/renesas/ra8d1-ek/board/lvgl/demo/SConscript new file mode 100644 index 0000000000..9c1b6d1ebd --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/lvgl/demo/SConscript @@ -0,0 +1,17 @@ +from building import * +import os + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +list = os.listdir(cwd) +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) + +group = group + DefineGroup('LVGL-demo', src, depend = ['BSP_USING_LVGL', 'BSP_USING_LVGL_DEMO'], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/renesas/ra8d1-ek/board/lvgl/demo/lv_demo.c b/bsp/renesas/ra8d1-ek/board/lvgl/demo/lv_demo.c new file mode 100644 index 0000000000..4aa62e2248 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/lvgl/demo/lv_demo.c @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-17 Meco Man First version + * 2022-05-10 Meco Man improve rt-thread initialization process + */ +#include "rtconfig.h" + +void lv_user_gui_init(void) +{ + /* display demo; you may replace with your LVGL application at here */ + extern void lv_demo_music(void); + lv_demo_music(); +} diff --git a/bsp/renesas/ra8d1-ek/board/lvgl/lv_conf.h b/bsp/renesas/ra8d1-ek/board/lvgl/lv_conf.h new file mode 100644 index 0000000000..2f5bb46792 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/lvgl/lv_conf.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-02-22 Rbb666 First version + */ + +#ifndef LV_CONF_H +#define LV_CONF_H + +#include + +/* Enable additional color format support */ +#define DLG_LVGL_CF 1 + +/* Enable sub byte color formats to be swapped. If disabled, which is recommended for + * performance, bitmaps need to be in correct order */ +#define DLG_LVGL_CF_SUB_BYTE_SWAP 0 + +#define DLG_LVGL_USE_GPU_RA6M3 0 + +#define LV_USE_PERF_MONITOR 1 +#define LV_COLOR_DEPTH 16 + +#ifdef PKG_USING_ILI9341 + #define LV_HOR_RES_MAX 240 + #define LV_VER_RES_MAX 320 + #define LV_COLOR_16_SWAP 1 + #define LV_DPI_DEF 99 +#else + #define LV_HOR_RES_MAX 480 + #define LV_VER_RES_MAX 272 + #define LV_DPI_DEF 89 +#endif + +#ifdef BSP_USING_LVGL_VIDEO_DEMO +#define LV_USE_FILE_EXPLORER 1 +#if LV_USE_FILE_EXPLORER + /*Maximum length of path*/ + #define LV_FILE_EXPLORER_PATH_MAX_LEN (128) + /*Quick access bar, 1:use, 0:not use*/ + /*Requires: lv_list*/ + #define LV_FILE_EXPLORER_QUICK_ACCESS 0 +#endif + +#define LV_USE_FS_STDIO 1 +#if LV_USE_FS_STDIO + #define LV_FS_STDIO_LETTER '/' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ + #define LV_FS_STDIO_PATH "/" /*Set the working directory. File/directory paths will be appended to it.*/ + #define LV_FS_STDIO_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ +#endif +#endif + +#ifdef PKG_USING_LV_MUSIC_DEMO +/* music player demo */ +#define LV_USE_DEMO_RTT_MUSIC 1 +#define LV_DEMO_RTT_MUSIC_AUTO_PLAY 1 +#define LV_FONT_MONTSERRAT_12 1 +#define LV_FONT_MONTSERRAT_16 1 +#define LV_COLOR_SCREEN_TRANSP 0 +#endif /* PKG_USING_LV_MUSIC_DEMO */ + +#endif diff --git a/bsp/renesas/ra8d1-ek/board/lvgl/lv_port_disp.c b/bsp/renesas/ra8d1-ek/board/lvgl/lv_port_disp.c new file mode 100644 index 0000000000..b76922229e --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/lvgl/lv_port_disp.c @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-11-24 Rbb666 The first version + */ +#include +#include "hal_data.h" + +#if DLG_LVGL_USE_GPU_RA6M3 + #include "drv_g2d.h" +#endif + +#ifdef PKG_USING_ILI9341 + #include "lcd_ili9341.h" +#else + #include "lcd_port.h" +#endif + +#define COLOR_BUFFER (LV_HOR_RES_MAX * LV_VER_RES_MAX / 4) + +/*A static or global variable to store the buffers*/ +static lv_disp_draw_buf_t disp_buf; + +/*Descriptor of a display driver*/ +static lv_disp_drv_t disp_drv; +static struct rt_device_graphic_info info; + +/*Static or global buffer(s). The second buffer is optional*/ +// 0x1FFE0000 0x20040000 +lv_color_t buf_1[COLOR_BUFFER]; + +#if !DLG_LVGL_USE_GPU_RA6M3 +static void color_to16_maybe(lv_color16_t *dst, lv_color_t *src) +{ +#if (LV_COLOR_DEPTH == 16) + dst->full = src->full; +#else + dst->ch.blue = src->ch.blue; + dst->ch.green = src->ch.green; + dst->ch.red = src->ch.red; +#endif +} +#endif + +void _ra_port_display_callback(display_callback_args_t *p_args) +{ + /* TFT-Callback */ +} + +static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) +{ +#ifdef PKG_USING_ILI9341 + lcd_fill_array_spi(area->x1, area->y1, area->x2, area->y2, color_p); +#elif DLG_LVGL_USE_GPU_RA6M3 + lv_port_gpu_blit(area->x1, area->y1, color_p, area); +#else + int x1, x2, y1, y2; + + x1 = area->x1; + x2 = area->x2; + y1 = area->y1; + y2 = area->y2; + + /*Return if the area is out the screen*/ + if (x2 < 0) + return; + if (y2 < 0) + return; + if (x1 > info.width - 1) + return; + if (y1 > info.height - 1) + return; + + /*Truncate the area to the screen*/ + int32_t act_x1 = x1 < 0 ? 0 : x1; + int32_t act_y1 = y1 < 0 ? 0 : y1; + int32_t act_x2 = x2 > info.width - 1 ? info.width - 1 : x2; + int32_t act_y2 = y2 > info.height - 1 ? info.height - 1 : y2; + + uint32_t x; + uint32_t y; + long int location = 0; + + /* color_p is a buffer pointer; the buffer is provided by LVGL */ + lv_color16_t *fbp16 = (lv_color16_t *)info.framebuffer; + + for (y = act_y1; y <= act_y2; y++) + { + for (x = act_x1; x <= act_x2; x++) + { + location = (x) + (y) * info.width; + color_to16_maybe(&fbp16[location], color_p); + color_p++; + } + + color_p += x2 - act_x2; + } +#endif + lv_disp_flush_ready(disp_drv); +} + +void lv_port_disp_init(void) +{ +#ifdef PKG_USING_ILI9341 + spi_lcd_init(20); +#else + static rt_device_t device; + /* LCD Device Init */ + device = rt_device_find("lcd"); + RT_ASSERT(device != RT_NULL); + + if (rt_device_open(device, RT_DEVICE_OFLAG_RDWR) == RT_EOK) + { + rt_device_control(device, RTGRAPHIC_CTRL_GET_INFO, &info); + } + + RT_ASSERT(info.bits_per_pixel == 8 || info.bits_per_pixel == 16 || + info.bits_per_pixel == 24 || info.bits_per_pixel == 32); +#endif + /*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */ + lv_disp_draw_buf_init(&disp_buf, buf_1, NULL, COLOR_BUFFER); + + lv_disp_drv_init(&disp_drv); /*Basic initialization*/ + + /*Set the resolution of the display*/ + disp_drv.hor_res = LV_HOR_RES_MAX; + disp_drv.ver_res = LV_VER_RES_MAX; + + /*Set a display buffer*/ + disp_drv.draw_buf = &disp_buf; + + /*Used to copy the buffer's content to the display*/ + disp_drv.flush_cb = disp_flush; + +#if DLG_LVGL_USE_GPU_RA6M3 + /* Initialize GPU module */ + G2d_Drv_HWInit(); +#endif /* LV_PORT_DISP_GPU_EN */ + + /*Finally register the driver*/ + lv_disp_drv_register(&disp_drv); +} diff --git a/bsp/renesas/ra8d1-ek/board/lvgl/lv_port_indev.c b/bsp/renesas/ra8d1-ek/board/lvgl/lv_port_indev.c new file mode 100644 index 0000000000..21d2f1f4b4 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/lvgl/lv_port_indev.c @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-03-09 Rbb666 The first version + */ +#include +#include + +#include "gt911.h" + +#define DBG_TAG "lv_port_indev" +#define DBG_LVL DBG_LOG +#include + +#include "hal_data.h" + +#define GT911_IRQ_PIN BSP_IO_PORT_00_PIN_04 +#define GT911_RST_PIN BSP_IO_PORT_08_PIN_01 + +static rt_device_t touch_dev; +static lv_indev_t *touch_indev; +struct rt_touch_data *read_data; + +volatile static rt_uint8_t touch_detect_flag = 0; + +static void touchpad_read(lv_indev_drv_t *indev, lv_indev_data_t *data) +{ + if (touch_detect_flag != 1) + return; + + rt_device_read(touch_dev, 0, read_data, 1); + + if (read_data->event == RT_TOUCH_EVENT_NONE) + return; + + data->point.x = read_data->x_coordinate; + data->point.y = read_data->y_coordinate; + + if (read_data->event == RT_TOUCH_EVENT_DOWN) + data->state = LV_INDEV_STATE_PR; + if (read_data->event == RT_TOUCH_EVENT_MOVE) + data->state = LV_INDEV_STATE_PR; + if (read_data->event == RT_TOUCH_EVENT_UP) + data->state = LV_INDEV_STATE_REL; + + touch_detect_flag = 0; + rt_device_control(touch_dev, RT_TOUCH_CTRL_ENABLE_INT, RT_NULL); +} + +static rt_err_t rx_callback(rt_device_t dev, rt_size_t size) +{ + touch_detect_flag = 1; + rt_device_control(dev, RT_TOUCH_CTRL_DISABLE_INT, RT_NULL); + return 0; +} + +rt_err_t gt911_probe(rt_uint16_t x, rt_uint16_t y) +{ + void *id; + + touch_dev = rt_device_find("gt911"); + if (touch_dev == RT_NULL) + { + rt_kprintf("can't find device gt911\n"); + return -1; + } + + if (rt_device_open(touch_dev, RT_DEVICE_FLAG_INT_RX) != RT_EOK) + { + rt_kprintf("open device failed!"); + return -1; + } + + id = rt_malloc(sizeof(rt_uint8_t) * 8); + rt_device_control(touch_dev, RT_TOUCH_CTRL_GET_ID, id); + rt_uint8_t *read_id = (rt_uint8_t *)id; + rt_kprintf("id = GT%d%d%d \n", read_id[0] - '0', read_id[1] - '0', read_id[2] - '0'); + + rt_device_control(touch_dev, RT_TOUCH_CTRL_SET_X_RANGE, &x); /* if possible you can set your x y coordinate*/ + rt_device_control(touch_dev, RT_TOUCH_CTRL_SET_Y_RANGE, &y); + rt_device_control(touch_dev, RT_TOUCH_CTRL_GET_INFO, id); + rt_kprintf("range_x = %d \n", (*(struct rt_touch_info *)id).range_x); + rt_kprintf("range_y = %d \n", (*(struct rt_touch_info *)id).range_y); + rt_kprintf("point_num = %d \n", (*(struct rt_touch_info *)id).point_num); + rt_free(id); + + rt_device_set_rx_indicate(touch_dev, rx_callback); + + read_data = (struct rt_touch_data *)rt_calloc(1, sizeof(struct rt_touch_data)); + if (!read_data) + { + return -RT_ENOMEM; + } + + return RT_EOK; +} + +#define RST_PIN "p801" +#define INT_PIN "p004" + +rt_err_t rt_hw_gt911_register(void) +{ + struct rt_touch_config cfg; + rt_base_t int_pin = rt_pin_get(INT_PIN); + rt_base_t rst_pin = rt_pin_get(RST_PIN); + + cfg.dev_name = "i2c1"; + cfg.irq_pin.pin = int_pin; + cfg.irq_pin.mode = PIN_MODE_INPUT_PULLDOWN; + cfg.user_data = &rst_pin; + + rt_hw_gt911_init("gt911", &cfg); + + gt911_probe(480, 272); + + return RT_EOK; +} + +void lv_port_indev_init(void) +{ + static lv_indev_drv_t indev_drv; /* Descriptor of a input device driver */ + lv_indev_drv_init(&indev_drv); /* Basic initialization */ + indev_drv.type = LV_INDEV_TYPE_POINTER; /* Touch pad is a pointer-like device */ + indev_drv.read_cb = touchpad_read; /* Set your driver function */ + + /* Register the driver in LVGL and save the created input device object */ + touch_indev = lv_indev_drv_register(&indev_drv); + + /* Register touch device */ + rt_err_t res = rt_hw_gt911_register(); + RT_ASSERT(res == RT_EOK); +} diff --git a/bsp/renesas/ra8d1-ek/board/ports/SConscript b/bsp/renesas/ra8d1-ek/board/ports/SConscript new file mode 100644 index 0000000000..09bd4c2582 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +src = [] +objs = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +list = os.listdir(cwd) +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/renesas/ra8d1-ek/board/ports/fal_cfg.h b/bsp/renesas/ra8d1-ek/board/ports/fal_cfg.h new file mode 100644 index 0000000000..2ff19a233d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/fal_cfg.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-07-20 Sherman the first version + */ +#ifndef _FAL_CFG_H_ +#define _FAL_CFG_H_ + +#include "hal_data.h" + +extern const struct fal_flash_dev _onchip_flash_hp0; +extern const struct fal_flash_dev _onchip_flash_hp1; +extern const struct fal_flash_dev _onchip_flash_hp3; + +/* flash device table */ +#define FAL_FLASH_DEV_TABLE \ +{ \ + &_onchip_flash_hp0, \ + &_onchip_flash_hp1, \ + &_onchip_flash_hp3, \ +} +/* ====================== Partition Configuration ========================== */ +#ifdef FAL_PART_HAS_TABLE_CFG +/** partition table, The chip flash partition is defined in "\ra\fsp\src\bsp\mcu\ra6m4\bsp_feature.h". + * More details can be found in the RA6M4 Group User Manual: Hardware section 47 Flash memory.*/ +#define FAL_PART_TABLE \ +{ \ + {FAL_PART_MAGIC_WROD, "boot", "onchip_flash_hp0", 0, BSP_FEATURE_FLASH_HP_CF_REGION0_SIZE, 0}, \ + {FAL_PART_MAGIC_WROD, "app", "onchip_flash_hp1", 0, (BSP_ROM_SIZE_BYTES - BSP_FEATURE_FLASH_HP_CF_REGION0_SIZE), 0}, \ + {FAL_PART_MAGIC_WROD, "disk", "onchip_flash_hp3", 0, (BSP_DATA_FLASH_SIZE_BYTES), 0}, \ +} +#endif /* FAL_PART_HAS_TABLE_CFG */ +#endif /* _FAL_CFG_H_ */ + diff --git a/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h b/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h new file mode 100644 index 0000000000..a85c88569a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/gpio_cfg.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-01-19 Sherman first version + */ + +/* Number of IRQ channels on the device */ +#define RA_IRQ_MAX 16 + +/* PIN to IRQx table */ +#define PIN2IRQX_TABLE(pin) \ +{ \ + switch (pin) \ + { \ + case BSP_IO_PORT_04_PIN_00: \ + case BSP_IO_PORT_02_PIN_06: \ + case BSP_IO_PORT_01_PIN_05: \ + return 0; \ + case BSP_IO_PORT_02_PIN_05: \ + case BSP_IO_PORT_01_PIN_01: \ + case BSP_IO_PORT_01_PIN_04: \ + return 1; \ + case BSP_IO_PORT_02_PIN_03: \ + case BSP_IO_PORT_01_PIN_00: \ + case BSP_IO_PORT_02_PIN_13: \ + return 2; \ + case BSP_IO_PORT_02_PIN_02: \ + case BSP_IO_PORT_01_PIN_10: \ + case BSP_IO_PORT_02_PIN_12: \ + return 3; \ + case BSP_IO_PORT_04_PIN_02: \ + case BSP_IO_PORT_01_PIN_11: \ + case BSP_IO_PORT_04_PIN_11: \ + return 4; \ + case BSP_IO_PORT_04_PIN_01: \ + case BSP_IO_PORT_03_PIN_02: \ + case BSP_IO_PORT_04_PIN_10: \ + return 5; \ + case BSP_IO_PORT_03_PIN_01: \ + case BSP_IO_PORT_00_PIN_00: \ + case BSP_IO_PORT_04_PIN_09: \ + return 6; \ + case BSP_IO_PORT_00_PIN_01: \ + case BSP_IO_PORT_04_PIN_08: \ + return 7; \ + case BSP_IO_PORT_00_PIN_02: \ + case BSP_IO_PORT_03_PIN_05: \ + case BSP_IO_PORT_04_PIN_15: \ + return 8; \ + case BSP_IO_PORT_00_PIN_04: \ + case BSP_IO_PORT_03_PIN_04: \ + case BSP_IO_PORT_04_PIN_14: \ + return 9; \ + case BSP_IO_PORT_00_PIN_05: \ + case BSP_IO_PORT_07_PIN_09: \ + return 10; \ + case BSP_IO_PORT_05_PIN_01: \ + case BSP_IO_PORT_00_PIN_06: \ + case BSP_IO_PORT_07_PIN_08: \ + return 11; \ + case BSP_IO_PORT_05_PIN_02: \ + case BSP_IO_PORT_00_PIN_08: \ + return 12; \ + case BSP_IO_PORT_00_PIN_15: \ + case BSP_IO_PORT_00_PIN_09: \ + return 13; \ + case BSP_IO_PORT_04_PIN_03: \ + case BSP_IO_PORT_05_PIN_12: \ + case BSP_IO_PORT_05_PIN_05: \ + return 14; \ + case BSP_IO_PORT_04_PIN_04: \ + case BSP_IO_PORT_05_PIN_11: \ + case BSP_IO_PORT_05_PIN_06: \ + return 15; \ + default : \ + return -1; \ + } \ +} diff --git a/bsp/renesas/ra8d1-ek/board/ports/lcd_port.h b/bsp/renesas/ra8d1-ek/board/ports/lcd_port.h new file mode 100644 index 0000000000..a786d0f1f4 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/lcd_port.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-07-28 liu2guang the first version for STM32F469NI-Discovery. + */ + +#ifndef __DRV_LCD_H_ +#define __DRV_LCD_H_ + +#include +#include + +typedef enum +{ + ROTATION_ZERO = 0, + ROTATION_090 = 90, + ROTATION_180 = 180, + ROTATION_270 = 270, +} bsp_rotation; + +#define LCD_WIDTH DISPLAY_HSIZE_INPUT0 +#define LCD_HEIGHT DISPLAY_VSIZE_INPUT0 +#define LCD_BITS_PER_PIXEL DISPLAY_BITS_PER_PIXEL_INPUT1 +#define LCD_PIXEL_FORMAT RTGRAPHIC_PIXEL_FORMAT_RGB565 +#define LCD_BUF_SIZE (LCD_WIDTH * LCD_HEIGHT * LCD_BITS_PER_PIXEL / 8) + +#define LCD_XSTRIDE_PHYS (((DISPLAY_BUFFER_STRIDE_PIXELS_INPUT0 * LCD_BITS_PER_PIXEL + 0x1FF) & 0xFFFFFE00) / LCD_BITS_PER_PIXEL) +#define LCD_NUM_FRAMEBUFFERS (2) + +#define LCD_BL_PIN BSP_IO_PORT_04_PIN_04 + +#endif diff --git a/bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/SConscript b/bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/SConscript new file mode 100644 index 0000000000..9334530c3e --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/SConscript @@ -0,0 +1,13 @@ +import os +from building import * + +src = [] +objs = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] + +src = Glob('*.c') + +objs = DefineGroup('Drivers', src, depend = ['BSP_USING_MIPI_LCD'], CPPPATH = CPPPATH) + +Return('objs') diff --git a/bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/mipi_config.c b/bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/mipi_config.c new file mode 100644 index 0000000000..51717bd25f --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/mipi_lcd/mipi_config.c @@ -0,0 +1,226 @@ +#include + +#if (defined(BSP_USING_LCD)) || (defined(SOC_SERIES_R7FA8M85)) +#include +#include "hal_data.h" + +#define DRV_DEBUG +#define LOG_TAG "mipi_cfg" +#include + +#define MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG ((mipi_dsi_cmd_id_t) 0xFE) +#define MIPI_DSI_DISPLAY_CONFIG_DATA_END_OF_TABLE ((mipi_dsi_cmd_id_t) 0xFD) + +typedef struct +{ + unsigned char size; + unsigned char buffer[10]; + mipi_dsi_cmd_id_t cmd_id; + mipi_dsi_cmd_flag_t flags; +} lcd_table_setting_t; + +volatile static bool g_message_sent; +volatile static mipi_dsi_phy_status_t g_phy_status; + +const lcd_table_setting_t g_lcd_init_focuslcd[] = +{ + {6, {0xFF, 0xFF, 0x98, 0x06, 0x04, 0x01}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x08, 0x10}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x21, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0x30, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x31, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0x40, 0x14}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x41, 0x33}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x42, 0x02}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x43, 0x09}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x44, 0x06}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x50, 0x70}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x51, 0x70}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x52, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x53, 0x48}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x60, 0x07}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x61, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x62, 0x08}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x63, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0xa0, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa1, 0x03}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa2, 0x09}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa3, 0x0d}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa4, 0x06}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa5, 0x16}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa6, 0x09}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa7, 0x08}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa8, 0x03}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xa9, 0x07}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xaa, 0x06}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xab, 0x05}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xac, 0x0d}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xad, 0x2c}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xae, 0x26}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xaf, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0xc0, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc1, 0x04}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc2, 0x0b}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc3, 0x0f}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc4, 0x09}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc5, 0x18}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc6, 0x07}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc7, 0x08}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc8, 0x05}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xc9, 0x09}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xca, 0x07}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xcb, 0x05}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xcc, 0x0c}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xcd, 0x2d}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xce, 0x28}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xcf, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {6, {0xFF, 0xFF, 0x98, 0x06, 0x04, 0x06}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x00, 0x21}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x01, 0x09}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x02, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x03, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x04, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x05, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x06, 0x80}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x07, 0x05}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x08, 0x02}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x09, 0x80}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x0a, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x0b, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x0c, 0x0a}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x0d, 0x0a}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x0e, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x0f, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x10, 0xe0}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x11, 0xe4}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x12, 0x04}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x13, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x14, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x15, 0xc0}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x16, 0x08}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x17, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x18, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x19, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x1a, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x1b, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x1c, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x1d, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0x20, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x21, 0x23}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x22, 0x45}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x23, 0x67}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x24, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x25, 0x23}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x26, 0x45}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x27, 0x67}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0x30, 0x01}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x31, 0x11}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x32, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x33, 0xee}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x34, 0xff}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x35, 0xcb}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x36, 0xda}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x37, 0xad}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x38, 0xbc}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x39, 0x76}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3a, 0x67}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3b, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3c, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3d, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3e, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3f, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x40, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {2, {0x53, 0x10}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x54, 0x10}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {6, {0xFF, 0xFF, 0x98, 0x06, 0x04, 0x07}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x18, 0x1d}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x26, 0xb2}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x02, 0x77}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0xe1, 0x79}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x17, 0x22}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {6, {0xFF, 0xFF, 0x98, 0x06, 0x04, 0x00}, MIPI_DSI_CMD_ID_DCS_LONG_WRITE, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {120, {0}, MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG, (mipi_dsi_cmd_flag_t)0}, + {2, {0x11, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_0_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {5, {0}, MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG, (mipi_dsi_cmd_flag_t)0}, + {2, {0x29, 0x00}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_0_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + {2, {0x3a, 0x70}, MIPI_DSI_CMD_ID_DCS_SHORT_WRITE_1_PARAM, MIPI_DSI_CMD_FLAG_LOW_POWER}, + + {0x00, {0}, MIPI_DSI_DISPLAY_CONFIG_DATA_END_OF_TABLE, (mipi_dsi_cmd_flag_t)0}, +}; + +void mipi_dsi0_callback(mipi_dsi_callback_args_t *p_args) +{ + switch (p_args->event) + { + case MIPI_DSI_EVENT_SEQUENCE_0: + { + if (MIPI_DSI_SEQUENCE_STATUS_DESCRIPTORS_FINISHED == p_args->tx_status) + { + g_message_sent = true; + } + break; + } + case MIPI_DSI_EVENT_PHY: + { + g_phy_status |= p_args->phy_status; + break; + } + default: + { + break; + } + } +} + +static void mipi_dsi_push_table(const lcd_table_setting_t *table) +{ + fsp_err_t err = FSP_SUCCESS; + const lcd_table_setting_t *p_entry = table; + + while (MIPI_DSI_DISPLAY_CONFIG_DATA_END_OF_TABLE != p_entry->cmd_id) + { + mipi_dsi_cmd_t msg = + { + .channel = 0, + .cmd_id = p_entry->cmd_id, + .flags = p_entry->flags, + .tx_len = p_entry->size, + .p_tx_buffer = p_entry->buffer, + }; + + if (MIPI_DSI_DISPLAY_CONFIG_DATA_DELAY_FLAG == msg.cmd_id) + { + R_BSP_SoftwareDelay (table->size, BSP_DELAY_UNITS_MILLISECONDS); + } + else + { + g_message_sent = false; + /* Send a command to the peripheral device */ + err = R_MIPI_DSI_Command(&g_mipi_dsi0_ctrl, &msg); + if (err != FSP_SUCCESS) + { + LOG_E("R_MIPI_DSI_Command error\n"); + } + /* Wait */ + while (!g_message_sent); + } + p_entry++; + } +} + +void ra8_mipi_lcd_init(void) +{ + mipi_dsi_push_table(g_lcd_init_focuslcd); +} + +#endif diff --git a/bsp/renesas/ra8d1-ek/board/ports/mnt.c b/bsp/renesas/ra8d1-ek/board/ports/mnt.c new file mode 100644 index 0000000000..e68ef15901 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/mnt.c @@ -0,0 +1,165 @@ +#include +#include "hal_data.h" + +#ifdef BSP_USING_FS + +#include + +#define DBG_TAG "app.filesystem" +#define DBG_LVL DBG_INFO +#include + +#ifdef BSP_USING_ONCHIP_FS +#include "fal.h" +#define FS_PARTITION_NAME "disk" + +static void sd_mount(void) +{ + struct rt_device *flash_dev = fal_blk_device_create(FS_PARTITION_NAME); + + if (flash_dev == NULL) + { + rt_kprintf("Can't create a block device on '%s' partition.\n", FS_PARTITION_NAME); + } + else + { + rt_kprintf("Create a block device on the %s partition of flash successful.\n", FS_PARTITION_NAME); + } + + if(rt_device_find(FS_PARTITION_NAME) != RT_NULL) + { + dfs_mkfs("elm", FS_PARTITION_NAME); + if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == RT_EOK) + { + rt_kprintf("onchip elm filesystem mount to '/'\n"); + } + else + { + rt_kprintf("onchip elm filesystem mount to '/' failed!\n"); + } + } + else + { + rt_kprintf("find filesystem portion failed\r\n"); + } +} + +#elif defined(BSP_USING_SDCARD_FS) +#include + +/* SD Card hot plug detection pin */ +#define SD_CHECK_PIN "p405" + +static rt_base_t sd_check_pin = 0; + +static void _sdcard_mount(void) +{ + rt_device_t device; + + device = rt_device_find("sd"); + rt_kprintf("rt_device_find %x \r\n", device); + if (device == NULL) + { + mmcsd_wait_cd_changed(0); + sdcard_change(); + mmcsd_wait_cd_changed(RT_WAITING_FOREVER); + device = rt_device_find("sd"); + } + + if (device != RT_NULL) + { + if (dfs_mount("sd", "/", "elm", 0, 0) == RT_EOK) + { + LOG_I("sd card mount to '/'"); + } + else + { + LOG_W("sd card mount to '/' failed!"); + } + } +} + +static void _sdcard_unmount(void) +{ + rt_thread_mdelay(200); + dfs_unmount("/sdcard"); + LOG_I("Unmount \"/sdcard\""); + + mmcsd_wait_cd_changed(0); + sdcard_change(); + mmcsd_wait_cd_changed(RT_WAITING_FOREVER); +} + +static void sd_auto_mount(void *parameter) +{ + rt_uint8_t re_sd_check_pin = 1; + rt_thread_mdelay(20); + + if (!rt_pin_read(sd_check_pin)) + { + _sdcard_mount(); + } + + while (1) + { + rt_thread_mdelay(200); + + if (re_sd_check_pin && (re_sd_check_pin = rt_pin_read(sd_check_pin)) == 0) + { + _sdcard_mount(); + } + + if (!re_sd_check_pin && (re_sd_check_pin = rt_pin_read(sd_check_pin)) != 0) + { + _sdcard_unmount(); + } + } +} + +static void sd_mount(void) +{ + rt_thread_t tid; + + sd_check_pin = rt_pin_get(SD_CHECK_PIN); + rt_pin_mode(sd_check_pin, PIN_MODE_INPUT_PULLUP); + + tid = rt_thread_create("sd_mount", sd_auto_mount, RT_NULL, + 2048, RT_THREAD_PRIORITY_MAX - 2, 20); + if (tid != RT_NULL) + { + rt_thread_startup(tid); + } + else + { + LOG_E("create sd_mount thread err!"); + return; + } +} + +#else +#include +#include "drv_sci_spi.h" +int sd_mount(void) +{ + uint32_t cs_pin = BSP_IO_PORT_10_PIN_05; + rt_hw_sci_spi_device_attach("scpi2", "scpi20", cs_pin); + msd_init("sd0", "scpi20"); + if (dfs_mount("sd0", "/", "elm", 0, 0) == 0) + { + LOG_I("Mount \"/dev/sd0\" on \"/\"\n"); + } + else + { + LOG_W("sd card mount to '/' failed!"); + } + return 0; +} +#endif /* BSP_USING_SDCARD_FS */ + +int mount_init(void) +{ + sd_mount(); + return RT_EOK; +} +// INIT_ENV_EXPORT(mount_init); +#endif diff --git a/bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h b/bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h new file mode 100644 index 0000000000..8bf0155c91 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ports/omv_fs/ff.h @@ -0,0 +1,49 @@ +#ifndef __OMV_FF_H__ +#define __OMV_FF_H__ + +#include "dfs_file.h" + +typedef struct dfs_file FIL; +typedef char TCHAR; +typedef unsigned int UINT; +typedef unsigned char BYTE; + +typedef int FF_DIR; +typedef struct stat FILINFO; + +typedef enum { + FR_OK = 0, /* (0) Succeeded */ + FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */ + FR_INT_ERR, /* (2) Assertion failed */ + FR_NOT_READY, /* (3) The physical drive cannot work */ + FR_NO_FILE, /* (4) Could not find the file */ + FR_NO_PATH, /* (5) Could not find the path */ + FR_INVALID_NAME, /* (6) The path name format is invalid */ + FR_DENIED, /* (7) Access denied due to prohibited access or directory full */ + FR_EXIST, /* (8) Access denied due to prohibited access */ + FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */ + FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */ + FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */ + FR_NOT_ENABLED, /* (12) The volume has no work area */ + FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */ + FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any problem */ + FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */ + FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */ + FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */ + FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_LOCK */ + FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ +} FRESULT; + +/* File access mode and open method flags (3rd argument of f_open) */ +#define FA_READ 0x01 +#define FA_WRITE 0x02 +#define FA_OPEN_EXISTING 0x00 +#define FA_CREATE_NEW 0x04 +#define FA_CREATE_ALWAYS 0x08 +#define FA_OPEN_ALWAYS 0x10 +#define FA_OPEN_APPEND 0x30 + +#define f_eof(fp) ((int)((fp)->pos == (fp)->vnode->size)) +#define f_tell(fp) ((fp)->pos) +#define f_size(fp) ((fp)->vnode->size) +#endif diff --git a/bsp/renesas/ra8d1-ek/board/ra8_it.c b/bsp/renesas/ra8d1-ek/board/ra8_it.c new file mode 100644 index 0000000000..0972065400 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/board/ra8_it.c @@ -0,0 +1,20 @@ +#include +#include "hal_data.h" + +#ifdef BSP_USING_SCI_SPI +rt_weak void sci_spi3_callback(spi_callback_args_t *p_args) +{ +} + +rt_weak void sci_spi4_callback(spi_callback_args_t *p_args) +{ +} + +rt_weak void sci_spi6_callback(spi_callback_args_t *p_args) +{ +} + +rt_weak void sci_spi7_callback(spi_callback_args_t *p_args) +{ +} +#endif diff --git a/bsp/renesas/ra8d1-ek/buildinfo.gpdsc b/bsp/renesas/ra8d1-ek/buildinfo.gpdsc new file mode 100644 index 0000000000..0cdfb6f424 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/buildinfo.gpdsc @@ -0,0 +1,164 @@ + + + Renesas + Project Content + Project content managed by the Renesas Smart Configurator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/configuration.xml b/bsp/renesas/ra8d1-ek/configuration.xml new file mode 100644 index 0000000000..ecf20c4d3f --- /dev/null +++ b/bsp/renesas/ra8d1-ek/configuration.xml @@ -0,0 +1,1015 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RA8D1-EK Board Support Files + Renesas.RA_board_ra8d1_ek.5.1.0.pack + + + Board Support Package Common Files + Renesas.RA.5.1.0.pack + + + I/O Port + Renesas.RA.5.1.0.pack + + + SCI UART + Renesas.RA.5.1.0.pack + + + Arm CMSIS Version 5 - Core (M) + Arm.CMSIS5.5.9.0+renesas.0.fsp.5.1.0.pack + + + Board support package for R7FA8D1BHECBD + Renesas.RA_mcu_ra8d1.5.1.0.pack + + + Board support package for RA8D1 + Renesas.RA_mcu_ra8d1.5.1.0.pack + + + Board support package for RA8D1 - FSP Data + Renesas.RA_mcu_ra8d1.5.1.0.pack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/ra8d1-ek/docs/picture/front.png b/bsp/renesas/ra8d1-ek/docs/picture/front.png new file mode 100644 index 0000000000000000000000000000000000000000..d9594a47d4c627db58ffb285f3b3285d6523f947 GIT binary patch literal 146838 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

3ftOcmRuMhmXgAMash7k}7RU%aEYk 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 W?xw&sej@$w{>VxyN>qW2gZ>{5n|FHv literal 0 HcmV?d00001 diff --git a/bsp/renesas/ra8d1-ek/memory_regions.scat b/bsp/renesas/ra8d1-ek/memory_regions.scat new file mode 100644 index 0000000000..2993b52037 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/memory_regions.scat @@ -0,0 +1,30 @@ + + /* generated memory regions file - do not edit */ + #define RAM_START 0x22000000 + #define RAM_LENGTH 0xE0000 + #define FLASH_START 0x02000000 + #define FLASH_LENGTH 0x1F8000 + #define DATA_FLASH_START 0x27000000 + #define DATA_FLASH_LENGTH 0x3000 + #define OPTION_SETTING_START 0x0300A100 + #define OPTION_SETTING_LENGTH 0x100 + #define OPTION_SETTING_S_START 0x0300A200 + #define OPTION_SETTING_S_LENGTH 0x100 + #define OPTION_SETTING_DATA_FLASH_S_START 0x27030080 + #define OPTION_SETTING_DATA_FLASH_S_LENGTH 0x800 + #define ID_CODE_START 0x00000000 + #define ID_CODE_LENGTH 0x0 + #define SDRAM_START 0x68000000 + #define SDRAM_LENGTH 0x8000000 + #define QSPI_FLASH_START 0x60000000 + #define QSPI_FLASH_LENGTH 0x0 + #define OSPI_DEVICE_0_START 0x80000000 + #define OSPI_DEVICE_0_LENGTH 0x10000000 + #define OSPI_DEVICE_1_START 0x90000000 + #define OSPI_DEVICE_1_LENGTH 0x10000000 + #define ITCM_START 0x00000000 + #define ITCM_LENGTH 0x10000 + #define DTCM_START 0x20000000 + #define DTCM_LENGTH 0x10000 + #define NS_OFFSET_START 0x10000000 + #define NS_OFFSET_LENGTH 0x0 diff --git a/bsp/renesas/ra8d1-ek/project.uvoptx b/bsp/renesas/ra8d1-ek/project.uvoptx new file mode 100644 index 0000000000..8fcc595047 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/project.uvoptx @@ -0,0 +1,769 @@ + + + + 1.0 + +

### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M.FLM -FS02000000 -FL01F8000 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FF1RA8D1_DATA_C2M.FLM -FS127000000 -FL13000 -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FF2RA8D1_CCONF.FLM -FS2300A100 -FL2200 -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + 0 + UL2V8M + UL2V8M(-S0 -C0 -P0 ) -FN3 -FC2000 -FD22000000 -FF0RA8D1_2M -FF1RA8D1_DATA_C2M -FF2RA8D1_CCONF -FL01F8000 -FL13000 -FL2200 -FS02000000 -FS127000000 -FS2300A100 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Compiler + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + syscall_mem.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + syscalls.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cctype.c + cctype.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstdlib.c + cstdlib.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cstring.c + cstring.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\ctime.c + ctime.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cunistd.c + cunistd.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + ..\..\..\components\libc\compilers\common\cwchar.c + cwchar.c + 0 + 0 + + + + + CPU + 0 + 0 + 0 + 0 + + 2 + 9 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\atomic_arm.c + atomic_arm.c + 0 + 0 + + + 2 + 10 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 2 + 11 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 2 + 12 + 2 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m85\context_gcc.S + context_gcc.S + 0 + 0 + + + 2 + 13 + 1 + 0 + 0 + 0 + ..\..\..\libcpu\arm\cortex-m85\cpuport.c + cpuport.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 3 + 14 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\core\device.c + device.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\completion.c + completion.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\dataqueue.c + dataqueue.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\pipe.c + pipe.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\waitqueue.c + waitqueue.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\ipc\workqueue.c + workqueue.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + ..\..\..\components\drivers\serial\serial_v2.c + serial_v2.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 4 + 24 + 1 + 0 + 0 + 0 + board\ra8_it.c + ra8_it.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_common.c + drv_common.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_gpio.c + drv_gpio.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + ..\libraries\HAL_Drivers\drv_usart_v2.c + drv_usart_v2.c + 0 + 0 + + + + + Finsh + 0 + 0 + 0 + 0 + + 5 + 28 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 5 + 29 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 5 + 30 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\msh_parse.c + msh_parse.c + 0 + 0 + + + 5 + 31 + 1 + 0 + 0 + 0 + ..\..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + + + Kernel + 0 + 0 + 0 + 0 + + 6 + 32 + 1 + 0 + 0 + 0 + ..\..\..\src\clock.c + clock.c + 0 + 0 + + + 6 + 33 + 1 + 0 + 0 + 0 + ..\..\..\src\components.c + components.c + 0 + 0 + + + 6 + 34 + 1 + 0 + 0 + 0 + ..\..\..\src\idle.c + idle.c + 0 + 0 + + + 6 + 35 + 1 + 0 + 0 + 0 + ..\..\..\src\ipc.c + ipc.c + 0 + 0 + + + 6 + 36 + 1 + 0 + 0 + 0 + ..\..\..\src\irq.c + irq.c + 0 + 0 + + + 6 + 37 + 1 + 0 + 0 + 0 + ..\..\..\src\kservice.c + kservice.c + 0 + 0 + + + 6 + 38 + 1 + 0 + 0 + 0 + ..\..\..\src\memheap.c + memheap.c + 0 + 0 + + + 6 + 39 + 1 + 0 + 0 + 0 + ..\..\..\src\mempool.c + mempool.c + 0 + 0 + + + 6 + 40 + 1 + 0 + 0 + 0 + ..\..\..\src\object.c + object.c + 0 + 0 + + + 6 + 41 + 1 + 0 + 0 + 0 + ..\..\..\src\scheduler_up.c + scheduler_up.c + 0 + 0 + + + 6 + 42 + 1 + 0 + 0 + 0 + ..\..\..\src\thread.c + thread.c + 0 + 0 + + + 6 + 43 + 1 + 0 + 0 + 0 + ..\..\..\src\timer.c + timer.c + 0 + 0 + + + + + :Renesas RA Smart Configurator:Common Sources + 0 + 0 + 0 + 0 + + 7 + 44 + 1 + 0 + 0 + 0 + .\src\hal_entry.c + hal_entry.c + 0 + 0 + + + + + ::Flex Software + 0 + 0 + 0 + 1 + + + diff --git a/bsp/renesas/ra8d1-ek/project.uvprojx b/bsp/renesas/ra8d1-ek/project.uvprojx new file mode 100644 index 0000000000..7c17ade57a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/project.uvprojx @@ -0,0 +1,666 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 6210000::V6.21::ARMCLANG + 1 + + + R7FA8D1BH + Renesas + Renesas.RA_DFP.5.1.0 + https://www2.renesas.eu/Keil_MDK_Packs/ + IRAM(0x22000000,0xE0000) IRAM2(0x0,0x10000) IROM(0x02000000,0x001F8000) XRAM(0x20000000,0x10000) CPUTYPE("Cortex-M85") FPU3(DFPU) DSP TZ MVE(FP) PACBTI CLOCK(12000000) ELITTLE + + + UL2V8M(-S0 -C0 -P0 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M -FS02000000 -FL01F8000 -FF1RA8D1_DATA_C2M -FS127000000 -FL13000 -FF2RA8D1_CCONF -FS2300A100 -FL2200 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM)) + 0 + + + + + + + + + + + $$Device:R7FA8D1BH$SVD\R7FA8D1BH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd /c "start "Renesas" /w cmd /c ""$Slauncher\rasc_launcher.bat" "$Prasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 "$Pconfiguration.xml" "$L%L" 2> "%%TEMP%%\rasc_stderr.out""" + + 0 + 0 + 2 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + + + + SARMV8M.DLL + -MPU -MVE -PACBTI + TCM.DLL + -pCM85 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 0 + 1 + 4102 + + 1 + BIN\UL2V8M.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M85" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 2 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x20000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 0 + 0x0 + 0x10000 + + + + + + 1 + 6 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + + -Wno-license-management -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal + __STDC_LIMIT_MACROS, RT_USING_ARMLIBC, RT_USING_LIBC, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, BSP_CFG_RTOS = 2 + + ..\..\..\libcpu\arm\cortex-m85;board\ports;..\..\..\components\libc\posix\io\poll;..\..\..\components\libc\compilers\common\include;..\..\..\include;board;..\..\..\components\libc\compilers\common\extension;..\..\..\components\drivers\include;..\..\..\libcpu\arm\common;..\..\..\components\drivers\include;..\..\..\components\libc\compilers\common\extension\fcntl\octal;..\..\..\components\finsh;..\libraries\HAL_Drivers\config;..\..\..\components\libc\posix\io\epoll;.;..\..\..\components\drivers\include;..\libraries\HAL_Drivers;..\..\..\components\libc\posix\ipc;..\..\..\components\libc\posix\io\eventfd;..\..\..\components\drivers\include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + + + + .\script\fsp.scat + + + + + 6319,6314 + + + + + + Compiler + + + syscall_mem.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscall_mem.c + + + syscalls.c + 1 + ..\..\..\components\libc\compilers\armlibc\syscalls.c + + + cctype.c + 1 + ..\..\..\components\libc\compilers\common\cctype.c + + + cstdlib.c + 1 + ..\..\..\components\libc\compilers\common\cstdlib.c + + + cstring.c + 1 + ..\..\..\components\libc\compilers\common\cstring.c + + + ctime.c + 1 + ..\..\..\components\libc\compilers\common\ctime.c + + + cunistd.c + 1 + ..\..\..\components\libc\compilers\common\cunistd.c + + + cwchar.c + 1 + ..\..\..\components\libc\compilers\common\cwchar.c + + + + + CPU + + + atomic_arm.c + 1 + ..\..\..\libcpu\arm\common\atomic_arm.c + + + div0.c + 1 + ..\..\..\libcpu\arm\common\div0.c + + + showmem.c + 1 + ..\..\..\libcpu\arm\common\showmem.c + + + context_gcc.S + 2 + ..\..\..\libcpu\arm\cortex-m85\context_gcc.S + + + cpuport.c + 1 + ..\..\..\libcpu\arm\cortex-m85\cpuport.c + + + + + DeviceDrivers + + + device.c + 1 + ..\..\..\components\drivers\core\device.c + + + completion.c + 1 + ..\..\..\components\drivers\ipc\completion.c + + + dataqueue.c + 1 + ..\..\..\components\drivers\ipc\dataqueue.c + + + pipe.c + 1 + ..\..\..\components\drivers\ipc\pipe.c + + + ringblk_buf.c + 1 + ..\..\..\components\drivers\ipc\ringblk_buf.c + + + ringbuffer.c + 1 + ..\..\..\components\drivers\ipc\ringbuffer.c + + + waitqueue.c + 1 + ..\..\..\components\drivers\ipc\waitqueue.c + + + workqueue.c + 1 + ..\..\..\components\drivers\ipc\workqueue.c + + + pin.c + 1 + ..\..\..\components\drivers\misc\pin.c + + + serial_v2.c + 1 + ..\..\..\components\drivers\serial\serial_v2.c + + + + + Drivers + + + ra8_it.c + 1 + board\ra8_it.c + + + drv_common.c + 1 + ..\libraries\HAL_Drivers\drv_common.c + + + drv_gpio.c + 1 + ..\libraries\HAL_Drivers\drv_gpio.c + + + drv_usart_v2.c + 1 + ..\libraries\HAL_Drivers\drv_usart_v2.c + + + + + Finsh + + + shell.c + 1 + ..\..\..\components\finsh\shell.c + + + msh.c + 1 + ..\..\..\components\finsh\msh.c + + + msh_parse.c + 1 + ..\..\..\components\finsh\msh_parse.c + + + cmd.c + 1 + ..\..\..\components\finsh\cmd.c + + + + + Kernel + + + clock.c + 1 + ..\..\..\src\clock.c + + + components.c + 1 + ..\..\..\src\components.c + + + idle.c + 1 + ..\..\..\src\idle.c + + + ipc.c + 1 + ..\..\..\src\ipc.c + + + irq.c + 1 + ..\..\..\src\irq.c + + + kservice.c + 1 + ..\..\..\src\kservice.c + + + memheap.c + 1 + ..\..\..\src\memheap.c + + + mempool.c + 1 + ..\..\..\src\mempool.c + + + object.c + 1 + ..\..\..\src\object.c + + + scheduler_up.c + 1 + ..\..\..\src\scheduler_up.c + + + thread.c + 1 + ..\..\..\src\thread.c + + + timer.c + 1 + ..\..\..\src\timer.c + + + + + :Renesas RA Smart Configurator:Common Sources + + + hal_entry.c + 1 + .\src\hal_entry.c + + + + + ::Flex Software + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/bsp/renesas/ra8d1-ek/ra/SConscript b/bsp/renesas/ra8d1-ek/ra/SConscript new file mode 100644 index 0000000000..52e96ac900 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/SConscript @@ -0,0 +1,26 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src += Glob(cwd + '/fsp/src/bsp/mcu/all/*.c') + src += [cwd + '/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c'] + src += [cwd + '/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c'] + src += Glob(cwd + '/fsp/src/r_*/*.c') + CPPPATH = [ cwd + '/arm/CMSIS_5/CMSIS/Core/Include', + cwd + '/fsp/inc', + cwd + '/fsp/inc/api', + cwd + '/fsp/inc/instances',] + +group = DefineGroup('ra', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h new file mode 100644 index 0000000000..abebc95f94 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cachel1_armv7.h @@ -0,0 +1,411 @@ +/****************************************************************************** + * @file cachel1_armv7.h + * @brief CMSIS Level 1 Cache API for Armv7-M and later + * @version V1.0.1 + * @date 19. April 2021 + ******************************************************************************/ +/* + * Copyright (c) 2020-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_CACHEL1_ARMV7_H +#define ARM_CACHEL1_ARMV7_H + +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + +#ifndef __SCB_DCACHE_LINE_SIZE +#define __SCB_DCACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#endif + +#ifndef __SCB_ICACHE_LINE_SIZE +#define __SCB_ICACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#endif + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ + + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief I-Cache Invalidate by address + \details Invalidates I-Cache for the given address. + I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + I-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] isize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (volatile void *addr, int32_t isize) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if ( isize > 0 ) { + int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->ICIMVAU = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_ICACHE_LINE_SIZE; + op_size -= __SCB_ICACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address. + D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (volatile void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (volatile void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned and invalidated. + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (volatile void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + +/*@} end of CMSIS_Core_CacheFunctions */ + +#endif /* ARM_CACHEL1_ARMV7_H */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h new file mode 100644 index 0000000000..a955d47139 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armcc.h @@ -0,0 +1,888 @@ +/**************************************************************************//** + * @file cmsis_armcc.h + * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file + * @version V5.3.2 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_ARMCC_H +#define __CMSIS_ARMCC_H + + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) + #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +#endif + +/* CMSIS compiler control architecture macros */ +#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ + (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) + #define __ARM_ARCH_6M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) + #define __ARM_ARCH_7M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) + #define __ARM_ARCH_7EM__ 1 +#endif + + /* __ARM_ARCH_8M_BASE__ not applicable */ + /* __ARM_ARCH_8M_MAIN__ not applicable */ + /* __ARM_ARCH_8_1M_MAIN__ not applicable */ + +/* CMSIS compiler control DSP macros */ +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __ARM_FEATURE_DSP 1 +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE static __forceinline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __declspec(noreturn) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed)) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT __packed struct +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION __packed union +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __memory_changed() +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) +#endif + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __nop + + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __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. + */ +#define __WFE __wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __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. + */ +#define __ISB() __isb(0xF) + +/** + \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. + */ +#define __DSB() __dsb(0xF) + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} +#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] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +#define __ROR __ror + + +/** + \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) __breakpoint(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 + */ +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __RBIT __rbit +#else +__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ + return result; +} +#endif + + +/** + \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 __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \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) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \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) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \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) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \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 + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \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 + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \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 + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \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 __ssat + + +/** + \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 __usat + + +/** + \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 + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \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) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \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) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \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) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \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 + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \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 + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \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 + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/** + \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 + */ +__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \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 + */ +__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### 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 special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); */ + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; + __ISB(); +} + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** + \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 + */ +__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** + \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 + */ +__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xFFU); +} + + +/** + \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 + */ +__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + register uint32_t __regBasePriMax __ASM("basepri_max"); + __regBasePriMax = (basePri & 0xFFU); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1U); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0U); +#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 + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h new file mode 100644 index 0000000000..6911417747 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang.h @@ -0,0 +1,1503 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V5.4.3 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL Image$$STACKSEAL$$ZI$$Base +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + + +/* ########################## 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_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_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. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_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. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_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. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \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. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \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] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + 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 + */ +#define __RBIT __builtin_arm_rbit + +/** + \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 + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \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) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \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 + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \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 __builtin_arm_ssat + + +/** + \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 __builtin_arm_usat + + +/** + \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 + */ +__STATIC_FORCEINLINE 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) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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 + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "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 + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "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 + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + +/** + \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 + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \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 + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive 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 + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive 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 + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive 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 + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### 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 special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} +#endif + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} +#endif + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + __ISB(); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + __ISB(); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) ) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) || \ + (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#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 + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +#define __SADD8 __builtin_arm_sadd8 +#define __QADD8 __builtin_arm_qadd8 +#define __SHADD8 __builtin_arm_shadd8 +#define __UADD8 __builtin_arm_uadd8 +#define __UQADD8 __builtin_arm_uqadd8 +#define __UHADD8 __builtin_arm_uhadd8 +#define __SSUB8 __builtin_arm_ssub8 +#define __QSUB8 __builtin_arm_qsub8 +#define __SHSUB8 __builtin_arm_shsub8 +#define __USUB8 __builtin_arm_usub8 +#define __UQSUB8 __builtin_arm_uqsub8 +#define __UHSUB8 __builtin_arm_uhsub8 +#define __SADD16 __builtin_arm_sadd16 +#define __QADD16 __builtin_arm_qadd16 +#define __SHADD16 __builtin_arm_shadd16 +#define __UADD16 __builtin_arm_uadd16 +#define __UQADD16 __builtin_arm_uqadd16 +#define __UHADD16 __builtin_arm_uhadd16 +#define __SSUB16 __builtin_arm_ssub16 +#define __QSUB16 __builtin_arm_qsub16 +#define __SHSUB16 __builtin_arm_shsub16 +#define __USUB16 __builtin_arm_usub16 +#define __UQSUB16 __builtin_arm_uqsub16 +#define __UHSUB16 __builtin_arm_uhsub16 +#define __SASX __builtin_arm_sasx +#define __QASX __builtin_arm_qasx +#define __SHASX __builtin_arm_shasx +#define __UASX __builtin_arm_uasx +#define __UQASX __builtin_arm_uqasx +#define __UHASX __builtin_arm_uhasx +#define __SSAX __builtin_arm_ssax +#define __QSAX __builtin_arm_qsax +#define __SHSAX __builtin_arm_shsax +#define __USAX __builtin_arm_usax +#define __UQSAX __builtin_arm_uqsax +#define __UHSAX __builtin_arm_uhsax +#define __USAD8 __builtin_arm_usad8 +#define __USADA8 __builtin_arm_usada8 +#define __SSAT16 __builtin_arm_ssat16 +#define __USAT16 __builtin_arm_usat16 +#define __UXTB16 __builtin_arm_uxtb16 +#define __UXTAB16 __builtin_arm_uxtab16 +#define __SXTB16 __builtin_arm_sxtb16 +#define __SXTAB16 __builtin_arm_sxtab16 +#define __SMUAD __builtin_arm_smuad +#define __SMUADX __builtin_arm_smuadx +#define __SMLAD __builtin_arm_smlad +#define __SMLADX __builtin_arm_smladx +#define __SMLALD __builtin_arm_smlald +#define __SMLALDX __builtin_arm_smlaldx +#define __SMUSD __builtin_arm_smusd +#define __SMUSDX __builtin_arm_smusdx +#define __SMLSD __builtin_arm_smlsd +#define __SMLSDX __builtin_arm_smlsdx +#define __SMLSLD __builtin_arm_smlsld +#define __SMLSLDX __builtin_arm_smlsldx +#define __SEL __builtin_arm_sel +#define __QADD __builtin_arm_qadd +#define __QSUB __builtin_arm_qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +__STATIC_FORCEINLINE int32_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 /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h new file mode 100644 index 0000000000..1e255d5907 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_armclang_ltm.h @@ -0,0 +1,1928 @@ +/**************************************************************************//** + * @file cmsis_armclang_ltm.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V1.5.3 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2018-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section("RESET"))) +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL Image$$STACKSEAL$$ZI$$Base +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + + +/* ########################## 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. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_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. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_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. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \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. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \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] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + 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 + */ +#define __RBIT __builtin_arm_rbit + +/** + \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 + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \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) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \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 + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \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 __builtin_arm_ssat + + +/** + \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 __builtin_arm_usat + + +/** + \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 + */ +__STATIC_FORCEINLINE 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) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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 + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "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 + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "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 + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \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 + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \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 + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive 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 + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive 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 + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive 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 + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### 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 special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} +#endif + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +#ifndef __ARM_COMPAT_H +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); +} +#endif + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + __ISB(); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + __ISB(); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#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 + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +__STATIC_FORCEINLINE int32_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 /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h new file mode 100644 index 0000000000..adbf296f15 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_compiler.h @@ -0,0 +1,283 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.1.0 + * @date 09. October 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6.6 LTM (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100) + #include "cmsis_armclang_ltm.h" + + /* + * Arm Compiler above 6.10.1 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #define __RESTRICT __restrict + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * 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. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + #ifndef __COMPILER_BARRIER + #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored. + #define __COMPILER_BARRIER() (void)0 + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h new file mode 100644 index 0000000000..67bda4ef3c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_gcc.h @@ -0,0 +1,2211 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.4.1 + * @date 27. May 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START + +/** + \brief Initializes data and bss sections + \details This default implementations initialized all data and additional bss + sections relying on .copy.table and .zero.table specified properly + in the used linker script. + + */ +__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) +{ + extern void _start(void) __NO_RETURN; + + typedef struct { + uint32_t const* src; + uint32_t* dest; + uint32_t wlen; + } __copy_table_t; + + typedef struct { + uint32_t* dest; + uint32_t wlen; + } __zero_table_t; + + extern const __copy_table_t __copy_table_start__; + extern const __copy_table_t __copy_table_end__; + extern const __zero_table_t __zero_table_start__; + extern const __zero_table_t __zero_table_end__; + + for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = pTable->src[i]; + } + } + + for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) { + for(uint32_t i=0u; iwlen; ++i) { + pTable->dest[i] = 0u; + } + } + + _start(); +} + +#define __PROGRAM_START __cmsis_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP __StackTop +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT __StackLimit +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors"))) +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL __StackSeal +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + + +/* ########################## 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_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_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. + */ +#define __NOP() __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. + */ +#define __WFI() __ASM volatile ("wfi":::"memory") + + +/** + \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. + */ +#define __WFE() __ASM volatile ("wfe":::"memory") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __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. + */ +__STATIC_FORCEINLINE 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. + */ +__STATIC_FORCEINLINE 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. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM ("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 within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM ("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] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + 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 + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; 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 + */ +__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value) +{ + /* Even though __builtin_clz produces a CLZ instruction on ARM, formally + __builtin_clz(0) is undefined behaviour, so handle this case specially. + This guarantees ARM-compatible results if happening to compile on a non-ARM + target, and ensures the compiler doesn't decide to activate any + optimisations using the logic "value was passed to __builtin_clz, so it + is non-zero". + ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a + single CLZ instruction. + */ + if (value == 0U) + { + return 32U; + } + return __builtin_clz(value); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \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) + */ +__STATIC_FORCEINLINE 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) + */ +__STATIC_FORCEINLINE 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) + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1, ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1, ARG2) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __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 + */ +__STATIC_FORCEINLINE 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) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#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" (ptr) : "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) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#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" (ptr) : "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) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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 + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "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 + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "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 + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \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 + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \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 + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive 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 + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive 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 + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive 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 + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ########################### 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 special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting special-purpose register PRIMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + __ISB(); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + __ISB(); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting special-purpose register FAULTMASK. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE 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 + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \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 + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#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 + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1, ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +#define __USAT16(ARG1, ARG2) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16_RORn(uint32_t op1, uint32_t rotate) +{ + uint32_t result; + if (__builtin_constant_p(rotate) && ((rotate == 8U) || (rotate == 16U) || (rotate == 24U))) { + __ASM volatile ("sxtb16 %0, %1, ROR %2" : "=r" (result) : "r" (op1), "i" (rotate) ); + } else { + result = __SXTB16(__ROR(op1, rotate)) ; + } + return result; +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16_RORn(uint32_t op1, uint32_t op2, uint32_t rotate) +{ + uint32_t result; + if (__builtin_constant_p(rotate) && ((rotate == 8U) || (rotate == 16U) || (rotate == 24U))) { + __ASM volatile ("sxtab16 %0, %1, %2, ROR %3" : "=r" (result) : "r" (op1) , "r" (op2) , "i" (rotate)); + } else { + result = __SXTAB16(op1, __ROR(op2, rotate)); + } + return result; +} + + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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); +} + +__STATIC_FORCEINLINE 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) \ +__extension__ \ +({ \ + 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) \ +__extension__ \ +({ \ + 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; \ + }) + + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h new file mode 100644 index 0000000000..65b824b009 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_iccarm.h @@ -0,0 +1,1002 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.3.0 + * @date 14. April 2021 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2021 IAR Systems +// Copyright (c) 2017-2021 Arm Limited. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #if __ICCARM_V8 + #define __RESTRICT __restrict + #else + /* Needs IAR language extensions */ + #define __RESTRICT restrict + #endif +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#undef __WEAK /* undo the definition from DLib_Defaults.h */ +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + +#ifndef __PROGRAM_START +#define __PROGRAM_START __iar_program_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP CSTACK$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT CSTACK$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __vector_table +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE @".intvec" +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#ifndef __STACK_SEAL +#define __STACK_SEAL STACKSEAL$$Base +#endif + +#ifndef __TZ_STACK_SEAL_SIZE +#define __TZ_STACK_SEAL_SIZE 8U +#endif + +#ifndef __TZ_STACK_SEAL_VALUE +#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL +#endif + +__STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { + *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; +} +#endif + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __arm_wsr("CONTROL", control); + __iar_builtin_ISB(); +} + + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __arm_wsr("CONTROL_NS", control); + __iar_builtin_ISB(); +} + + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM volatile("RRX %0, %1" : "=r"(result) : "r" (value)); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + __iar_builtin_ISB(); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM volatile ("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM volatile ("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM volatile ("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM volatile ("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM volatile ("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM volatile ("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2)) + +#define __SXTAB16_RORn(ARG1, ARG2, ARG3) __SXTAB16(ARG1, __ROR(ARG2, ARG3)) + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h new file mode 100644 index 0000000000..8b4765f186 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.5 + * @date 02. February 2022 + ******************************************************************************/ +/* + * Copyright (c) 2009-2022 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 6U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h new file mode 100644 index 0000000000..94128a1a70 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv81mml.h @@ -0,0 +1,4228 @@ +/**************************************************************************//** + * @file core_armv81mml.h + * @brief CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File + * @version V1.4.2 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2018-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_ARMV81MML_H_GENERIC +#define __CORE_ARMV81MML_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_ARMV81MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS ARMV81MML definitions */ +#define __ARMv81MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv81MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv81MML_CMSIS_VERSION ((__ARMv81MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv81MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +#if defined ( __CC_ARM ) + #error Legacy Arm Compiler does not support Armv8.1-M target architecture. +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV81MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV81MML_H_DEPENDANT +#define __CORE_ARMV81MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv81MML_REV + #define __ARMv81MML_REV 0x0000U + #warning "__ARMv81MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #if __FPU_PRESENT != 0U + #ifndef __FPU_DP + #define __FPU_DP 0U + #warning "__FPU_DP not defined in device header file; using default!" + #endif + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __PMU_PRESENT + #define __PMU_PRESENT 0U + #warning "__PMU_PRESENT not defined in device header file; using default!" + #endif + + #if __PMU_PRESENT != 0U + #ifndef __PMU_NUM_EVENTCNT + #define __PMU_NUM_EVENTCNT 2U + #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!" + #elif (__PMU_NUM_EVENTCNT > 31 || __PMU_NUM_EVENTCNT < 2) + #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */ + #endif + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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 ARMv81MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __IOM uint32_t RFSR; /*!< Offset: 0x204 (R/W) RAS Fault Status Register */ + uint32_t RESERVED4[14U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_IESB_Pos 5U /*!< SCB AIRCR: Implicit ESB Enable Position */ +#define SCB_AIRCR_IESB_Msk (1UL << SCB_AIRCR_IESB_Pos) /*!< SCB AIRCR: Implicit ESB Enable Mask */ + +#define SCB_AIRCR_DIT_Pos 4U /*!< SCB AIRCR: Data Independent Timing Position */ +#define SCB_AIRCR_DIT_Msk (1UL << SCB_AIRCR_DIT_Pos) /*!< SCB AIRCR: Data Independent Timing Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_TRD_Pos 20U /*!< SCB CCR: TRD Position */ +#define SCB_CCR_TRD_Msk (1UL << SCB_CCR_TRD_Pos) /*!< SCB CCR: TRD Mask */ + +#define SCB_CCR_LOB_Pos 19U /*!< SCB CCR: LOB Position */ +#define SCB_CCR_LOB_Msk (1UL << SCB_CCR_LOB_Pos) /*!< SCB CCR: LOB Mask */ + +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_PMU_Pos 5U /*!< SCB DFSR: PMU Position */ +#define SCB_DFSR_PMU_Msk (1UL << SCB_DFSR_PMU_Pos) /*!< SCB DFSR: PMU Mask */ + +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CP7_Pos 7U /*!< SCB NSACR: CP7 Position */ +#define SCB_NSACR_CP7_Msk (1UL << SCB_NSACR_CP7_Pos) /*!< SCB NSACR: CP7 Mask */ + +#define SCB_NSACR_CP6_Pos 6U /*!< SCB NSACR: CP6 Position */ +#define SCB_NSACR_CP6_Msk (1UL << SCB_NSACR_CP6_Pos) /*!< SCB NSACR: CP6 Mask */ + +#define SCB_NSACR_CP5_Pos 5U /*!< SCB NSACR: CP5 Position */ +#define SCB_NSACR_CP5_Msk (1UL << SCB_NSACR_CP5_Pos) /*!< SCB NSACR: CP5 Mask */ + +#define SCB_NSACR_CP4_Pos 4U /*!< SCB NSACR: CP4 Position */ +#define SCB_NSACR_CP4_Msk (1UL << SCB_NSACR_CP4_Pos) /*!< SCB NSACR: CP4 Mask */ + +#define SCB_NSACR_CP3_Pos 3U /*!< SCB NSACR: CP3 Position */ +#define SCB_NSACR_CP3_Msk (1UL << SCB_NSACR_CP3_Pos) /*!< SCB NSACR: CP3 Mask */ + +#define SCB_NSACR_CP2_Pos 2U /*!< SCB NSACR: CP2 Position */ +#define SCB_NSACR_CP2_Msk (1UL << SCB_NSACR_CP2_Pos) /*!< SCB NSACR: CP2 Mask */ + +#define SCB_NSACR_CP1_Pos 1U /*!< SCB NSACR: CP1 Position */ +#define SCB_NSACR_CP1_Msk (1UL << SCB_NSACR_CP1_Pos) /*!< SCB NSACR: CP1 Mask */ + +#define SCB_NSACR_CP0_Pos 0U /*!< SCB NSACR: CP0 Position */ +#define SCB_NSACR_CP0_Msk (1UL /*<< SCB_NSACR_CP0_Pos*/) /*!< SCB NSACR: CP0 Mask */ + +/* SCB Debug Feature Register 0 Definitions */ +#define SCB_ID_DFR_UDE_Pos 28U /*!< SCB ID_DFR: UDE Position */ +#define SCB_ID_DFR_UDE_Msk (0xFUL << SCB_ID_DFR_UDE_Pos) /*!< SCB ID_DFR: UDE Mask */ + +#define SCB_ID_DFR_MProfDbg_Pos 20U /*!< SCB ID_DFR: MProfDbg Position */ +#define SCB_ID_DFR_MProfDbg_Msk (0xFUL << SCB_ID_DFR_MProfDbg_Pos) /*!< SCB ID_DFR: MProfDbg Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB RAS Fault Status Register Definitions */ +#define SCB_RFSR_V_Pos 31U /*!< SCB RFSR: V Position */ +#define SCB_RFSR_V_Msk (1UL << SCB_RFSR_V_Pos) /*!< SCB RFSR: V Mask */ + +#define SCB_RFSR_IS_Pos 16U /*!< SCB RFSR: IS Position */ +#define SCB_RFSR_IS_Msk (0x7FFFUL << SCB_RFSR_IS_Pos) /*!< SCB RFSR: IS Mask */ + +#define SCB_RFSR_UET_Pos 0U /*!< SCB RFSR: UET Position */ +#define SCB_RFSR_UET_Msk (3UL /*<< SCB_RFSR_UET_Pos*/) /*!< SCB RFSR: UET Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[3U]; + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) ITM Device Type Register */ + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFmt_Pos 0U /*!< TPI FFCR: EnFmt Position */ +#define TPI_FFCR_EnFmt_Msk (0x3UL << /*TPI_FFCR_EnFmt_Pos*/) /*!< TPI FFCR: EnFmt Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_PMU Performance Monitoring Unit (PMU) + \brief Type definitions for the Performance Monitoring Unit (PMU) + @{ + */ + +/** + \brief Structure type to access the Performance Monitoring Unit (PMU). + */ +typedef struct +{ + __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x0 (R/W) PMU Event Counter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCNTR; /*!< Offset: 0x7C (R/W) PMU Cycle Counter Register */ + uint32_t RESERVED1[224]; + __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x400 (R/W) PMU Event Type and Filter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCFILTR; /*!< Offset: 0x47C (R/W) PMU Cycle Counter Filter Register */ + uint32_t RESERVED3[480]; + __IOM uint32_t CNTENSET; /*!< Offset: 0xC00 (R/W) PMU Count Enable Set Register */ + uint32_t RESERVED4[7]; + __IOM uint32_t CNTENCLR; /*!< Offset: 0xC20 (R/W) PMU Count Enable Clear Register */ + uint32_t RESERVED5[7]; + __IOM uint32_t INTENSET; /*!< Offset: 0xC40 (R/W) PMU Interrupt Enable Set Register */ + uint32_t RESERVED6[7]; + __IOM uint32_t INTENCLR; /*!< Offset: 0xC60 (R/W) PMU Interrupt Enable Clear Register */ + uint32_t RESERVED7[7]; + __IOM uint32_t OVSCLR; /*!< Offset: 0xC80 (R/W) PMU Overflow Flag Status Clear Register */ + uint32_t RESERVED8[7]; + __IOM uint32_t SWINC; /*!< Offset: 0xCA0 (R/W) PMU Software Increment Register */ + uint32_t RESERVED9[7]; + __IOM uint32_t OVSSET; /*!< Offset: 0xCC0 (R/W) PMU Overflow Flag Status Set Register */ + uint32_t RESERVED10[79]; + __IOM uint32_t TYPE; /*!< Offset: 0xE00 (R/W) PMU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0xE04 (R/W) PMU Control Register */ + uint32_t RESERVED11[108]; + __IOM uint32_t AUTHSTATUS; /*!< Offset: 0xFB8 (R/W) PMU Authentication Status Register */ + __IOM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/W) PMU Device Architecture Register */ + uint32_t RESERVED12[3]; + __IOM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/W) PMU Device Type Register */ + __IOM uint32_t PIDR4; /*!< Offset: 0xFD0 (R/W) PMU Peripheral Identification Register 4 */ + uint32_t RESERVED13[3]; + __IOM uint32_t PIDR0; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 0 */ + __IOM uint32_t PIDR1; /*!< Offset: 0xFE4 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE8 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFEC (R/W) PMU Peripheral Identification Register 3 */ + __IOM uint32_t CIDR0; /*!< Offset: 0xFF0 (R/W) PMU Component Identification Register 0 */ + __IOM uint32_t CIDR1; /*!< Offset: 0xFF4 (R/W) PMU Component Identification Register 1 */ + __IOM uint32_t CIDR2; /*!< Offset: 0xFF8 (R/W) PMU Component Identification Register 2 */ + __IOM uint32_t CIDR3; /*!< Offset: 0xFFC (R/W) PMU Component Identification Register 3 */ +} PMU_Type; + +/** \brief PMU Event Counter Registers (0-30) Definitions */ + +#define PMU_EVCNTR_CNT_Pos 0U /*!< PMU EVCNTR: Counter Position */ +#define PMU_EVCNTR_CNT_Msk (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/) /*!< PMU EVCNTR: Counter Mask */ + +/** \brief PMU Event Type and Filter Registers (0-30) Definitions */ + +#define PMU_EVTYPER_EVENTTOCNT_Pos 0U /*!< PMU EVTYPER: Event to Count Position */ +#define PMU_EVTYPER_EVENTTOCNT_Msk (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/) /*!< PMU EVTYPER: Event to Count Mask */ + +/** \brief PMU Count Enable Set Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */ +#define PMU_CNTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/) /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */ + +#define PMU_CNTENSET_CNT1_ENABLE_Pos 1U /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */ +#define PMU_CNTENSET_CNT1_ENABLE_Msk (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */ + +#define PMU_CNTENSET_CNT2_ENABLE_Pos 2U /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */ +#define PMU_CNTENSET_CNT2_ENABLE_Msk (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */ + +#define PMU_CNTENSET_CNT3_ENABLE_Pos 3U /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */ +#define PMU_CNTENSET_CNT3_ENABLE_Msk (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */ + +#define PMU_CNTENSET_CNT4_ENABLE_Pos 4U /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */ +#define PMU_CNTENSET_CNT4_ENABLE_Msk (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */ + +#define PMU_CNTENSET_CNT5_ENABLE_Pos 5U /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */ +#define PMU_CNTENSET_CNT5_ENABLE_Msk (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */ + +#define PMU_CNTENSET_CNT6_ENABLE_Pos 6U /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */ +#define PMU_CNTENSET_CNT6_ENABLE_Msk (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */ + +#define PMU_CNTENSET_CNT7_ENABLE_Pos 7U /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */ +#define PMU_CNTENSET_CNT7_ENABLE_Msk (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */ + +#define PMU_CNTENSET_CNT8_ENABLE_Pos 8U /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */ +#define PMU_CNTENSET_CNT8_ENABLE_Msk (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */ + +#define PMU_CNTENSET_CNT9_ENABLE_Pos 9U /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */ +#define PMU_CNTENSET_CNT9_ENABLE_Msk (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */ + +#define PMU_CNTENSET_CNT10_ENABLE_Pos 10U /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */ +#define PMU_CNTENSET_CNT10_ENABLE_Msk (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */ + +#define PMU_CNTENSET_CNT11_ENABLE_Pos 11U /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */ +#define PMU_CNTENSET_CNT11_ENABLE_Msk (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */ + +#define PMU_CNTENSET_CNT12_ENABLE_Pos 12U /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */ +#define PMU_CNTENSET_CNT12_ENABLE_Msk (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */ + +#define PMU_CNTENSET_CNT13_ENABLE_Pos 13U /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */ +#define PMU_CNTENSET_CNT13_ENABLE_Msk (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */ + +#define PMU_CNTENSET_CNT14_ENABLE_Pos 14U /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */ +#define PMU_CNTENSET_CNT14_ENABLE_Msk (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */ + +#define PMU_CNTENSET_CNT15_ENABLE_Pos 15U /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */ +#define PMU_CNTENSET_CNT15_ENABLE_Msk (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */ + +#define PMU_CNTENSET_CNT16_ENABLE_Pos 16U /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */ +#define PMU_CNTENSET_CNT16_ENABLE_Msk (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */ + +#define PMU_CNTENSET_CNT17_ENABLE_Pos 17U /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */ +#define PMU_CNTENSET_CNT17_ENABLE_Msk (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */ + +#define PMU_CNTENSET_CNT18_ENABLE_Pos 18U /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */ +#define PMU_CNTENSET_CNT18_ENABLE_Msk (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */ + +#define PMU_CNTENSET_CNT19_ENABLE_Pos 19U /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */ +#define PMU_CNTENSET_CNT19_ENABLE_Msk (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */ + +#define PMU_CNTENSET_CNT20_ENABLE_Pos 20U /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */ +#define PMU_CNTENSET_CNT20_ENABLE_Msk (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */ + +#define PMU_CNTENSET_CNT21_ENABLE_Pos 21U /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */ +#define PMU_CNTENSET_CNT21_ENABLE_Msk (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */ + +#define PMU_CNTENSET_CNT22_ENABLE_Pos 22U /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */ +#define PMU_CNTENSET_CNT22_ENABLE_Msk (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */ + +#define PMU_CNTENSET_CNT23_ENABLE_Pos 23U /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */ +#define PMU_CNTENSET_CNT23_ENABLE_Msk (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */ + +#define PMU_CNTENSET_CNT24_ENABLE_Pos 24U /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */ +#define PMU_CNTENSET_CNT24_ENABLE_Msk (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */ + +#define PMU_CNTENSET_CNT25_ENABLE_Pos 25U /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */ +#define PMU_CNTENSET_CNT25_ENABLE_Msk (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */ + +#define PMU_CNTENSET_CNT26_ENABLE_Pos 26U /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */ +#define PMU_CNTENSET_CNT26_ENABLE_Msk (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */ + +#define PMU_CNTENSET_CNT27_ENABLE_Pos 27U /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */ +#define PMU_CNTENSET_CNT27_ENABLE_Msk (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */ + +#define PMU_CNTENSET_CNT28_ENABLE_Pos 28U /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */ +#define PMU_CNTENSET_CNT28_ENABLE_Msk (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */ + +#define PMU_CNTENSET_CNT29_ENABLE_Pos 29U /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */ +#define PMU_CNTENSET_CNT29_ENABLE_Msk (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */ + +#define PMU_CNTENSET_CNT30_ENABLE_Pos 30U /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */ +#define PMU_CNTENSET_CNT30_ENABLE_Msk (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */ + +#define PMU_CNTENSET_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENSET: Cycle Counter Enable Set Position */ +#define PMU_CNTENSET_CCNTR_ENABLE_Msk (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos) /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */ + +/** \brief PMU Count Enable Clear Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */ +#define PMU_CNTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */ +#define PMU_CNTENCLR_CNT1_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */ + +#define PMU_CNTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */ +#define PMU_CNTENCLR_CNT2_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */ +#define PMU_CNTENCLR_CNT3_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */ +#define PMU_CNTENCLR_CNT4_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */ +#define PMU_CNTENCLR_CNT5_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */ +#define PMU_CNTENCLR_CNT6_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */ +#define PMU_CNTENCLR_CNT7_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */ +#define PMU_CNTENCLR_CNT8_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */ +#define PMU_CNTENCLR_CNT9_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */ +#define PMU_CNTENCLR_CNT10_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */ +#define PMU_CNTENCLR_CNT11_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */ +#define PMU_CNTENCLR_CNT12_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */ +#define PMU_CNTENCLR_CNT13_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */ +#define PMU_CNTENCLR_CNT14_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */ +#define PMU_CNTENCLR_CNT15_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */ +#define PMU_CNTENCLR_CNT16_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */ +#define PMU_CNTENCLR_CNT17_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */ +#define PMU_CNTENCLR_CNT18_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */ +#define PMU_CNTENCLR_CNT19_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */ +#define PMU_CNTENCLR_CNT20_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */ +#define PMU_CNTENCLR_CNT21_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */ +#define PMU_CNTENCLR_CNT22_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */ +#define PMU_CNTENCLR_CNT23_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */ +#define PMU_CNTENCLR_CNT24_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */ +#define PMU_CNTENCLR_CNT25_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */ +#define PMU_CNTENCLR_CNT26_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */ +#define PMU_CNTENCLR_CNT27_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */ +#define PMU_CNTENCLR_CNT28_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */ +#define PMU_CNTENCLR_CNT29_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */ +#define PMU_CNTENCLR_CNT30_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */ + +#define PMU_CNTENCLR_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */ +#define PMU_CNTENCLR_CCNTR_ENABLE_Msk (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos) /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */ + +/** \brief PMU Interrupt Enable Set Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/) /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT1_ENABLE_Pos 1U /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT1_ENABLE_Msk (1UL << PMU_INTENSET_CNT1_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT2_ENABLE_Pos 2U /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT2_ENABLE_Msk (1UL << PMU_INTENSET_CNT2_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT3_ENABLE_Pos 3U /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT3_ENABLE_Msk (1UL << PMU_INTENSET_CNT3_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT4_ENABLE_Pos 4U /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT4_ENABLE_Msk (1UL << PMU_INTENSET_CNT4_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT5_ENABLE_Pos 5U /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT5_ENABLE_Msk (1UL << PMU_INTENSET_CNT5_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT6_ENABLE_Pos 6U /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT6_ENABLE_Msk (1UL << PMU_INTENSET_CNT6_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT7_ENABLE_Pos 7U /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT7_ENABLE_Msk (1UL << PMU_INTENSET_CNT7_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT8_ENABLE_Pos 8U /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT8_ENABLE_Msk (1UL << PMU_INTENSET_CNT8_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT9_ENABLE_Pos 9U /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT9_ENABLE_Msk (1UL << PMU_INTENSET_CNT9_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT10_ENABLE_Pos 10U /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT10_ENABLE_Msk (1UL << PMU_INTENSET_CNT10_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT11_ENABLE_Pos 11U /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT11_ENABLE_Msk (1UL << PMU_INTENSET_CNT11_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT12_ENABLE_Pos 12U /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT12_ENABLE_Msk (1UL << PMU_INTENSET_CNT12_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT13_ENABLE_Pos 13U /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT13_ENABLE_Msk (1UL << PMU_INTENSET_CNT13_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT14_ENABLE_Pos 14U /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT14_ENABLE_Msk (1UL << PMU_INTENSET_CNT14_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT15_ENABLE_Pos 15U /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT15_ENABLE_Msk (1UL << PMU_INTENSET_CNT15_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT16_ENABLE_Pos 16U /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT16_ENABLE_Msk (1UL << PMU_INTENSET_CNT16_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT17_ENABLE_Pos 17U /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT17_ENABLE_Msk (1UL << PMU_INTENSET_CNT17_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT18_ENABLE_Pos 18U /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT18_ENABLE_Msk (1UL << PMU_INTENSET_CNT18_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT19_ENABLE_Pos 19U /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT19_ENABLE_Msk (1UL << PMU_INTENSET_CNT19_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT20_ENABLE_Pos 20U /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT20_ENABLE_Msk (1UL << PMU_INTENSET_CNT20_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT21_ENABLE_Pos 21U /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT21_ENABLE_Msk (1UL << PMU_INTENSET_CNT21_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT22_ENABLE_Pos 22U /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT22_ENABLE_Msk (1UL << PMU_INTENSET_CNT22_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT23_ENABLE_Pos 23U /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT23_ENABLE_Msk (1UL << PMU_INTENSET_CNT23_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT24_ENABLE_Pos 24U /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT24_ENABLE_Msk (1UL << PMU_INTENSET_CNT24_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT25_ENABLE_Pos 25U /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT25_ENABLE_Msk (1UL << PMU_INTENSET_CNT25_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT26_ENABLE_Pos 26U /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT26_ENABLE_Msk (1UL << PMU_INTENSET_CNT26_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT27_ENABLE_Pos 27U /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT27_ENABLE_Msk (1UL << PMU_INTENSET_CNT27_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT28_ENABLE_Pos 28U /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT28_ENABLE_Msk (1UL << PMU_INTENSET_CNT28_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT29_ENABLE_Pos 29U /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT29_ENABLE_Msk (1UL << PMU_INTENSET_CNT29_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT30_ENABLE_Pos 30U /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT30_ENABLE_Msk (1UL << PMU_INTENSET_CNT30_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */ +#define PMU_INTENSET_CCYCNT_ENABLE_Msk (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos) /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */ + +/** \brief PMU Interrupt Enable Clear Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT1_ENABLE_Msk (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */ + +#define PMU_INTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT2_ENABLE_Msk (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT3_ENABLE_Msk (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT4_ENABLE_Msk (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT5_ENABLE_Msk (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT6_ENABLE_Msk (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT7_ENABLE_Msk (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT8_ENABLE_Msk (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT9_ENABLE_Msk (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT10_ENABLE_Msk (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT11_ENABLE_Msk (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT12_ENABLE_Msk (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT13_ENABLE_Msk (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT14_ENABLE_Msk (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT15_ENABLE_Msk (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT16_ENABLE_Msk (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT17_ENABLE_Msk (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT18_ENABLE_Msk (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT19_ENABLE_Msk (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT20_ENABLE_Msk (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT21_ENABLE_Msk (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT22_ENABLE_Msk (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT23_ENABLE_Msk (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT24_ENABLE_Msk (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT25_ENABLE_Msk (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT26_ENABLE_Msk (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT27_ENABLE_Msk (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT28_ENABLE_Msk (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT29_ENABLE_Msk (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT30_ENABLE_Msk (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CYCCNT_ENABLE_Msk (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos) /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */ + +/** \brief PMU Overflow Flag Status Set Register Definitions */ + +#define PMU_OVSSET_CNT0_STATUS_Pos 0U /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */ +#define PMU_OVSSET_CNT0_STATUS_Msk (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/) /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */ + +#define PMU_OVSSET_CNT1_STATUS_Pos 1U /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */ +#define PMU_OVSSET_CNT1_STATUS_Msk (1UL << PMU_OVSSET_CNT1_STATUS_Pos) /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */ + +#define PMU_OVSSET_CNT2_STATUS_Pos 2U /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */ +#define PMU_OVSSET_CNT2_STATUS_Msk (1UL << PMU_OVSSET_CNT2_STATUS_Pos) /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */ + +#define PMU_OVSSET_CNT3_STATUS_Pos 3U /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */ +#define PMU_OVSSET_CNT3_STATUS_Msk (1UL << PMU_OVSSET_CNT3_STATUS_Pos) /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */ + +#define PMU_OVSSET_CNT4_STATUS_Pos 4U /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */ +#define PMU_OVSSET_CNT4_STATUS_Msk (1UL << PMU_OVSSET_CNT4_STATUS_Pos) /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */ + +#define PMU_OVSSET_CNT5_STATUS_Pos 5U /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */ +#define PMU_OVSSET_CNT5_STATUS_Msk (1UL << PMU_OVSSET_CNT5_STATUS_Pos) /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */ + +#define PMU_OVSSET_CNT6_STATUS_Pos 6U /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */ +#define PMU_OVSSET_CNT6_STATUS_Msk (1UL << PMU_OVSSET_CNT6_STATUS_Pos) /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */ + +#define PMU_OVSSET_CNT7_STATUS_Pos 7U /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */ +#define PMU_OVSSET_CNT7_STATUS_Msk (1UL << PMU_OVSSET_CNT7_STATUS_Pos) /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */ + +#define PMU_OVSSET_CNT8_STATUS_Pos 8U /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */ +#define PMU_OVSSET_CNT8_STATUS_Msk (1UL << PMU_OVSSET_CNT8_STATUS_Pos) /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */ + +#define PMU_OVSSET_CNT9_STATUS_Pos 9U /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */ +#define PMU_OVSSET_CNT9_STATUS_Msk (1UL << PMU_OVSSET_CNT9_STATUS_Pos) /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */ + +#define PMU_OVSSET_CNT10_STATUS_Pos 10U /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */ +#define PMU_OVSSET_CNT10_STATUS_Msk (1UL << PMU_OVSSET_CNT10_STATUS_Pos) /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */ + +#define PMU_OVSSET_CNT11_STATUS_Pos 11U /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */ +#define PMU_OVSSET_CNT11_STATUS_Msk (1UL << PMU_OVSSET_CNT11_STATUS_Pos) /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */ + +#define PMU_OVSSET_CNT12_STATUS_Pos 12U /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */ +#define PMU_OVSSET_CNT12_STATUS_Msk (1UL << PMU_OVSSET_CNT12_STATUS_Pos) /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */ + +#define PMU_OVSSET_CNT13_STATUS_Pos 13U /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */ +#define PMU_OVSSET_CNT13_STATUS_Msk (1UL << PMU_OVSSET_CNT13_STATUS_Pos) /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */ + +#define PMU_OVSSET_CNT14_STATUS_Pos 14U /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */ +#define PMU_OVSSET_CNT14_STATUS_Msk (1UL << PMU_OVSSET_CNT14_STATUS_Pos) /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */ + +#define PMU_OVSSET_CNT15_STATUS_Pos 15U /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */ +#define PMU_OVSSET_CNT15_STATUS_Msk (1UL << PMU_OVSSET_CNT15_STATUS_Pos) /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */ + +#define PMU_OVSSET_CNT16_STATUS_Pos 16U /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */ +#define PMU_OVSSET_CNT16_STATUS_Msk (1UL << PMU_OVSSET_CNT16_STATUS_Pos) /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */ + +#define PMU_OVSSET_CNT17_STATUS_Pos 17U /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */ +#define PMU_OVSSET_CNT17_STATUS_Msk (1UL << PMU_OVSSET_CNT17_STATUS_Pos) /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */ + +#define PMU_OVSSET_CNT18_STATUS_Pos 18U /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */ +#define PMU_OVSSET_CNT18_STATUS_Msk (1UL << PMU_OVSSET_CNT18_STATUS_Pos) /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */ + +#define PMU_OVSSET_CNT19_STATUS_Pos 19U /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */ +#define PMU_OVSSET_CNT19_STATUS_Msk (1UL << PMU_OVSSET_CNT19_STATUS_Pos) /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */ + +#define PMU_OVSSET_CNT20_STATUS_Pos 20U /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */ +#define PMU_OVSSET_CNT20_STATUS_Msk (1UL << PMU_OVSSET_CNT20_STATUS_Pos) /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */ + +#define PMU_OVSSET_CNT21_STATUS_Pos 21U /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */ +#define PMU_OVSSET_CNT21_STATUS_Msk (1UL << PMU_OVSSET_CNT21_STATUS_Pos) /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */ + +#define PMU_OVSSET_CNT22_STATUS_Pos 22U /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */ +#define PMU_OVSSET_CNT22_STATUS_Msk (1UL << PMU_OVSSET_CNT22_STATUS_Pos) /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */ + +#define PMU_OVSSET_CNT23_STATUS_Pos 23U /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */ +#define PMU_OVSSET_CNT23_STATUS_Msk (1UL << PMU_OVSSET_CNT23_STATUS_Pos) /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */ + +#define PMU_OVSSET_CNT24_STATUS_Pos 24U /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */ +#define PMU_OVSSET_CNT24_STATUS_Msk (1UL << PMU_OVSSET_CNT24_STATUS_Pos) /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */ + +#define PMU_OVSSET_CNT25_STATUS_Pos 25U /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */ +#define PMU_OVSSET_CNT25_STATUS_Msk (1UL << PMU_OVSSET_CNT25_STATUS_Pos) /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */ + +#define PMU_OVSSET_CNT26_STATUS_Pos 26U /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */ +#define PMU_OVSSET_CNT26_STATUS_Msk (1UL << PMU_OVSSET_CNT26_STATUS_Pos) /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */ + +#define PMU_OVSSET_CNT27_STATUS_Pos 27U /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */ +#define PMU_OVSSET_CNT27_STATUS_Msk (1UL << PMU_OVSSET_CNT27_STATUS_Pos) /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */ + +#define PMU_OVSSET_CNT28_STATUS_Pos 28U /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */ +#define PMU_OVSSET_CNT28_STATUS_Msk (1UL << PMU_OVSSET_CNT28_STATUS_Pos) /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */ + +#define PMU_OVSSET_CNT29_STATUS_Pos 29U /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */ +#define PMU_OVSSET_CNT29_STATUS_Msk (1UL << PMU_OVSSET_CNT29_STATUS_Pos) /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */ + +#define PMU_OVSSET_CNT30_STATUS_Pos 30U /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */ +#define PMU_OVSSET_CNT30_STATUS_Msk (1UL << PMU_OVSSET_CNT30_STATUS_Pos) /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */ + +#define PMU_OVSSET_CYCCNT_STATUS_Pos 31U /*!< PMU OVSSET: Cycle Counter Overflow Set Position */ +#define PMU_OVSSET_CYCCNT_STATUS_Msk (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos) /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */ + +/** \brief PMU Overflow Flag Status Clear Register Definitions */ + +#define PMU_OVSCLR_CNT0_STATUS_Pos 0U /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */ +#define PMU_OVSCLR_CNT0_STATUS_Msk (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/) /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT1_STATUS_Pos 1U /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */ +#define PMU_OVSCLR_CNT1_STATUS_Msk (1UL << PMU_OVSCLR_CNT1_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */ + +#define PMU_OVSCLR_CNT2_STATUS_Pos 2U /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */ +#define PMU_OVSCLR_CNT2_STATUS_Msk (1UL << PMU_OVSCLR_CNT2_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT3_STATUS_Pos 3U /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */ +#define PMU_OVSCLR_CNT3_STATUS_Msk (1UL << PMU_OVSCLR_CNT3_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT4_STATUS_Pos 4U /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */ +#define PMU_OVSCLR_CNT4_STATUS_Msk (1UL << PMU_OVSCLR_CNT4_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT5_STATUS_Pos 5U /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */ +#define PMU_OVSCLR_CNT5_STATUS_Msk (1UL << PMU_OVSCLR_CNT5_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT6_STATUS_Pos 6U /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */ +#define PMU_OVSCLR_CNT6_STATUS_Msk (1UL << PMU_OVSCLR_CNT6_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT7_STATUS_Pos 7U /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */ +#define PMU_OVSCLR_CNT7_STATUS_Msk (1UL << PMU_OVSCLR_CNT7_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT8_STATUS_Pos 8U /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */ +#define PMU_OVSCLR_CNT8_STATUS_Msk (1UL << PMU_OVSCLR_CNT8_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT9_STATUS_Pos 9U /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */ +#define PMU_OVSCLR_CNT9_STATUS_Msk (1UL << PMU_OVSCLR_CNT9_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT10_STATUS_Pos 10U /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */ +#define PMU_OVSCLR_CNT10_STATUS_Msk (1UL << PMU_OVSCLR_CNT10_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT11_STATUS_Pos 11U /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */ +#define PMU_OVSCLR_CNT11_STATUS_Msk (1UL << PMU_OVSCLR_CNT11_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT12_STATUS_Pos 12U /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */ +#define PMU_OVSCLR_CNT12_STATUS_Msk (1UL << PMU_OVSCLR_CNT12_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT13_STATUS_Pos 13U /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */ +#define PMU_OVSCLR_CNT13_STATUS_Msk (1UL << PMU_OVSCLR_CNT13_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT14_STATUS_Pos 14U /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */ +#define PMU_OVSCLR_CNT14_STATUS_Msk (1UL << PMU_OVSCLR_CNT14_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT15_STATUS_Pos 15U /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */ +#define PMU_OVSCLR_CNT15_STATUS_Msk (1UL << PMU_OVSCLR_CNT15_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT16_STATUS_Pos 16U /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */ +#define PMU_OVSCLR_CNT16_STATUS_Msk (1UL << PMU_OVSCLR_CNT16_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT17_STATUS_Pos 17U /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */ +#define PMU_OVSCLR_CNT17_STATUS_Msk (1UL << PMU_OVSCLR_CNT17_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT18_STATUS_Pos 18U /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */ +#define PMU_OVSCLR_CNT18_STATUS_Msk (1UL << PMU_OVSCLR_CNT18_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT19_STATUS_Pos 19U /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */ +#define PMU_OVSCLR_CNT19_STATUS_Msk (1UL << PMU_OVSCLR_CNT19_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT20_STATUS_Pos 20U /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */ +#define PMU_OVSCLR_CNT20_STATUS_Msk (1UL << PMU_OVSCLR_CNT20_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT21_STATUS_Pos 21U /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */ +#define PMU_OVSCLR_CNT21_STATUS_Msk (1UL << PMU_OVSCLR_CNT21_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT22_STATUS_Pos 22U /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */ +#define PMU_OVSCLR_CNT22_STATUS_Msk (1UL << PMU_OVSCLR_CNT22_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT23_STATUS_Pos 23U /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */ +#define PMU_OVSCLR_CNT23_STATUS_Msk (1UL << PMU_OVSCLR_CNT23_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT24_STATUS_Pos 24U /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */ +#define PMU_OVSCLR_CNT24_STATUS_Msk (1UL << PMU_OVSCLR_CNT24_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT25_STATUS_Pos 25U /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */ +#define PMU_OVSCLR_CNT25_STATUS_Msk (1UL << PMU_OVSCLR_CNT25_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT26_STATUS_Pos 26U /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */ +#define PMU_OVSCLR_CNT26_STATUS_Msk (1UL << PMU_OVSCLR_CNT26_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT27_STATUS_Pos 27U /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */ +#define PMU_OVSCLR_CNT27_STATUS_Msk (1UL << PMU_OVSCLR_CNT27_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT28_STATUS_Pos 28U /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */ +#define PMU_OVSCLR_CNT28_STATUS_Msk (1UL << PMU_OVSCLR_CNT28_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT29_STATUS_Pos 29U /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */ +#define PMU_OVSCLR_CNT29_STATUS_Msk (1UL << PMU_OVSCLR_CNT29_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT30_STATUS_Pos 30U /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */ +#define PMU_OVSCLR_CNT30_STATUS_Msk (1UL << PMU_OVSCLR_CNT30_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */ + +#define PMU_OVSCLR_CYCCNT_STATUS_Pos 31U /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */ +#define PMU_OVSCLR_CYCCNT_STATUS_Msk (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos) /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */ + +/** \brief PMU Software Increment Counter */ + +#define PMU_SWINC_CNT0_Pos 0U /*!< PMU SWINC: Event Counter 0 Software Increment Position */ +#define PMU_SWINC_CNT0_Msk (1UL /*<< PMU_SWINC_CNT0_Pos */) /*!< PMU SWINC: Event Counter 0 Software Increment Mask */ + +#define PMU_SWINC_CNT1_Pos 1U /*!< PMU SWINC: Event Counter 1 Software Increment Position */ +#define PMU_SWINC_CNT1_Msk (1UL << PMU_SWINC_CNT1_Pos) /*!< PMU SWINC: Event Counter 1 Software Increment Mask */ + +#define PMU_SWINC_CNT2_Pos 2U /*!< PMU SWINC: Event Counter 2 Software Increment Position */ +#define PMU_SWINC_CNT2_Msk (1UL << PMU_SWINC_CNT2_Pos) /*!< PMU SWINC: Event Counter 2 Software Increment Mask */ + +#define PMU_SWINC_CNT3_Pos 3U /*!< PMU SWINC: Event Counter 3 Software Increment Position */ +#define PMU_SWINC_CNT3_Msk (1UL << PMU_SWINC_CNT3_Pos) /*!< PMU SWINC: Event Counter 3 Software Increment Mask */ + +#define PMU_SWINC_CNT4_Pos 4U /*!< PMU SWINC: Event Counter 4 Software Increment Position */ +#define PMU_SWINC_CNT4_Msk (1UL << PMU_SWINC_CNT4_Pos) /*!< PMU SWINC: Event Counter 4 Software Increment Mask */ + +#define PMU_SWINC_CNT5_Pos 5U /*!< PMU SWINC: Event Counter 5 Software Increment Position */ +#define PMU_SWINC_CNT5_Msk (1UL << PMU_SWINC_CNT5_Pos) /*!< PMU SWINC: Event Counter 5 Software Increment Mask */ + +#define PMU_SWINC_CNT6_Pos 6U /*!< PMU SWINC: Event Counter 6 Software Increment Position */ +#define PMU_SWINC_CNT6_Msk (1UL << PMU_SWINC_CNT6_Pos) /*!< PMU SWINC: Event Counter 6 Software Increment Mask */ + +#define PMU_SWINC_CNT7_Pos 7U /*!< PMU SWINC: Event Counter 7 Software Increment Position */ +#define PMU_SWINC_CNT7_Msk (1UL << PMU_SWINC_CNT7_Pos) /*!< PMU SWINC: Event Counter 7 Software Increment Mask */ + +#define PMU_SWINC_CNT8_Pos 8U /*!< PMU SWINC: Event Counter 8 Software Increment Position */ +#define PMU_SWINC_CNT8_Msk (1UL << PMU_SWINC_CNT8_Pos) /*!< PMU SWINC: Event Counter 8 Software Increment Mask */ + +#define PMU_SWINC_CNT9_Pos 9U /*!< PMU SWINC: Event Counter 9 Software Increment Position */ +#define PMU_SWINC_CNT9_Msk (1UL << PMU_SWINC_CNT9_Pos) /*!< PMU SWINC: Event Counter 9 Software Increment Mask */ + +#define PMU_SWINC_CNT10_Pos 10U /*!< PMU SWINC: Event Counter 10 Software Increment Position */ +#define PMU_SWINC_CNT10_Msk (1UL << PMU_SWINC_CNT10_Pos) /*!< PMU SWINC: Event Counter 10 Software Increment Mask */ + +#define PMU_SWINC_CNT11_Pos 11U /*!< PMU SWINC: Event Counter 11 Software Increment Position */ +#define PMU_SWINC_CNT11_Msk (1UL << PMU_SWINC_CNT11_Pos) /*!< PMU SWINC: Event Counter 11 Software Increment Mask */ + +#define PMU_SWINC_CNT12_Pos 12U /*!< PMU SWINC: Event Counter 12 Software Increment Position */ +#define PMU_SWINC_CNT12_Msk (1UL << PMU_SWINC_CNT12_Pos) /*!< PMU SWINC: Event Counter 12 Software Increment Mask */ + +#define PMU_SWINC_CNT13_Pos 13U /*!< PMU SWINC: Event Counter 13 Software Increment Position */ +#define PMU_SWINC_CNT13_Msk (1UL << PMU_SWINC_CNT13_Pos) /*!< PMU SWINC: Event Counter 13 Software Increment Mask */ + +#define PMU_SWINC_CNT14_Pos 14U /*!< PMU SWINC: Event Counter 14 Software Increment Position */ +#define PMU_SWINC_CNT14_Msk (1UL << PMU_SWINC_CNT14_Pos) /*!< PMU SWINC: Event Counter 14 Software Increment Mask */ + +#define PMU_SWINC_CNT15_Pos 15U /*!< PMU SWINC: Event Counter 15 Software Increment Position */ +#define PMU_SWINC_CNT15_Msk (1UL << PMU_SWINC_CNT15_Pos) /*!< PMU SWINC: Event Counter 15 Software Increment Mask */ + +#define PMU_SWINC_CNT16_Pos 16U /*!< PMU SWINC: Event Counter 16 Software Increment Position */ +#define PMU_SWINC_CNT16_Msk (1UL << PMU_SWINC_CNT16_Pos) /*!< PMU SWINC: Event Counter 16 Software Increment Mask */ + +#define PMU_SWINC_CNT17_Pos 17U /*!< PMU SWINC: Event Counter 17 Software Increment Position */ +#define PMU_SWINC_CNT17_Msk (1UL << PMU_SWINC_CNT17_Pos) /*!< PMU SWINC: Event Counter 17 Software Increment Mask */ + +#define PMU_SWINC_CNT18_Pos 18U /*!< PMU SWINC: Event Counter 18 Software Increment Position */ +#define PMU_SWINC_CNT18_Msk (1UL << PMU_SWINC_CNT18_Pos) /*!< PMU SWINC: Event Counter 18 Software Increment Mask */ + +#define PMU_SWINC_CNT19_Pos 19U /*!< PMU SWINC: Event Counter 19 Software Increment Position */ +#define PMU_SWINC_CNT19_Msk (1UL << PMU_SWINC_CNT19_Pos) /*!< PMU SWINC: Event Counter 19 Software Increment Mask */ + +#define PMU_SWINC_CNT20_Pos 20U /*!< PMU SWINC: Event Counter 20 Software Increment Position */ +#define PMU_SWINC_CNT20_Msk (1UL << PMU_SWINC_CNT20_Pos) /*!< PMU SWINC: Event Counter 20 Software Increment Mask */ + +#define PMU_SWINC_CNT21_Pos 21U /*!< PMU SWINC: Event Counter 21 Software Increment Position */ +#define PMU_SWINC_CNT21_Msk (1UL << PMU_SWINC_CNT21_Pos) /*!< PMU SWINC: Event Counter 21 Software Increment Mask */ + +#define PMU_SWINC_CNT22_Pos 22U /*!< PMU SWINC: Event Counter 22 Software Increment Position */ +#define PMU_SWINC_CNT22_Msk (1UL << PMU_SWINC_CNT22_Pos) /*!< PMU SWINC: Event Counter 22 Software Increment Mask */ + +#define PMU_SWINC_CNT23_Pos 23U /*!< PMU SWINC: Event Counter 23 Software Increment Position */ +#define PMU_SWINC_CNT23_Msk (1UL << PMU_SWINC_CNT23_Pos) /*!< PMU SWINC: Event Counter 23 Software Increment Mask */ + +#define PMU_SWINC_CNT24_Pos 24U /*!< PMU SWINC: Event Counter 24 Software Increment Position */ +#define PMU_SWINC_CNT24_Msk (1UL << PMU_SWINC_CNT24_Pos) /*!< PMU SWINC: Event Counter 24 Software Increment Mask */ + +#define PMU_SWINC_CNT25_Pos 25U /*!< PMU SWINC: Event Counter 25 Software Increment Position */ +#define PMU_SWINC_CNT25_Msk (1UL << PMU_SWINC_CNT25_Pos) /*!< PMU SWINC: Event Counter 25 Software Increment Mask */ + +#define PMU_SWINC_CNT26_Pos 26U /*!< PMU SWINC: Event Counter 26 Software Increment Position */ +#define PMU_SWINC_CNT26_Msk (1UL << PMU_SWINC_CNT26_Pos) /*!< PMU SWINC: Event Counter 26 Software Increment Mask */ + +#define PMU_SWINC_CNT27_Pos 27U /*!< PMU SWINC: Event Counter 27 Software Increment Position */ +#define PMU_SWINC_CNT27_Msk (1UL << PMU_SWINC_CNT27_Pos) /*!< PMU SWINC: Event Counter 27 Software Increment Mask */ + +#define PMU_SWINC_CNT28_Pos 28U /*!< PMU SWINC: Event Counter 28 Software Increment Position */ +#define PMU_SWINC_CNT28_Msk (1UL << PMU_SWINC_CNT28_Pos) /*!< PMU SWINC: Event Counter 28 Software Increment Mask */ + +#define PMU_SWINC_CNT29_Pos 29U /*!< PMU SWINC: Event Counter 29 Software Increment Position */ +#define PMU_SWINC_CNT29_Msk (1UL << PMU_SWINC_CNT29_Pos) /*!< PMU SWINC: Event Counter 29 Software Increment Mask */ + +#define PMU_SWINC_CNT30_Pos 30U /*!< PMU SWINC: Event Counter 30 Software Increment Position */ +#define PMU_SWINC_CNT30_Msk (1UL << PMU_SWINC_CNT30_Pos) /*!< PMU SWINC: Event Counter 30 Software Increment Mask */ + +/** \brief PMU Control Register Definitions */ + +#define PMU_CTRL_ENABLE_Pos 0U /*!< PMU CTRL: ENABLE Position */ +#define PMU_CTRL_ENABLE_Msk (1UL /*<< PMU_CTRL_ENABLE_Pos*/) /*!< PMU CTRL: ENABLE Mask */ + +#define PMU_CTRL_EVENTCNT_RESET_Pos 1U /*!< PMU CTRL: Event Counter Reset Position */ +#define PMU_CTRL_EVENTCNT_RESET_Msk (1UL << PMU_CTRL_EVENTCNT_RESET_Pos) /*!< PMU CTRL: Event Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_RESET_Pos 2U /*!< PMU CTRL: Cycle Counter Reset Position */ +#define PMU_CTRL_CYCCNT_RESET_Msk (1UL << PMU_CTRL_CYCCNT_RESET_Pos) /*!< PMU CTRL: Cycle Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_DISABLE_Pos 5U /*!< PMU CTRL: Disable Cycle Counter Position */ +#define PMU_CTRL_CYCCNT_DISABLE_Msk (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos) /*!< PMU CTRL: Disable Cycle Counter Mask */ + +#define PMU_CTRL_FRZ_ON_OV_Pos 9U /*!< PMU CTRL: Freeze-on-overflow Position */ +#define PMU_CTRL_FRZ_ON_OV_Msk (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos) /*!< PMU CTRL: Freeze-on-overflow Mask */ + +#define PMU_CTRL_TRACE_ON_OV_Pos 11U /*!< PMU CTRL: Trace-on-overflow Position */ +#define PMU_CTRL_TRACE_ON_OV_Msk (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos) /*!< PMU CTRL: Trace-on-overflow Mask */ + +/** \brief PMU Type Register Definitions */ + +#define PMU_TYPE_NUM_CNTS_Pos 0U /*!< PMU TYPE: Number of Counters Position */ +#define PMU_TYPE_NUM_CNTS_Msk (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/) /*!< PMU TYPE: Number of Counters Mask */ + +#define PMU_TYPE_SIZE_CNTS_Pos 8U /*!< PMU TYPE: Size of Counters Position */ +#define PMU_TYPE_SIZE_CNTS_Msk (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos) /*!< PMU TYPE: Size of Counters Mask */ + +#define PMU_TYPE_CYCCNT_PRESENT_Pos 14U /*!< PMU TYPE: Cycle Counter Present Position */ +#define PMU_TYPE_CYCCNT_PRESENT_Msk (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos) /*!< PMU TYPE: Cycle Counter Present Mask */ + +#define PMU_TYPE_FRZ_OV_SUPPORT_Pos 21U /*!< PMU TYPE: Freeze-on-overflow Support Position */ +#define PMU_TYPE_FRZ_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Freeze-on-overflow Support Mask */ + +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos 23U /*!< PMU TYPE: Trace-on-overflow Support Position */ +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Trace-on-overflow Support Mask */ + +/** \brief PMU Authentication Status Register Definitions */ + +#define PMU_AUTHSTATUS_NSID_Pos 0U /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSID_Msk (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/) /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSNID_Pos 2U /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSNID_Msk (0x3UL << PMU_AUTHSTATUS_NSNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SID_Pos 4U /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_SID_Msk (0x3UL << PMU_AUTHSTATUS_SID_Pos) /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SNID_Pos 6U /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SNID_Msk (0x3UL << PMU_AUTHSTATUS_SNID_Pos) /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUID_Pos 16U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUID_Msk (0x3UL << PMU_AUTHSTATUS_NSUID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUNID_Pos 18U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUNID_Msk (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUID_Pos 20U /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_SUID_Msk (0x3UL << PMU_AUTHSTATUS_SUID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUNID_Pos 22U /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SUNID_Msk (0x3UL << PMU_AUTHSTATUS_SUNID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */ + +/*@} end of group CMSIS_PMU */ +#endif + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +#define FPU_FPDSCR_FZ16_Pos 19U /*!< FPDSCR: FZ16 bit Position */ +#define FPU_FPDSCR_FZ16_Msk (1UL << FPU_FPDSCR_FZ16_Pos) /*!< FPDSCR: FZ16 bit Mask */ + +#define FPU_FPDSCR_LTPSIZE_Pos 16U /*!< FPDSCR: LTPSIZE bit Position */ +#define FPU_FPDSCR_LTPSIZE_Msk (7UL << FPU_FPDSCR_LTPSIZE_Pos) /*!< FPDSCR: LTPSIZE bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FPRound_Pos 28U /*!< MVFR0: FPRound bits Position */ +#define FPU_MVFR0_FPRound_Msk (0xFUL << FPU_MVFR0_FPRound_Pos) /*!< MVFR0: FPRound bits Mask */ + +#define FPU_MVFR0_FPSqrt_Pos 20U /*!< MVFR0: FPSqrt bits Position */ +#define FPU_MVFR0_FPSqrt_Msk (0xFUL << FPU_MVFR0_FPSqrt_Pos) /*!< MVFR0: FPSqrt bits Mask */ + +#define FPU_MVFR0_FPDivide_Pos 16U /*!< MVFR0: FPDivide bits Position */ +#define FPU_MVFR0_FPDivide_Msk (0xFUL << FPU_MVFR0_FPDivide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FPDP_Pos 8U /*!< MVFR0: FPDP bits Position */ +#define FPU_MVFR0_FPDP_Msk (0xFUL << FPU_MVFR0_FPDP_Pos) /*!< MVFR0: FPDP bits Mask */ + +#define FPU_MVFR0_FPSP_Pos 4U /*!< MVFR0: FPSP bits Position */ +#define FPU_MVFR0_FPSP_Msk (0xFUL << FPU_MVFR0_FPSP_Pos) /*!< MVFR0: FPSP bits Mask */ + +#define FPU_MVFR0_SIMDReg_Pos 0U /*!< MVFR0: SIMDReg bits Position */ +#define FPU_MVFR0_SIMDReg_Msk (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/) /*!< MVFR0: SIMDReg bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FMAC_Pos 28U /*!< MVFR1: FMAC bits Position */ +#define FPU_MVFR1_FMAC_Msk (0xFUL << FPU_MVFR1_FMAC_Pos) /*!< MVFR1: FMAC bits Mask */ + +#define FPU_MVFR1_FPHP_Pos 24U /*!< MVFR1: FPHP bits Position */ +#define FPU_MVFR1_FPHP_Msk (0xFUL << FPU_MVFR1_FPHP_Pos) /*!< MVFR1: FPHP bits Mask */ + +#define FPU_MVFR1_FP16_Pos 20U /*!< MVFR1: FP16 bits Position */ +#define FPU_MVFR1_FP16_Msk (0xFUL << FPU_MVFR1_FP16_Pos) /*!< MVFR1: FP16 bits Mask */ + +#define FPU_MVFR1_MVE_Pos 8U /*!< MVFR1: MVE bits Position */ +#define FPU_MVFR1_MVE_Msk (0xFUL << FPU_MVFR1_MVE_Pos) /*!< MVFR1: MVE bits Mask */ + +#define FPU_MVFR1_FPDNaN_Pos 4U /*!< MVFR1: FPDNaN bits Position */ +#define FPU_MVFR1_FPDNaN_Msk (0xFUL << FPU_MVFR1_FPDNaN_Pos) /*!< MVFR1: FPDNaN bits Mask */ + +#define FPU_MVFR1_FPFtZ_Pos 0U /*!< MVFR1: FPFtZ bits Position */ +#define FPU_MVFR1_FPFtZ_Msk (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/) /*!< MVFR1: FPFtZ bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_FPD_Pos 23U /*!< \deprecated CoreDebug DHCSR: S_FPD Position */ +#define CoreDebug_DHCSR_S_FPD_Msk (1UL << CoreDebug_DHCSR_S_FPD_Pos) /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */ + +#define CoreDebug_DHCSR_S_SUIDE_Pos 22U /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */ +#define CoreDebug_DHCSR_S_SUIDE_Msk (1UL << CoreDebug_DHCSR_S_SUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */ + +#define CoreDebug_DHCSR_S_NSUIDE_Pos 21U /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */ +#define CoreDebug_DHCSR_S_NSUIDE_Msk (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */ + +#define CoreDebug_DHCSR_S_SDE_Pos 20U /*!< \deprecated CoreDebug DHCSR: S_SDE Position */ +#define CoreDebug_DHCSR_S_SDE_Msk (1UL << CoreDebug_DHCSR_S_SDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_PMOV_Pos 6U /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */ +#define CoreDebug_DHCSR_C_PMOV_Msk (1UL << CoreDebug_DHCSR_C_PMOV_Pos) /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Set Clear Exception and Monitor Control Register Definitions */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos 3U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos 1U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_UIDEN_Pos 10U /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos 9U /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */ + +#define CoreDebug_DAUTHCTRL_FSDMA_Pos 8U /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */ +#define CoreDebug_DAUTHCTRL_FSDMA_Msk (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_FPD_Pos 23U /*!< DCB DHCSR: Floating-point registers Debuggable Position */ +#define DCB_DHCSR_S_FPD_Msk (0x1UL << DCB_DHCSR_S_FPD_Pos) /*!< DCB DHCSR: Floating-point registers Debuggable Mask */ + +#define DCB_DHCSR_S_SUIDE_Pos 22U /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_SUIDE_Msk (0x1UL << DCB_DHCSR_S_SUIDE_Pos) /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_NSUIDE_Pos 21U /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_NSUIDE_Msk (0x1UL << DCB_DHCSR_S_NSUIDE_Pos) /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_PMOV_Pos 6U /*!< DCB DHCSR: Halt on PMU overflow control Position */ +#define DCB_DHCSR_C_PMOV_Msk (0x1UL << DCB_DHCSR_C_PMOV_Pos) /*!< DCB DHCSR: Halt on PMU overflow control Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */ +#define DCB_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< DCB DSCEMCR: Clear monitor request Position */ +#define DCB_DSCEMCR_CLR_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos) /*!< DCB DSCEMCR: Clear monitor request Mask */ + +#define DCB_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< DCB DSCEMCR: Clear monitor pend Position */ +#define DCB_DSCEMCR_CLR_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos) /*!< DCB DSCEMCR: Clear monitor pend Mask */ + +#define DCB_DSCEMCR_SET_MON_REQ_Pos 3U /*!< DCB DSCEMCR: Set monitor request Position */ +#define DCB_DSCEMCR_SET_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos) /*!< DCB DSCEMCR: Set monitor request Mask */ + +#define DCB_DSCEMCR_SET_MON_PEND_Pos 1U /*!< DCB DSCEMCR: Set monitor pend Position */ +#define DCB_DSCEMCR_SET_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos) /*!< DCB DSCEMCR: Set monitor pend Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_UIDEN_Pos 10U /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */ +#define DCB_DAUTHCTRL_UIDEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */ + +#define DCB_DAUTHCTRL_UIDAPEN_Pos 9U /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */ +#define DCB_DAUTHCTRL_UIDAPEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */ + +#define DCB_DAUTHCTRL_FSDMA_Pos 8U /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */ +#define DCB_DAUTHCTRL_FSDMA_Msk (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos) /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */ + +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SUNID_Pos 22U /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUNID_Msk (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SUID_Pos 20U /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUID_Msk (0x3UL << DIB_DAUTHSTATUS_SUID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_NSUNID_Pos 18U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */ +#define DIB_DAUTHSTATUS_NSUNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */ + +#define DIB_DAUTHSTATUS_NSUID_Pos 16U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_NSUID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #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 */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + #define PMU_BASE (0xE0003000UL) /*!< PMU Base Address */ + #define PMU ((PMU_Type *) PMU_BASE ) /*!< PMU configuration struct */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## PMU functions and events #################################### */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + +#include "pmu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + +/* ########################## MVE functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_MveFunctions MVE Functions + \brief Function that provides MVE type. + @{ + */ + +/** + \brief get MVE type + \details returns the MVE type + \returns + - \b 0: No Vector Extension (MVE) + - \b 1: Integer Vector Extension (MVE-I) + - \b 2: Floating-point Vector Extension (MVE-F) + */ +__STATIC_INLINE uint32_t SCB_GetMVEType(void) +{ + const uint32_t mvfr1 = FPU->MVFR1; + if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos)) + { + return 2U; + } + else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos)) + { + return 1U; + } + else + { + return 0U; + } +} + + +/*@} end of CMSIS_Core_MveFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV81MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h new file mode 100644 index 0000000000..e9c9b5bf59 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mbl.h @@ -0,0 +1,2222 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 27. March 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_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_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (2U) /*!< Cortex-M Core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT 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 + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT 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 ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + 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 */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< 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 */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __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 SHPR[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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT 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_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< \deprecated CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* 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) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_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 a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __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(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h new file mode 100644 index 0000000000..c119fbf242 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_armv8mml.h @@ -0,0 +1,3209 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.2.3 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_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_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (80U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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 ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #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 */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h new file mode 100644 index 0000000000..0a0ba223e1 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0.h @@ -0,0 +1,952 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 21. August 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #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 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#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 RESERVED1[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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* 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) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + 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))); + } + else + { + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + *(vectors + (int32_t)IRQn) = vector; /* use pointer arithmetic to access vector */ + /* ARM Application Note 321 states that the M0 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + return *(vectors + (int32_t)IRQn); /* use pointer arithmetic to access vector */ +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __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 */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h new file mode 100644 index 0000000000..879a384124 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm0plus.h @@ -0,0 +1,1087 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.9 + * @date 21. August 2019 + ******************************************************************************/ +/* + * Copyright (c) 2009-2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_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+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT 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 + - Core MPU 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + 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 */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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 RESERVED1[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 */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __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 */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* 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 */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core 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 */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* 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) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + 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))); + } + else + { + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +#else + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + *(vectors + (int32_t)IRQn) = vector; /* use pointer arithmetic to access vector */ +#endif + /* ARM Application Note 321 states that the M0+ does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +#else + uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2); /* point to 1st user interrupt */ + return *(vectors + (int32_t)IRQn); /* use pointer arithmetic to access vector */ +#endif +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __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 */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h new file mode 100644 index 0000000000..83b8fc6a0d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm1.h @@ -0,0 +1,979 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.1 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_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_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_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_M1 */ + + + +/******************************************************************************* + * 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_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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-M1 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-M1 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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* 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) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + 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))); + } + else + { + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M1 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __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 */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h new file mode 100644 index 0000000000..f2cf49fb16 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm23.h @@ -0,0 +1,2297 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 11. February 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_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_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT 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 + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT 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_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + 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 */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< 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 */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __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 SHPR[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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT 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_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< \deprecated CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* 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) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_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 a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __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(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h new file mode 100644 index 0000000000..74fb87e5c5 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm3.h @@ -0,0 +1,1943 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.1.2 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_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_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU 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:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q 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:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + 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 */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control 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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* 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_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP 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 */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET 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_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ +#endif + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} 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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#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 */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M3 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h new file mode 100644 index 0000000000..18a2e6fb03 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm33.h @@ -0,0 +1,3277 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.2.3 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_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_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #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 */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h new file mode 100644 index 0000000000..3843d9542c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm35p.h @@ -0,0 +1,3277 @@ +/**************************************************************************//** + * @file core_cm35p.h + * @brief CMSIS Cortex-M35P Core Peripheral Access Layer Header File + * @version V1.1.3 + * @date 13. October 2021 + ******************************************************************************/ +/* + * Copyright (c) 2018-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM35P_H_GENERIC +#define __CORE_CM35P_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_M35P + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM35P definitions */ +#define __CM35P_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM35P_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM35P_CMSIS_VERSION ((__CM35P_CMSIS_VERSION_MAIN << 16U) | \ + __CM35P_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (35U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM35P_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM35P_H_DEPENDANT +#define __CORE_CM35P_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM35P_REV + #define __CM35P_REV 0x0000U + #warning "__CM35P_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M35P */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #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 */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM35P_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h new file mode 100644 index 0000000000..e21cd14925 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm4.h @@ -0,0 +1,2129 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.1.2 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_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_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control 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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP 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 */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET 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_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} 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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#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 */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M4 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h new file mode 100644 index 0000000000..faa30ce36a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm55.h @@ -0,0 +1,4817 @@ +/**************************************************************************//** + * @file core_cm55.h + * @brief CMSIS Cortex-M55 Core Peripheral Access Layer Header File + * @version V1.2.4 + * @date 21. April 2022 + ******************************************************************************/ +/* + * Copyright (c) 2018-2022 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM55_H_GENERIC +#define __CORE_CM55_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_M55 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM55 definitions */ +#define __CM55_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM55_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM55_CMSIS_VERSION ((__CM55_CMSIS_VERSION_MAIN << 16U) | \ + __CM55_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (55U) /*!< Cortex-M Core */ + +#if defined ( __CC_ARM ) + #error Legacy Arm Compiler does not support Armv8.1-M target architecture. +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM55_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM55_H_DEPENDANT +#define __CORE_CM55_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM55_REV + #define __CM55_REV 0x0000U + #warning "__CM55_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #if __FPU_PRESENT != 0U + #ifndef __FPU_DP + #define __FPU_DP 0U + #warning "__FPU_DP not defined in device header file; using default!" + #endif + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __PMU_PRESENT + #define __PMU_PRESENT 0U + #warning "__PMU_PRESENT not defined in device header file; using default!" + #endif + + #if __PMU_PRESENT != 0U + #ifndef __PMU_NUM_EVENTCNT + #define __PMU_NUM_EVENTCNT 8U + #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!" + #elif (__PMU_NUM_EVENTCNT > 8 || __PMU_NUM_EVENTCNT < 2) + #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */ + #endif + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M55 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core EWIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core PMU Register + - Core MPU Register + - Core SAU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __IOM uint32_t RFSR; /*!< Offset: 0x204 (R/W) RAS Fault Status Register */ + uint32_t RESERVED4[14U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_IESB_Pos 5U /*!< SCB AIRCR: Implicit ESB Enable Position */ +#define SCB_AIRCR_IESB_Msk (1UL << SCB_AIRCR_IESB_Pos) /*!< SCB AIRCR: Implicit ESB Enable Mask */ + +#define SCB_AIRCR_DIT_Pos 4U /*!< SCB AIRCR: Data Independent Timing Position */ +#define SCB_AIRCR_DIT_Msk (1UL << SCB_AIRCR_DIT_Pos) /*!< SCB AIRCR: Data Independent Timing Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_TRD_Pos 20U /*!< SCB CCR: TRD Position */ +#define SCB_CCR_TRD_Msk (1UL << SCB_CCR_TRD_Pos) /*!< SCB CCR: TRD Mask */ + +#define SCB_CCR_LOB_Pos 19U /*!< SCB CCR: LOB Position */ +#define SCB_CCR_LOB_Msk (1UL << SCB_CCR_LOB_Pos) /*!< SCB CCR: LOB Mask */ + +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_PMU_Pos 5U /*!< SCB DFSR: PMU Position */ +#define SCB_DFSR_PMU_Msk (1UL << SCB_DFSR_PMU_Pos) /*!< SCB DFSR: PMU Mask */ + +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CP7_Pos 7U /*!< SCB NSACR: CP7 Position */ +#define SCB_NSACR_CP7_Msk (1UL << SCB_NSACR_CP7_Pos) /*!< SCB NSACR: CP7 Mask */ + +#define SCB_NSACR_CP6_Pos 6U /*!< SCB NSACR: CP6 Position */ +#define SCB_NSACR_CP6_Msk (1UL << SCB_NSACR_CP6_Pos) /*!< SCB NSACR: CP6 Mask */ + +#define SCB_NSACR_CP5_Pos 5U /*!< SCB NSACR: CP5 Position */ +#define SCB_NSACR_CP5_Msk (1UL << SCB_NSACR_CP5_Pos) /*!< SCB NSACR: CP5 Mask */ + +#define SCB_NSACR_CP4_Pos 4U /*!< SCB NSACR: CP4 Position */ +#define SCB_NSACR_CP4_Msk (1UL << SCB_NSACR_CP4_Pos) /*!< SCB NSACR: CP4 Mask */ + +#define SCB_NSACR_CP3_Pos 3U /*!< SCB NSACR: CP3 Position */ +#define SCB_NSACR_CP3_Msk (1UL << SCB_NSACR_CP3_Pos) /*!< SCB NSACR: CP3 Mask */ + +#define SCB_NSACR_CP2_Pos 2U /*!< SCB NSACR: CP2 Position */ +#define SCB_NSACR_CP2_Msk (1UL << SCB_NSACR_CP2_Pos) /*!< SCB NSACR: CP2 Mask */ + +#define SCB_NSACR_CP1_Pos 1U /*!< SCB NSACR: CP1 Position */ +#define SCB_NSACR_CP1_Msk (1UL << SCB_NSACR_CP1_Pos) /*!< SCB NSACR: CP1 Mask */ + +#define SCB_NSACR_CP0_Pos 0U /*!< SCB NSACR: CP0 Position */ +#define SCB_NSACR_CP0_Msk (1UL /*<< SCB_NSACR_CP0_Pos*/) /*!< SCB NSACR: CP0 Mask */ + +/* SCB Debug Feature Register 0 Definitions */ +#define SCB_ID_DFR_UDE_Pos 28U /*!< SCB ID_DFR: UDE Position */ +#define SCB_ID_DFR_UDE_Msk (0xFUL << SCB_ID_DFR_UDE_Pos) /*!< SCB ID_DFR: UDE Mask */ + +#define SCB_ID_DFR_MProfDbg_Pos 20U /*!< SCB ID_DFR: MProfDbg Position */ +#define SCB_ID_DFR_MProfDbg_Msk (0xFUL << SCB_ID_DFR_MProfDbg_Pos) /*!< SCB ID_DFR: MProfDbg Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB RAS Fault Status Register Definitions */ +#define SCB_RFSR_V_Pos 31U /*!< SCB RFSR: V Position */ +#define SCB_RFSR_V_Msk (1UL << SCB_RFSR_V_Pos) /*!< SCB RFSR: V Mask */ + +#define SCB_RFSR_IS_Pos 16U /*!< SCB RFSR: IS Position */ +#define SCB_RFSR_IS_Msk (0x7FFFUL << SCB_RFSR_IS_Pos) /*!< SCB RFSR: IS Mask */ + +#define SCB_RFSR_UET_Pos 0U /*!< SCB RFSR: UET Position */ +#define SCB_RFSR_UET_Msk (3UL /*<< SCB_RFSR_UET_Pos*/) /*!< SCB RFSR: UET Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ICB Implementation Control Block register (ICB) + \brief Type definitions for the Implementation Control Block Register + @{ + */ + +/** + \brief Structure type to access the Implementation Control Block (ICB). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} ICB_Type; + +/* Auxiliary Control Register Definitions */ +#define ICB_ACTLR_DISCRITAXIRUW_Pos 27U /*!< ACTLR: DISCRITAXIRUW Position */ +#define ICB_ACTLR_DISCRITAXIRUW_Msk (1UL << ICB_ACTLR_DISCRITAXIRUW_Pos) /*!< ACTLR: DISCRITAXIRUW Mask */ + +#define ICB_ACTLR_DISDI_Pos 16U /*!< ACTLR: DISDI Position */ +#define ICB_ACTLR_DISDI_Msk (3UL << ICB_ACTLR_DISDI_Pos) /*!< ACTLR: DISDI Mask */ + +#define ICB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define ICB_ACTLR_DISCRITAXIRUR_Msk (1UL << ICB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define ICB_ACTLR_EVENTBUSEN_Pos 14U /*!< ACTLR: EVENTBUSEN Position */ +#define ICB_ACTLR_EVENTBUSEN_Msk (1UL << ICB_ACTLR_EVENTBUSEN_Pos) /*!< ACTLR: EVENTBUSEN Mask */ + +#define ICB_ACTLR_EVENTBUSEN_S_Pos 13U /*!< ACTLR: EVENTBUSEN_S Position */ +#define ICB_ACTLR_EVENTBUSEN_S_Msk (1UL << ICB_ACTLR_EVENTBUSEN_S_Pos) /*!< ACTLR: EVENTBUSEN_S Mask */ + +#define ICB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define ICB_ACTLR_DISITMATBFLUSH_Msk (1UL << ICB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define ICB_ACTLR_DISNWAMODE_Pos 11U /*!< ACTLR: DISNWAMODE Position */ +#define ICB_ACTLR_DISNWAMODE_Msk (1UL << ICB_ACTLR_DISNWAMODE_Pos) /*!< ACTLR: DISNWAMODE Mask */ + +#define ICB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define ICB_ACTLR_FPEXCODIS_Msk (1UL << ICB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define ICB_ACTLR_DISOLAP_Pos 7U /*!< ACTLR: DISOLAP Position */ +#define ICB_ACTLR_DISOLAP_Msk (1UL << ICB_ACTLR_DISOLAP_Pos) /*!< ACTLR: DISOLAP Mask */ + +#define ICB_ACTLR_DISOLAPS_Pos 6U /*!< ACTLR: DISOLAPS Position */ +#define ICB_ACTLR_DISOLAPS_Msk (1UL << ICB_ACTLR_DISOLAPS_Pos) /*!< ACTLR: DISOLAPS Mask */ + +#define ICB_ACTLR_DISLOBR_Pos 5U /*!< ACTLR: DISLOBR Position */ +#define ICB_ACTLR_DISLOBR_Msk (1UL << ICB_ACTLR_DISLOBR_Pos) /*!< ACTLR: DISLOBR Mask */ + +#define ICB_ACTLR_DISLO_Pos 4U /*!< ACTLR: DISLO Position */ +#define ICB_ACTLR_DISLO_Msk (1UL << ICB_ACTLR_DISLO_Pos) /*!< ACTLR: DISLO Mask */ + +#define ICB_ACTLR_DISLOLEP_Pos 3U /*!< ACTLR: DISLOLEP Position */ +#define ICB_ACTLR_DISLOLEP_Msk (1UL << ICB_ACTLR_DISLOLEP_Pos) /*!< ACTLR: DISLOLEP Mask */ + +#define ICB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define ICB_ACTLR_DISFOLD_Msk (1UL << ICB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +/* Interrupt Controller Type Register Definitions */ +#define ICB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define ICB_ICTR_INTLINESNUM_Msk (0xFUL /*<< ICB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_ICB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[3U]; + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) ITM Device Type Register */ + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup MemSysCtl_Type Memory System Control Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Memory System Control Registers (MEMSYSCTL) + @{ + */ + +/** + \brief Structure type to access the Memory System Control Registers (MEMSYSCTL). + */ +typedef struct +{ + __IOM uint32_t MSCR; /*!< Offset: 0x000 (R/W) Memory System Control Register */ + __IOM uint32_t PFCR; /*!< Offset: 0x004 (R/W) Prefetcher Control Register */ + uint32_t RESERVED1[2U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x010 (R/W) ITCM Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x014 (R/W) DTCM Control Register */ + __IOM uint32_t PAHBCR; /*!< Offset: 0x018 (R/W) P-AHB Control Register */ + uint32_t RESERVED2[313U]; + __IOM uint32_t ITGU_CTRL; /*!< Offset: 0x500 (R/W) ITGU Control Register */ + __IOM uint32_t ITGU_CFG; /*!< Offset: 0x504 (R/W) ITGU Configuration Register */ + uint32_t RESERVED3[2U]; + __IOM uint32_t ITGU_LUT[16U]; /*!< Offset: 0x510 (R/W) ITGU Look Up Table Register */ + uint32_t RESERVED4[44U]; + __IOM uint32_t DTGU_CTRL; /*!< Offset: 0x600 (R/W) DTGU Control Registers */ + __IOM uint32_t DTGU_CFG; /*!< Offset: 0x604 (R/W) DTGU Configuration Register */ + uint32_t RESERVED5[2U]; + __IOM uint32_t DTGU_LUT[16U]; /*!< Offset: 0x610 (R/W) DTGU Look Up Table Register */ +} MemSysCtl_Type; + +/* MEMSYSCTL Memory System Control Register (MSCR) Register Definitions */ +#define MEMSYSCTL_MSCR_CPWRDN_Pos 17U /*!< MEMSYSCTL MSCR: CPWRDN Position */ +#define MEMSYSCTL_MSCR_CPWRDN_Msk (0x1UL << MEMSYSCTL_MSCR_CPWRDN_Pos) /*!< MEMSYSCTL MSCR: CPWRDN Mask */ + +#define MEMSYSCTL_MSCR_DCCLEAN_Pos 16U /*!< MEMSYSCTL MSCR: DCCLEAN Position */ +#define MEMSYSCTL_MSCR_DCCLEAN_Msk (0x1UL << MEMSYSCTL_MSCR_DCCLEAN_Pos) /*!< MEMSYSCTL MSCR: DCCLEAN Mask */ + +#define MEMSYSCTL_MSCR_ICACTIVE_Pos 13U /*!< MEMSYSCTL MSCR: ICACTIVE Position */ +#define MEMSYSCTL_MSCR_ICACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_ICACTIVE_Pos) /*!< MEMSYSCTL MSCR: ICACTIVE Mask */ + +#define MEMSYSCTL_MSCR_DCACTIVE_Pos 12U /*!< MEMSYSCTL MSCR: DCACTIVE Position */ +#define MEMSYSCTL_MSCR_DCACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_DCACTIVE_Pos) /*!< MEMSYSCTL MSCR: DCACTIVE Mask */ + +#define MEMSYSCTL_MSCR_TECCCHKDIS_Pos 4U /*!< MEMSYSCTL MSCR: TECCCHKDIS Position */ +#define MEMSYSCTL_MSCR_TECCCHKDIS_Msk (0x1UL << MEMSYSCTL_MSCR_TECCCHKDIS_Pos) /*!< MEMSYSCTL MSCR: TECCCHKDIS Mask */ + +#define MEMSYSCTL_MSCR_EVECCFAULT_Pos 3U /*!< MEMSYSCTL MSCR: EVECCFAULT Position */ +#define MEMSYSCTL_MSCR_EVECCFAULT_Msk (0x1UL << MEMSYSCTL_MSCR_EVECCFAULT_Pos) /*!< MEMSYSCTL MSCR: EVECCFAULT Mask */ + +#define MEMSYSCTL_MSCR_FORCEWT_Pos 2U /*!< MEMSYSCTL MSCR: FORCEWT Position */ +#define MEMSYSCTL_MSCR_FORCEWT_Msk (0x1UL << MEMSYSCTL_MSCR_FORCEWT_Pos) /*!< MEMSYSCTL MSCR: FORCEWT Mask */ + +#define MEMSYSCTL_MSCR_ECCEN_Pos 1U /*!< MEMSYSCTL MSCR: ECCEN Position */ +#define MEMSYSCTL_MSCR_ECCEN_Msk (0x1UL << MEMSYSCTL_MSCR_ECCEN_Pos) /*!< MEMSYSCTL MSCR: ECCEN Mask */ + +/* MEMSYSCTL Prefetcher Control Register (PFCR) Register Definitions */ +#define MEMSYSCTL_PFCR_MAX_OS_Pos 7U /*!< MEMSYSCTL PFCR: MAX_OS Position */ +#define MEMSYSCTL_PFCR_MAX_OS_Msk (0x7UL << MEMSYSCTL_PFCR_MAX_OS_Pos) /*!< MEMSYSCTL PFCR: MAX_OS Mask */ + +#define MEMSYSCTL_PFCR_MAX_LA_Pos 4U /*!< MEMSYSCTL PFCR: MAX_LA Position */ +#define MEMSYSCTL_PFCR_MAX_LA_Msk (0x7UL << MEMSYSCTL_PFCR_MAX_LA_Pos) /*!< MEMSYSCTL PFCR: MAX_LA Mask */ + +#define MEMSYSCTL_PFCR_MIN_LA_Pos 1U /*!< MEMSYSCTL PFCR: MIN_LA Position */ +#define MEMSYSCTL_PFCR_MIN_LA_Msk (0x7UL << MEMSYSCTL_PFCR_MIN_LA_Pos) /*!< MEMSYSCTL PFCR: MIN_LA Mask */ + +#define MEMSYSCTL_PFCR_ENABLE_Pos 0U /*!< MEMSYSCTL PFCR: ENABLE Position */ +#define MEMSYSCTL_PFCR_ENABLE_Msk (0x1UL /*<< MEMSYSCTL_PFCR_ENABLE_Pos*/) /*!< MEMSYSCTL PFCR: ENABLE Mask */ + +/* MEMSYSCTL ITCM Control Register (ITCMCR) Register Definitions */ +#define MEMSYSCTL_ITCMCR_SZ_Pos 3U /*!< MEMSYSCTL ITCMCR: SZ Position */ +#define MEMSYSCTL_ITCMCR_SZ_Msk (0xFUL << MEMSYSCTL_ITCMCR_SZ_Pos) /*!< MEMSYSCTL ITCMCR: SZ Mask */ + +#define MEMSYSCTL_ITCMCR_EN_Pos 0U /*!< MEMSYSCTL ITCMCR: EN Position */ +#define MEMSYSCTL_ITCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_ITCMCR_EN_Pos*/) /*!< MEMSYSCTL ITCMCR: EN Mask */ + +/* MEMSYSCTL DTCM Control Register (DTCMCR) Register Definitions */ +#define MEMSYSCTL_DTCMCR_SZ_Pos 3U /*!< MEMSYSCTL DTCMCR: SZ Position */ +#define MEMSYSCTL_DTCMCR_SZ_Msk (0xFUL << MEMSYSCTL_DTCMCR_SZ_Pos) /*!< MEMSYSCTL DTCMCR: SZ Mask */ + +#define MEMSYSCTL_DTCMCR_EN_Pos 0U /*!< MEMSYSCTL DTCMCR: EN Position */ +#define MEMSYSCTL_DTCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_DTCMCR_EN_Pos*/) /*!< MEMSYSCTL DTCMCR: EN Mask */ + +/* MEMSYSCTL P-AHB Control Register (PAHBCR) Register Definitions */ +#define MEMSYSCTL_PAHBCR_SZ_Pos 1U /*!< MEMSYSCTL PAHBCR: SZ Position */ +#define MEMSYSCTL_PAHBCR_SZ_Msk (0x7UL << MEMSYSCTL_PAHBCR_SZ_Pos) /*!< MEMSYSCTL PAHBCR: SZ Mask */ + +#define MEMSYSCTL_PAHBCR_EN_Pos 0U /*!< MEMSYSCTL PAHBCR: EN Position */ +#define MEMSYSCTL_PAHBCR_EN_Msk (0x1UL /*<< MEMSYSCTL_PAHBCR_EN_Pos*/) /*!< MEMSYSCTL PAHBCR: EN Mask */ + +/* MEMSYSCTL ITGU Control Register (ITGU_CTRL) Register Definitions */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL ITGU_CTRL: DEREN Position */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_ITGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL ITGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL ITGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_ITGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL ITGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL ITGU Configuration Register (ITGU_CFG) Register Definitions */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL ITGU_CFG: PRESENT Position */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_ITGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL ITGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL ITGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_ITGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL ITGU_CFG: BLKSZ Mask */ + +/* MEMSYSCTL DTGU Control Registers (DTGU_CTRL) Register Definitions */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL DTGU_CTRL: DEREN Position */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_DTGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL DTGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL DTGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_DTGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL DTGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL DTGU Configuration Register (DTGU_CFG) Register Definitions */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL DTGU_CFG: PRESENT Position */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_DTGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL DTGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL DTGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_DTGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL DTGU_CFG: BLKSZ Mask */ + + +/*@}*/ /* end of group MemSysCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PwrModCtl_Type Power Mode Control Registers + \brief Type definitions for the Power Mode Control Registers (PWRMODCTL) + @{ + */ + +/** + \brief Structure type to access the Power Mode Control Registers (PWRMODCTL). + */ +typedef struct +{ + __IOM uint32_t CPDLPSTATE; /*!< Offset: 0x000 (R/W) Core Power Domain Low Power State Register */ + __IOM uint32_t DPDLPSTATE; /*!< Offset: 0x004 (R/W) Debug Power Domain Low Power State Register */ +} PwrModCtl_Type; + +/* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos 8U /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos 4U /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos 0U /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk (0x3UL /*<< PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos*/) /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Mask */ + +/* PWRMODCTL Debug Power Domain Low Power State (DPDLPSTATE) Register Definitions */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos 0U /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Position */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk (0x3UL /*<< PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos*/) /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Mask */ + +/*@}*/ /* end of group PwrModCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup EWIC_Type External Wakeup Interrupt Controller Registers + \brief Type definitions for the External Wakeup Interrupt Controller Registers (EWIC) + @{ + */ + +/** + \brief Structure type to access the External Wakeup Interrupt Controller Registers (EWIC). + */ +typedef struct +{ + __OM uint32_t EVENTSPR; /*!< Offset: 0x000 ( /W) Event Set Pending Register */ + uint32_t RESERVED0[31U]; + __IM uint32_t EVENTMASKA; /*!< Offset: 0x080 (R/W) Event Mask A Register */ + __IM uint32_t EVENTMASK[15]; /*!< Offset: 0x084 (R/W) Event Mask Register */ +} EWIC_Type; + +/* EWIC External Wakeup Interrupt Controller (EVENTSPR) Register Definitions */ +#define EWIC_EVENTSPR_EDBGREQ_Pos 2U /*!< EWIC EVENTSPR: EDBGREQ Position */ +#define EWIC_EVENTSPR_EDBGREQ_Msk (0x1UL << EWIC_EVENTSPR_EDBGREQ_Pos) /*!< EWIC EVENTSPR: EDBGREQ Mask */ + +#define EWIC_EVENTSPR_NMI_Pos 1U /*!< EWIC EVENTSPR: NMI Position */ +#define EWIC_EVENTSPR_NMI_Msk (0x1UL << EWIC_EVENTSPR_NMI_Pos) /*!< EWIC EVENTSPR: NMI Mask */ + +#define EWIC_EVENTSPR_EVENT_Pos 0U /*!< EWIC EVENTSPR: EVENT Position */ +#define EWIC_EVENTSPR_EVENT_Msk (0x1UL /*<< EWIC_EVENTSPR_EVENT_Pos*/) /*!< EWIC EVENTSPR: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASKA) Register Definitions */ +#define EWIC_EVENTMASKA_EDBGREQ_Pos 2U /*!< EWIC EVENTMASKA: EDBGREQ Position */ +#define EWIC_EVENTMASKA_EDBGREQ_Msk (0x1UL << EWIC_EVENTMASKA_EDBGREQ_Pos) /*!< EWIC EVENTMASKA: EDBGREQ Mask */ + +#define EWIC_EVENTMASKA_NMI_Pos 1U /*!< EWIC EVENTMASKA: NMI Position */ +#define EWIC_EVENTMASKA_NMI_Msk (0x1UL << EWIC_EVENTMASKA_NMI_Pos) /*!< EWIC EVENTMASKA: NMI Mask */ + +#define EWIC_EVENTMASKA_EVENT_Pos 0U /*!< EWIC EVENTMASKA: EVENT Position */ +#define EWIC_EVENTMASKA_EVENT_Msk (0x1UL /*<< EWIC_EVENTMASKA_EVENT_Pos*/) /*!< EWIC EVENTMASKA: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASK) Register Definitions */ +#define EWIC_EVENTMASK_IRQ_Pos 0U /*!< EWIC EVENTMASKA: IRQ Position */ +#define EWIC_EVENTMASK_IRQ_Msk (0xFFFFFFFFUL /*<< EWIC_EVENTMASKA_IRQ_Pos*/) /*!< EWIC EVENTMASKA: IRQ Mask */ + +/*@}*/ /* end of group EWIC_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup ErrBnk_Type Error Banking Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Error Banking Registers (ERRBNK) + @{ + */ + +/** + \brief Structure type to access the Error Banking Registers (ERRBNK). + */ +typedef struct +{ + __IOM uint32_t IEBR0; /*!< Offset: 0x000 (R/W) Instruction Cache Error Bank Register 0 */ + __IOM uint32_t IEBR1; /*!< Offset: 0x004 (R/W) Instruction Cache Error Bank Register 1 */ + uint32_t RESERVED0[2U]; + __IOM uint32_t DEBR0; /*!< Offset: 0x010 (R/W) Data Cache Error Bank Register 0 */ + __IOM uint32_t DEBR1; /*!< Offset: 0x014 (R/W) Data Cache Error Bank Register 1 */ + uint32_t RESERVED1[2U]; + __IOM uint32_t TEBR0; /*!< Offset: 0x020 (R/W) TCM Error Bank Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t TEBR1; /*!< Offset: 0x028 (R/W) TCM Error Bank Register 1 */ +} ErrBnk_Type; + +/* ERRBNK Instruction Cache Error Bank Register 0 (IEBR0) Register Definitions */ +#define ERRBNK_IEBR0_SWDEF_Pos 30U /*!< ERRBNK IEBR0: SWDEF Position */ +#define ERRBNK_IEBR0_SWDEF_Msk (0x3UL << ERRBNK_IEBR0_SWDEF_Pos) /*!< ERRBNK IEBR0: SWDEF Mask */ + +#define ERRBNK_IEBR0_BANK_Pos 16U /*!< ERRBNK IEBR0: BANK Position */ +#define ERRBNK_IEBR0_BANK_Msk (0x1UL << ERRBNK_IEBR0_BANK_Pos) /*!< ERRBNK IEBR0: BANK Mask */ + +#define ERRBNK_IEBR0_LOCATION_Pos 2U /*!< ERRBNK IEBR0: LOCATION Position */ +#define ERRBNK_IEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR0_LOCATION_Pos) /*!< ERRBNK IEBR0: LOCATION Mask */ + +#define ERRBNK_IEBR0_LOCKED_Pos 1U /*!< ERRBNK IEBR0: LOCKED Position */ +#define ERRBNK_IEBR0_LOCKED_Msk (0x1UL << ERRBNK_IEBR0_LOCKED_Pos) /*!< ERRBNK IEBR0: LOCKED Mask */ + +#define ERRBNK_IEBR0_VALID_Pos 0U /*!< ERRBNK IEBR0: VALID Position */ +#define ERRBNK_IEBR0_VALID_Msk (0x1UL << /*ERRBNK_IEBR0_VALID_Pos*/) /*!< ERRBNK IEBR0: VALID Mask */ + +/* ERRBNK Instruction Cache Error Bank Register 1 (IEBR1) Register Definitions */ +#define ERRBNK_IEBR1_SWDEF_Pos 30U /*!< ERRBNK IEBR1: SWDEF Position */ +#define ERRBNK_IEBR1_SWDEF_Msk (0x3UL << ERRBNK_IEBR1_SWDEF_Pos) /*!< ERRBNK IEBR1: SWDEF Mask */ + +#define ERRBNK_IEBR1_BANK_Pos 16U /*!< ERRBNK IEBR1: BANK Position */ +#define ERRBNK_IEBR1_BANK_Msk (0x1UL << ERRBNK_IEBR1_BANK_Pos) /*!< ERRBNK IEBR1: BANK Mask */ + +#define ERRBNK_IEBR1_LOCATION_Pos 2U /*!< ERRBNK IEBR1: LOCATION Position */ +#define ERRBNK_IEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR1_LOCATION_Pos) /*!< ERRBNK IEBR1: LOCATION Mask */ + +#define ERRBNK_IEBR1_LOCKED_Pos 1U /*!< ERRBNK IEBR1: LOCKED Position */ +#define ERRBNK_IEBR1_LOCKED_Msk (0x1UL << ERRBNK_IEBR1_LOCKED_Pos) /*!< ERRBNK IEBR1: LOCKED Mask */ + +#define ERRBNK_IEBR1_VALID_Pos 0U /*!< ERRBNK IEBR1: VALID Position */ +#define ERRBNK_IEBR1_VALID_Msk (0x1UL << /*ERRBNK_IEBR1_VALID_Pos*/) /*!< ERRBNK IEBR1: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 0 (DEBR0) Register Definitions */ +#define ERRBNK_DEBR0_SWDEF_Pos 30U /*!< ERRBNK DEBR0: SWDEF Position */ +#define ERRBNK_DEBR0_SWDEF_Msk (0x3UL << ERRBNK_DEBR0_SWDEF_Pos) /*!< ERRBNK DEBR0: SWDEF Mask */ + +#define ERRBNK_DEBR0_TYPE_Pos 17U /*!< ERRBNK DEBR0: TYPE Position */ +#define ERRBNK_DEBR0_TYPE_Msk (0x1UL << ERRBNK_DEBR0_TYPE_Pos) /*!< ERRBNK DEBR0: TYPE Mask */ + +#define ERRBNK_DEBR0_BANK_Pos 16U /*!< ERRBNK DEBR0: BANK Position */ +#define ERRBNK_DEBR0_BANK_Msk (0x1UL << ERRBNK_DEBR0_BANK_Pos) /*!< ERRBNK DEBR0: BANK Mask */ + +#define ERRBNK_DEBR0_LOCATION_Pos 2U /*!< ERRBNK DEBR0: LOCATION Position */ +#define ERRBNK_DEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR0_LOCATION_Pos) /*!< ERRBNK DEBR0: LOCATION Mask */ + +#define ERRBNK_DEBR0_LOCKED_Pos 1U /*!< ERRBNK DEBR0: LOCKED Position */ +#define ERRBNK_DEBR0_LOCKED_Msk (0x1UL << ERRBNK_DEBR0_LOCKED_Pos) /*!< ERRBNK DEBR0: LOCKED Mask */ + +#define ERRBNK_DEBR0_VALID_Pos 0U /*!< ERRBNK DEBR0: VALID Position */ +#define ERRBNK_DEBR0_VALID_Msk (0x1UL << /*ERRBNK_DEBR0_VALID_Pos*/) /*!< ERRBNK DEBR0: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 1 (DEBR1) Register Definitions */ +#define ERRBNK_DEBR1_SWDEF_Pos 30U /*!< ERRBNK DEBR1: SWDEF Position */ +#define ERRBNK_DEBR1_SWDEF_Msk (0x3UL << ERRBNK_DEBR1_SWDEF_Pos) /*!< ERRBNK DEBR1: SWDEF Mask */ + +#define ERRBNK_DEBR1_TYPE_Pos 17U /*!< ERRBNK DEBR1: TYPE Position */ +#define ERRBNK_DEBR1_TYPE_Msk (0x1UL << ERRBNK_DEBR1_TYPE_Pos) /*!< ERRBNK DEBR1: TYPE Mask */ + +#define ERRBNK_DEBR1_BANK_Pos 16U /*!< ERRBNK DEBR1: BANK Position */ +#define ERRBNK_DEBR1_BANK_Msk (0x1UL << ERRBNK_DEBR1_BANK_Pos) /*!< ERRBNK DEBR1: BANK Mask */ + +#define ERRBNK_DEBR1_LOCATION_Pos 2U /*!< ERRBNK DEBR1: LOCATION Position */ +#define ERRBNK_DEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR1_LOCATION_Pos) /*!< ERRBNK DEBR1: LOCATION Mask */ + +#define ERRBNK_DEBR1_LOCKED_Pos 1U /*!< ERRBNK DEBR1: LOCKED Position */ +#define ERRBNK_DEBR1_LOCKED_Msk (0x1UL << ERRBNK_DEBR1_LOCKED_Pos) /*!< ERRBNK DEBR1: LOCKED Mask */ + +#define ERRBNK_DEBR1_VALID_Pos 0U /*!< ERRBNK DEBR1: VALID Position */ +#define ERRBNK_DEBR1_VALID_Msk (0x1UL << /*ERRBNK_DEBR1_VALID_Pos*/) /*!< ERRBNK DEBR1: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 0 (TEBR0) Register Definitions */ +#define ERRBNK_TEBR0_SWDEF_Pos 30U /*!< ERRBNK TEBR0: SWDEF Position */ +#define ERRBNK_TEBR0_SWDEF_Msk (0x3UL << ERRBNK_TEBR0_SWDEF_Pos) /*!< ERRBNK TEBR0: SWDEF Mask */ + +#define ERRBNK_TEBR0_POISON_Pos 28U /*!< ERRBNK TEBR0: POISON Position */ +#define ERRBNK_TEBR0_POISON_Msk (0x1UL << ERRBNK_TEBR0_POISON_Pos) /*!< ERRBNK TEBR0: POISON Mask */ + +#define ERRBNK_TEBR0_TYPE_Pos 27U /*!< ERRBNK TEBR0: TYPE Position */ +#define ERRBNK_TEBR0_TYPE_Msk (0x1UL << ERRBNK_TEBR0_TYPE_Pos) /*!< ERRBNK TEBR0: TYPE Mask */ + +#define ERRBNK_TEBR0_BANK_Pos 24U /*!< ERRBNK TEBR0: BANK Position */ +#define ERRBNK_TEBR0_BANK_Msk (0x3UL << ERRBNK_TEBR0_BANK_Pos) /*!< ERRBNK TEBR0: BANK Mask */ + +#define ERRBNK_TEBR0_LOCATION_Pos 2U /*!< ERRBNK TEBR0: LOCATION Position */ +#define ERRBNK_TEBR0_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR0_LOCATION_Pos) /*!< ERRBNK TEBR0: LOCATION Mask */ + +#define ERRBNK_TEBR0_LOCKED_Pos 1U /*!< ERRBNK TEBR0: LOCKED Position */ +#define ERRBNK_TEBR0_LOCKED_Msk (0x1UL << ERRBNK_TEBR0_LOCKED_Pos) /*!< ERRBNK TEBR0: LOCKED Mask */ + +#define ERRBNK_TEBR0_VALID_Pos 0U /*!< ERRBNK TEBR0: VALID Position */ +#define ERRBNK_TEBR0_VALID_Msk (0x1UL << /*ERRBNK_TEBR0_VALID_Pos*/) /*!< ERRBNK TEBR0: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 1 (TEBR1) Register Definitions */ +#define ERRBNK_TEBR1_SWDEF_Pos 30U /*!< ERRBNK TEBR1: SWDEF Position */ +#define ERRBNK_TEBR1_SWDEF_Msk (0x3UL << ERRBNK_TEBR1_SWDEF_Pos) /*!< ERRBNK TEBR1: SWDEF Mask */ + +#define ERRBNK_TEBR1_POISON_Pos 28U /*!< ERRBNK TEBR1: POISON Position */ +#define ERRBNK_TEBR1_POISON_Msk (0x1UL << ERRBNK_TEBR1_POISON_Pos) /*!< ERRBNK TEBR1: POISON Mask */ + +#define ERRBNK_TEBR1_TYPE_Pos 27U /*!< ERRBNK TEBR1: TYPE Position */ +#define ERRBNK_TEBR1_TYPE_Msk (0x1UL << ERRBNK_TEBR1_TYPE_Pos) /*!< ERRBNK TEBR1: TYPE Mask */ + +#define ERRBNK_TEBR1_BANK_Pos 24U /*!< ERRBNK TEBR1: BANK Position */ +#define ERRBNK_TEBR1_BANK_Msk (0x3UL << ERRBNK_TEBR1_BANK_Pos) /*!< ERRBNK TEBR1: BANK Mask */ + +#define ERRBNK_TEBR1_LOCATION_Pos 2U /*!< ERRBNK TEBR1: LOCATION Position */ +#define ERRBNK_TEBR1_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR1_LOCATION_Pos) /*!< ERRBNK TEBR1: LOCATION Mask */ + +#define ERRBNK_TEBR1_LOCKED_Pos 1U /*!< ERRBNK TEBR1: LOCKED Position */ +#define ERRBNK_TEBR1_LOCKED_Msk (0x1UL << ERRBNK_TEBR1_LOCKED_Pos) /*!< ERRBNK TEBR1: LOCKED Mask */ + +#define ERRBNK_TEBR1_VALID_Pos 0U /*!< ERRBNK TEBR1: VALID Position */ +#define ERRBNK_TEBR1_VALID_Msk (0x1UL << /*ERRBNK_TEBR1_VALID_Pos*/) /*!< ERRBNK TEBR1: VALID Mask */ + +/*@}*/ /* end of group ErrBnk_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PrcCfgInf_Type Processor Configuration Information Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Processor Configuration Information Registerss (PRCCFGINF) + @{ + */ + +/** + \brief Structure type to access the Processor Configuration Information Registerss (PRCCFGINF). + */ +typedef struct +{ + __OM uint32_t CFGINFOSEL; /*!< Offset: 0x000 ( /W) Processor Configuration Information Selection Register */ + __IM uint32_t CFGINFORD; /*!< Offset: 0x004 (R/ ) Processor Configuration Information Read Data Register */ +} PrcCfgInf_Type; + +/* PRCCFGINF Processor Configuration Information Selection Register (CFGINFOSEL) Definitions */ + +/* PRCCFGINF Processor Configuration Information Read Data Register (CFGINFORD) Definitions */ + +/*@}*/ /* end of group PrcCfgInf_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup STL_Type Software Test Library Observation Registers + \brief Type definitions for the Software Test Library Observation Registerss (STL) + @{ + */ + +/** + \brief Structure type to access the Software Test Library Observation Registerss (STL). + */ +typedef struct +{ + __IM uint32_t STLNVICPENDOR; /*!< Offset: 0x000 (R/ ) NVIC Pending Priority Tree Register */ + __IM uint32_t STLNVICACTVOR; /*!< Offset: 0x004 (R/ ) NVIC Active Priority Tree Register */ + uint32_t RESERVED0[2U]; + __OM uint32_t STLIDMPUSR; /*!< Offset: 0x010 ( /W) MPU Sanple Register */ + __IM uint32_t STLIMPUOR; /*!< Offset: 0x014 (R/ ) MPU Region Hit Register */ + __IM uint32_t STLD0MPUOR; /*!< Offset: 0x018 (R/ ) MPU Memory Attributes Register 0 */ + __IM uint32_t STLD1MPUOR; /*!< Offset: 0x01C (R/ ) MPU Memory Attributes Register 1 */ + +} STL_Type; + +/* STL Software Test Library Observation Register (STLNVICPENDOR) Definitions */ +#define STL_STLNVICPENDOR_VALID_Pos 18U /*!< STL STLNVICPENDOR: VALID Position */ +#define STL_STLNVICPENDOR_VALID_Msk (0x1UL << STL_STLNVICPENDOR_VALID_Pos) /*!< STL STLNVICPENDOR: VALID Mask */ + +#define STL_STLNVICPENDOR_TARGET_Pos 17U /*!< STL STLNVICPENDOR: TARGET Position */ +#define STL_STLNVICPENDOR_TARGET_Msk (0x1UL << STL_STLNVICPENDOR_TARGET_Pos) /*!< STL STLNVICPENDOR: TARGET Mask */ + +#define STL_STLNVICPENDOR_PRIORITY_Pos 9U /*!< STL STLNVICPENDOR: PRIORITY Position */ +#define STL_STLNVICPENDOR_PRIORITY_Msk (0xFFUL << STL_STLNVICPENDOR_PRIORITY_Pos) /*!< STL STLNVICPENDOR: PRIORITY Mask */ + +#define STL_STLNVICPENDOR_INTNUM_Pos 0U /*!< STL STLNVICPENDOR: INTNUM Position */ +#define STL_STLNVICPENDOR_INTNUM_Msk (0x1FFUL /*<< STL_STLNVICPENDOR_INTNUM_Pos*/) /*!< STL STLNVICPENDOR: INTNUM Mask */ + +/* STL Software Test Library Observation Register (STLNVICACTVOR) Definitions */ +#define STL_STLNVICACTVOR_VALID_Pos 18U /*!< STL STLNVICACTVOR: VALID Position */ +#define STL_STLNVICACTVOR_VALID_Msk (0x1UL << STL_STLNVICACTVOR_VALID_Pos) /*!< STL STLNVICACTVOR: VALID Mask */ + +#define STL_STLNVICACTVOR_TARGET_Pos 17U /*!< STL STLNVICACTVOR: TARGET Position */ +#define STL_STLNVICACTVOR_TARGET_Msk (0x1UL << STL_STLNVICACTVOR_TARGET_Pos) /*!< STL STLNVICACTVOR: TARGET Mask */ + +#define STL_STLNVICACTVOR_PRIORITY_Pos 9U /*!< STL STLNVICACTVOR: PRIORITY Position */ +#define STL_STLNVICACTVOR_PRIORITY_Msk (0xFFUL << STL_STLNVICACTVOR_PRIORITY_Pos) /*!< STL STLNVICACTVOR: PRIORITY Mask */ + +#define STL_STLNVICACTVOR_INTNUM_Pos 0U /*!< STL STLNVICACTVOR: INTNUM Position */ +#define STL_STLNVICACTVOR_INTNUM_Msk (0x1FFUL /*<< STL_STLNVICACTVOR_INTNUM_Pos*/) /*!< STL STLNVICACTVOR: INTNUM Mask */ + +/* STL Software Test Library Observation Register (STLIDMPUSR) Definitions */ +#define STL_STLIDMPUSR_ADDR_Pos 5U /*!< STL STLIDMPUSR: ADDR Position */ +#define STL_STLIDMPUSR_ADDR_Msk (0x7FFFFFFUL << STL_STLIDMPUSR_ADDR_Pos) /*!< STL STLIDMPUSR: ADDR Mask */ + +#define STL_STLIDMPUSR_INSTR_Pos 2U /*!< STL STLIDMPUSR: INSTR Position */ +#define STL_STLIDMPUSR_INSTR_Msk (0x1UL << STL_STLIDMPUSR_INSTR_Pos) /*!< STL STLIDMPUSR: INSTR Mask */ + +#define STL_STLIDMPUSR_DATA_Pos 1U /*!< STL STLIDMPUSR: DATA Position */ +#define STL_STLIDMPUSR_DATA_Msk (0x1UL << STL_STLIDMPUSR_DATA_Pos) /*!< STL STLIDMPUSR: DATA Mask */ + +/* STL Software Test Library Observation Register (STLIMPUOR) Definitions */ +#define STL_STLIMPUOR_HITREGION_Pos 9U /*!< STL STLIMPUOR: HITREGION Position */ +#define STL_STLIMPUOR_HITREGION_Msk (0xFFUL << STL_STLIMPUOR_HITREGION_Pos) /*!< STL STLIMPUOR: HITREGION Mask */ + +#define STL_STLIMPUOR_ATTR_Pos 0U /*!< STL STLIMPUOR: ATTR Position */ +#define STL_STLIMPUOR_ATTR_Msk (0x1FFUL /*<< STL_STLIMPUOR_ATTR_Pos*/) /*!< STL STLIMPUOR: ATTR Mask */ + +/* STL Software Test Library Observation Register (STLD0MPUOR) Definitions */ +#define STL_STLD0MPUOR_HITREGION_Pos 9U /*!< STL STLD0MPUOR: HITREGION Position */ +#define STL_STLD0MPUOR_HITREGION_Msk (0xFFUL << STL_STLD0MPUOR_HITREGION_Pos) /*!< STL STLD0MPUOR: HITREGION Mask */ + +#define STL_STLD0MPUOR_ATTR_Pos 0U /*!< STL STLD0MPUOR: ATTR Position */ +#define STL_STLD0MPUOR_ATTR_Msk (0x1FFUL /*<< STL_STLD0MPUOR_ATTR_Pos*/) /*!< STL STLD0MPUOR: ATTR Mask */ + +/* STL Software Test Library Observation Register (STLD1MPUOR) Definitions */ +#define STL_STLD1MPUOR_HITREGION_Pos 9U /*!< STL STLD1MPUOR: HITREGION Position */ +#define STL_STLD1MPUOR_HITREGION_Msk (0xFFUL << STL_STLD1MPUOR_HITREGION_Pos) /*!< STL STLD1MPUOR: HITREGION Mask */ + +#define STL_STLD1MPUOR_ATTR_Pos 0U /*!< STL STLD1MPUOR: ATTR Position */ +#define STL_STLD1MPUOR_ATTR_Msk (0x1FFUL /*<< STL_STLD1MPUOR_ATTR_Pos*/) /*!< STL STLD1MPUOR: ATTR Mask */ + +/*@}*/ /* end of group STL_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFmt_Pos 0U /*!< TPI FFCR: EnFmt Position */ +#define TPI_FFCR_EnFmt_Msk (0x3UL << /*TPI_FFCR_EnFmt_Pos*/) /*!< TPI FFCR: EnFmt Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_PMU Performance Monitoring Unit (PMU) + \brief Type definitions for the Performance Monitoring Unit (PMU) + @{ + */ + +/** + \brief Structure type to access the Performance Monitoring Unit (PMU). + */ +typedef struct +{ + __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x0 (R/W) PMU Event Counter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCNTR; /*!< Offset: 0x7C (R/W) PMU Cycle Counter Register */ + uint32_t RESERVED1[224]; + __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x400 (R/W) PMU Event Type and Filter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCFILTR; /*!< Offset: 0x47C (R/W) PMU Cycle Counter Filter Register */ + uint32_t RESERVED3[480]; + __IOM uint32_t CNTENSET; /*!< Offset: 0xC00 (R/W) PMU Count Enable Set Register */ + uint32_t RESERVED4[7]; + __IOM uint32_t CNTENCLR; /*!< Offset: 0xC20 (R/W) PMU Count Enable Clear Register */ + uint32_t RESERVED5[7]; + __IOM uint32_t INTENSET; /*!< Offset: 0xC40 (R/W) PMU Interrupt Enable Set Register */ + uint32_t RESERVED6[7]; + __IOM uint32_t INTENCLR; /*!< Offset: 0xC60 (R/W) PMU Interrupt Enable Clear Register */ + uint32_t RESERVED7[7]; + __IOM uint32_t OVSCLR; /*!< Offset: 0xC80 (R/W) PMU Overflow Flag Status Clear Register */ + uint32_t RESERVED8[7]; + __IOM uint32_t SWINC; /*!< Offset: 0xCA0 (R/W) PMU Software Increment Register */ + uint32_t RESERVED9[7]; + __IOM uint32_t OVSSET; /*!< Offset: 0xCC0 (R/W) PMU Overflow Flag Status Set Register */ + uint32_t RESERVED10[79]; + __IOM uint32_t TYPE; /*!< Offset: 0xE00 (R/W) PMU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0xE04 (R/W) PMU Control Register */ + uint32_t RESERVED11[108]; + __IOM uint32_t AUTHSTATUS; /*!< Offset: 0xFB8 (R/W) PMU Authentication Status Register */ + __IOM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/W) PMU Device Architecture Register */ + uint32_t RESERVED12[3]; + __IOM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/W) PMU Device Type Register */ + __IOM uint32_t PIDR4; /*!< Offset: 0xFD0 (R/W) PMU Peripheral Identification Register 4 */ + uint32_t RESERVED13[3]; + __IOM uint32_t PIDR0; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 0 */ + __IOM uint32_t PIDR1; /*!< Offset: 0xFE4 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE8 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFEC (R/W) PMU Peripheral Identification Register 3 */ + __IOM uint32_t CIDR0; /*!< Offset: 0xFF0 (R/W) PMU Component Identification Register 0 */ + __IOM uint32_t CIDR1; /*!< Offset: 0xFF4 (R/W) PMU Component Identification Register 1 */ + __IOM uint32_t CIDR2; /*!< Offset: 0xFF8 (R/W) PMU Component Identification Register 2 */ + __IOM uint32_t CIDR3; /*!< Offset: 0xFFC (R/W) PMU Component Identification Register 3 */ +} PMU_Type; + +/** \brief PMU Event Counter Registers (0-30) Definitions */ + +#define PMU_EVCNTR_CNT_Pos 0U /*!< PMU EVCNTR: Counter Position */ +#define PMU_EVCNTR_CNT_Msk (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/) /*!< PMU EVCNTR: Counter Mask */ + +/** \brief PMU Event Type and Filter Registers (0-30) Definitions */ + +#define PMU_EVTYPER_EVENTTOCNT_Pos 0U /*!< PMU EVTYPER: Event to Count Position */ +#define PMU_EVTYPER_EVENTTOCNT_Msk (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/) /*!< PMU EVTYPER: Event to Count Mask */ + +/** \brief PMU Count Enable Set Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */ +#define PMU_CNTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/) /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */ + +#define PMU_CNTENSET_CNT1_ENABLE_Pos 1U /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */ +#define PMU_CNTENSET_CNT1_ENABLE_Msk (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */ + +#define PMU_CNTENSET_CNT2_ENABLE_Pos 2U /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */ +#define PMU_CNTENSET_CNT2_ENABLE_Msk (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */ + +#define PMU_CNTENSET_CNT3_ENABLE_Pos 3U /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */ +#define PMU_CNTENSET_CNT3_ENABLE_Msk (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */ + +#define PMU_CNTENSET_CNT4_ENABLE_Pos 4U /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */ +#define PMU_CNTENSET_CNT4_ENABLE_Msk (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */ + +#define PMU_CNTENSET_CNT5_ENABLE_Pos 5U /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */ +#define PMU_CNTENSET_CNT5_ENABLE_Msk (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */ + +#define PMU_CNTENSET_CNT6_ENABLE_Pos 6U /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */ +#define PMU_CNTENSET_CNT6_ENABLE_Msk (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */ + +#define PMU_CNTENSET_CNT7_ENABLE_Pos 7U /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */ +#define PMU_CNTENSET_CNT7_ENABLE_Msk (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */ + +#define PMU_CNTENSET_CNT8_ENABLE_Pos 8U /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */ +#define PMU_CNTENSET_CNT8_ENABLE_Msk (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */ + +#define PMU_CNTENSET_CNT9_ENABLE_Pos 9U /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */ +#define PMU_CNTENSET_CNT9_ENABLE_Msk (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */ + +#define PMU_CNTENSET_CNT10_ENABLE_Pos 10U /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */ +#define PMU_CNTENSET_CNT10_ENABLE_Msk (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */ + +#define PMU_CNTENSET_CNT11_ENABLE_Pos 11U /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */ +#define PMU_CNTENSET_CNT11_ENABLE_Msk (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */ + +#define PMU_CNTENSET_CNT12_ENABLE_Pos 12U /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */ +#define PMU_CNTENSET_CNT12_ENABLE_Msk (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */ + +#define PMU_CNTENSET_CNT13_ENABLE_Pos 13U /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */ +#define PMU_CNTENSET_CNT13_ENABLE_Msk (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */ + +#define PMU_CNTENSET_CNT14_ENABLE_Pos 14U /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */ +#define PMU_CNTENSET_CNT14_ENABLE_Msk (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */ + +#define PMU_CNTENSET_CNT15_ENABLE_Pos 15U /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */ +#define PMU_CNTENSET_CNT15_ENABLE_Msk (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */ + +#define PMU_CNTENSET_CNT16_ENABLE_Pos 16U /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */ +#define PMU_CNTENSET_CNT16_ENABLE_Msk (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */ + +#define PMU_CNTENSET_CNT17_ENABLE_Pos 17U /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */ +#define PMU_CNTENSET_CNT17_ENABLE_Msk (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */ + +#define PMU_CNTENSET_CNT18_ENABLE_Pos 18U /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */ +#define PMU_CNTENSET_CNT18_ENABLE_Msk (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */ + +#define PMU_CNTENSET_CNT19_ENABLE_Pos 19U /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */ +#define PMU_CNTENSET_CNT19_ENABLE_Msk (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */ + +#define PMU_CNTENSET_CNT20_ENABLE_Pos 20U /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */ +#define PMU_CNTENSET_CNT20_ENABLE_Msk (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */ + +#define PMU_CNTENSET_CNT21_ENABLE_Pos 21U /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */ +#define PMU_CNTENSET_CNT21_ENABLE_Msk (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */ + +#define PMU_CNTENSET_CNT22_ENABLE_Pos 22U /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */ +#define PMU_CNTENSET_CNT22_ENABLE_Msk (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */ + +#define PMU_CNTENSET_CNT23_ENABLE_Pos 23U /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */ +#define PMU_CNTENSET_CNT23_ENABLE_Msk (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */ + +#define PMU_CNTENSET_CNT24_ENABLE_Pos 24U /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */ +#define PMU_CNTENSET_CNT24_ENABLE_Msk (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */ + +#define PMU_CNTENSET_CNT25_ENABLE_Pos 25U /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */ +#define PMU_CNTENSET_CNT25_ENABLE_Msk (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */ + +#define PMU_CNTENSET_CNT26_ENABLE_Pos 26U /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */ +#define PMU_CNTENSET_CNT26_ENABLE_Msk (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */ + +#define PMU_CNTENSET_CNT27_ENABLE_Pos 27U /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */ +#define PMU_CNTENSET_CNT27_ENABLE_Msk (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */ + +#define PMU_CNTENSET_CNT28_ENABLE_Pos 28U /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */ +#define PMU_CNTENSET_CNT28_ENABLE_Msk (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */ + +#define PMU_CNTENSET_CNT29_ENABLE_Pos 29U /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */ +#define PMU_CNTENSET_CNT29_ENABLE_Msk (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */ + +#define PMU_CNTENSET_CNT30_ENABLE_Pos 30U /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */ +#define PMU_CNTENSET_CNT30_ENABLE_Msk (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */ + +#define PMU_CNTENSET_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENSET: Cycle Counter Enable Set Position */ +#define PMU_CNTENSET_CCNTR_ENABLE_Msk (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos) /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */ + +/** \brief PMU Count Enable Clear Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */ +#define PMU_CNTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */ +#define PMU_CNTENCLR_CNT1_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */ + +#define PMU_CNTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */ +#define PMU_CNTENCLR_CNT2_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */ +#define PMU_CNTENCLR_CNT3_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */ +#define PMU_CNTENCLR_CNT4_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */ +#define PMU_CNTENCLR_CNT5_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */ +#define PMU_CNTENCLR_CNT6_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */ +#define PMU_CNTENCLR_CNT7_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */ +#define PMU_CNTENCLR_CNT8_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */ +#define PMU_CNTENCLR_CNT9_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */ +#define PMU_CNTENCLR_CNT10_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */ +#define PMU_CNTENCLR_CNT11_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */ +#define PMU_CNTENCLR_CNT12_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */ +#define PMU_CNTENCLR_CNT13_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */ +#define PMU_CNTENCLR_CNT14_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */ +#define PMU_CNTENCLR_CNT15_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */ +#define PMU_CNTENCLR_CNT16_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */ +#define PMU_CNTENCLR_CNT17_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */ +#define PMU_CNTENCLR_CNT18_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */ +#define PMU_CNTENCLR_CNT19_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */ +#define PMU_CNTENCLR_CNT20_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */ +#define PMU_CNTENCLR_CNT21_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */ +#define PMU_CNTENCLR_CNT22_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */ +#define PMU_CNTENCLR_CNT23_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */ +#define PMU_CNTENCLR_CNT24_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */ +#define PMU_CNTENCLR_CNT25_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */ +#define PMU_CNTENCLR_CNT26_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */ +#define PMU_CNTENCLR_CNT27_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */ +#define PMU_CNTENCLR_CNT28_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */ +#define PMU_CNTENCLR_CNT29_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */ +#define PMU_CNTENCLR_CNT30_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */ + +#define PMU_CNTENCLR_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */ +#define PMU_CNTENCLR_CCNTR_ENABLE_Msk (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos) /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */ + +/** \brief PMU Interrupt Enable Set Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/) /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT1_ENABLE_Pos 1U /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT1_ENABLE_Msk (1UL << PMU_INTENSET_CNT1_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT2_ENABLE_Pos 2U /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT2_ENABLE_Msk (1UL << PMU_INTENSET_CNT2_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT3_ENABLE_Pos 3U /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT3_ENABLE_Msk (1UL << PMU_INTENSET_CNT3_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT4_ENABLE_Pos 4U /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT4_ENABLE_Msk (1UL << PMU_INTENSET_CNT4_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT5_ENABLE_Pos 5U /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT5_ENABLE_Msk (1UL << PMU_INTENSET_CNT5_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT6_ENABLE_Pos 6U /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT6_ENABLE_Msk (1UL << PMU_INTENSET_CNT6_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT7_ENABLE_Pos 7U /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT7_ENABLE_Msk (1UL << PMU_INTENSET_CNT7_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT8_ENABLE_Pos 8U /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT8_ENABLE_Msk (1UL << PMU_INTENSET_CNT8_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT9_ENABLE_Pos 9U /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT9_ENABLE_Msk (1UL << PMU_INTENSET_CNT9_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT10_ENABLE_Pos 10U /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT10_ENABLE_Msk (1UL << PMU_INTENSET_CNT10_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT11_ENABLE_Pos 11U /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT11_ENABLE_Msk (1UL << PMU_INTENSET_CNT11_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT12_ENABLE_Pos 12U /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT12_ENABLE_Msk (1UL << PMU_INTENSET_CNT12_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT13_ENABLE_Pos 13U /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT13_ENABLE_Msk (1UL << PMU_INTENSET_CNT13_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT14_ENABLE_Pos 14U /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT14_ENABLE_Msk (1UL << PMU_INTENSET_CNT14_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT15_ENABLE_Pos 15U /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT15_ENABLE_Msk (1UL << PMU_INTENSET_CNT15_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT16_ENABLE_Pos 16U /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT16_ENABLE_Msk (1UL << PMU_INTENSET_CNT16_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT17_ENABLE_Pos 17U /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT17_ENABLE_Msk (1UL << PMU_INTENSET_CNT17_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT18_ENABLE_Pos 18U /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT18_ENABLE_Msk (1UL << PMU_INTENSET_CNT18_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT19_ENABLE_Pos 19U /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT19_ENABLE_Msk (1UL << PMU_INTENSET_CNT19_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT20_ENABLE_Pos 20U /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT20_ENABLE_Msk (1UL << PMU_INTENSET_CNT20_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT21_ENABLE_Pos 21U /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT21_ENABLE_Msk (1UL << PMU_INTENSET_CNT21_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT22_ENABLE_Pos 22U /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT22_ENABLE_Msk (1UL << PMU_INTENSET_CNT22_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT23_ENABLE_Pos 23U /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT23_ENABLE_Msk (1UL << PMU_INTENSET_CNT23_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT24_ENABLE_Pos 24U /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT24_ENABLE_Msk (1UL << PMU_INTENSET_CNT24_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT25_ENABLE_Pos 25U /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT25_ENABLE_Msk (1UL << PMU_INTENSET_CNT25_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT26_ENABLE_Pos 26U /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT26_ENABLE_Msk (1UL << PMU_INTENSET_CNT26_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT27_ENABLE_Pos 27U /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT27_ENABLE_Msk (1UL << PMU_INTENSET_CNT27_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT28_ENABLE_Pos 28U /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT28_ENABLE_Msk (1UL << PMU_INTENSET_CNT28_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT29_ENABLE_Pos 29U /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT29_ENABLE_Msk (1UL << PMU_INTENSET_CNT29_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT30_ENABLE_Pos 30U /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT30_ENABLE_Msk (1UL << PMU_INTENSET_CNT30_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */ +#define PMU_INTENSET_CCYCNT_ENABLE_Msk (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos) /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */ + +/** \brief PMU Interrupt Enable Clear Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT1_ENABLE_Msk (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */ + +#define PMU_INTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT2_ENABLE_Msk (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT3_ENABLE_Msk (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT4_ENABLE_Msk (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT5_ENABLE_Msk (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT6_ENABLE_Msk (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT7_ENABLE_Msk (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT8_ENABLE_Msk (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT9_ENABLE_Msk (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT10_ENABLE_Msk (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT11_ENABLE_Msk (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT12_ENABLE_Msk (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT13_ENABLE_Msk (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT14_ENABLE_Msk (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT15_ENABLE_Msk (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT16_ENABLE_Msk (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT17_ENABLE_Msk (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT18_ENABLE_Msk (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT19_ENABLE_Msk (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT20_ENABLE_Msk (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT21_ENABLE_Msk (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT22_ENABLE_Msk (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT23_ENABLE_Msk (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT24_ENABLE_Msk (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT25_ENABLE_Msk (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT26_ENABLE_Msk (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT27_ENABLE_Msk (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT28_ENABLE_Msk (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT29_ENABLE_Msk (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT30_ENABLE_Msk (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CYCCNT_ENABLE_Msk (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos) /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */ + +/** \brief PMU Overflow Flag Status Set Register Definitions */ + +#define PMU_OVSSET_CNT0_STATUS_Pos 0U /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */ +#define PMU_OVSSET_CNT0_STATUS_Msk (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/) /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */ + +#define PMU_OVSSET_CNT1_STATUS_Pos 1U /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */ +#define PMU_OVSSET_CNT1_STATUS_Msk (1UL << PMU_OVSSET_CNT1_STATUS_Pos) /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */ + +#define PMU_OVSSET_CNT2_STATUS_Pos 2U /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */ +#define PMU_OVSSET_CNT2_STATUS_Msk (1UL << PMU_OVSSET_CNT2_STATUS_Pos) /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */ + +#define PMU_OVSSET_CNT3_STATUS_Pos 3U /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */ +#define PMU_OVSSET_CNT3_STATUS_Msk (1UL << PMU_OVSSET_CNT3_STATUS_Pos) /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */ + +#define PMU_OVSSET_CNT4_STATUS_Pos 4U /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */ +#define PMU_OVSSET_CNT4_STATUS_Msk (1UL << PMU_OVSSET_CNT4_STATUS_Pos) /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */ + +#define PMU_OVSSET_CNT5_STATUS_Pos 5U /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */ +#define PMU_OVSSET_CNT5_STATUS_Msk (1UL << PMU_OVSSET_CNT5_STATUS_Pos) /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */ + +#define PMU_OVSSET_CNT6_STATUS_Pos 6U /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */ +#define PMU_OVSSET_CNT6_STATUS_Msk (1UL << PMU_OVSSET_CNT6_STATUS_Pos) /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */ + +#define PMU_OVSSET_CNT7_STATUS_Pos 7U /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */ +#define PMU_OVSSET_CNT7_STATUS_Msk (1UL << PMU_OVSSET_CNT7_STATUS_Pos) /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */ + +#define PMU_OVSSET_CNT8_STATUS_Pos 8U /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */ +#define PMU_OVSSET_CNT8_STATUS_Msk (1UL << PMU_OVSSET_CNT8_STATUS_Pos) /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */ + +#define PMU_OVSSET_CNT9_STATUS_Pos 9U /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */ +#define PMU_OVSSET_CNT9_STATUS_Msk (1UL << PMU_OVSSET_CNT9_STATUS_Pos) /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */ + +#define PMU_OVSSET_CNT10_STATUS_Pos 10U /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */ +#define PMU_OVSSET_CNT10_STATUS_Msk (1UL << PMU_OVSSET_CNT10_STATUS_Pos) /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */ + +#define PMU_OVSSET_CNT11_STATUS_Pos 11U /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */ +#define PMU_OVSSET_CNT11_STATUS_Msk (1UL << PMU_OVSSET_CNT11_STATUS_Pos) /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */ + +#define PMU_OVSSET_CNT12_STATUS_Pos 12U /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */ +#define PMU_OVSSET_CNT12_STATUS_Msk (1UL << PMU_OVSSET_CNT12_STATUS_Pos) /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */ + +#define PMU_OVSSET_CNT13_STATUS_Pos 13U /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */ +#define PMU_OVSSET_CNT13_STATUS_Msk (1UL << PMU_OVSSET_CNT13_STATUS_Pos) /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */ + +#define PMU_OVSSET_CNT14_STATUS_Pos 14U /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */ +#define PMU_OVSSET_CNT14_STATUS_Msk (1UL << PMU_OVSSET_CNT14_STATUS_Pos) /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */ + +#define PMU_OVSSET_CNT15_STATUS_Pos 15U /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */ +#define PMU_OVSSET_CNT15_STATUS_Msk (1UL << PMU_OVSSET_CNT15_STATUS_Pos) /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */ + +#define PMU_OVSSET_CNT16_STATUS_Pos 16U /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */ +#define PMU_OVSSET_CNT16_STATUS_Msk (1UL << PMU_OVSSET_CNT16_STATUS_Pos) /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */ + +#define PMU_OVSSET_CNT17_STATUS_Pos 17U /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */ +#define PMU_OVSSET_CNT17_STATUS_Msk (1UL << PMU_OVSSET_CNT17_STATUS_Pos) /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */ + +#define PMU_OVSSET_CNT18_STATUS_Pos 18U /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */ +#define PMU_OVSSET_CNT18_STATUS_Msk (1UL << PMU_OVSSET_CNT18_STATUS_Pos) /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */ + +#define PMU_OVSSET_CNT19_STATUS_Pos 19U /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */ +#define PMU_OVSSET_CNT19_STATUS_Msk (1UL << PMU_OVSSET_CNT19_STATUS_Pos) /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */ + +#define PMU_OVSSET_CNT20_STATUS_Pos 20U /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */ +#define PMU_OVSSET_CNT20_STATUS_Msk (1UL << PMU_OVSSET_CNT20_STATUS_Pos) /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */ + +#define PMU_OVSSET_CNT21_STATUS_Pos 21U /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */ +#define PMU_OVSSET_CNT21_STATUS_Msk (1UL << PMU_OVSSET_CNT21_STATUS_Pos) /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */ + +#define PMU_OVSSET_CNT22_STATUS_Pos 22U /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */ +#define PMU_OVSSET_CNT22_STATUS_Msk (1UL << PMU_OVSSET_CNT22_STATUS_Pos) /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */ + +#define PMU_OVSSET_CNT23_STATUS_Pos 23U /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */ +#define PMU_OVSSET_CNT23_STATUS_Msk (1UL << PMU_OVSSET_CNT23_STATUS_Pos) /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */ + +#define PMU_OVSSET_CNT24_STATUS_Pos 24U /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */ +#define PMU_OVSSET_CNT24_STATUS_Msk (1UL << PMU_OVSSET_CNT24_STATUS_Pos) /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */ + +#define PMU_OVSSET_CNT25_STATUS_Pos 25U /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */ +#define PMU_OVSSET_CNT25_STATUS_Msk (1UL << PMU_OVSSET_CNT25_STATUS_Pos) /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */ + +#define PMU_OVSSET_CNT26_STATUS_Pos 26U /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */ +#define PMU_OVSSET_CNT26_STATUS_Msk (1UL << PMU_OVSSET_CNT26_STATUS_Pos) /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */ + +#define PMU_OVSSET_CNT27_STATUS_Pos 27U /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */ +#define PMU_OVSSET_CNT27_STATUS_Msk (1UL << PMU_OVSSET_CNT27_STATUS_Pos) /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */ + +#define PMU_OVSSET_CNT28_STATUS_Pos 28U /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */ +#define PMU_OVSSET_CNT28_STATUS_Msk (1UL << PMU_OVSSET_CNT28_STATUS_Pos) /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */ + +#define PMU_OVSSET_CNT29_STATUS_Pos 29U /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */ +#define PMU_OVSSET_CNT29_STATUS_Msk (1UL << PMU_OVSSET_CNT29_STATUS_Pos) /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */ + +#define PMU_OVSSET_CNT30_STATUS_Pos 30U /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */ +#define PMU_OVSSET_CNT30_STATUS_Msk (1UL << PMU_OVSSET_CNT30_STATUS_Pos) /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */ + +#define PMU_OVSSET_CYCCNT_STATUS_Pos 31U /*!< PMU OVSSET: Cycle Counter Overflow Set Position */ +#define PMU_OVSSET_CYCCNT_STATUS_Msk (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos) /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */ + +/** \brief PMU Overflow Flag Status Clear Register Definitions */ + +#define PMU_OVSCLR_CNT0_STATUS_Pos 0U /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */ +#define PMU_OVSCLR_CNT0_STATUS_Msk (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/) /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT1_STATUS_Pos 1U /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */ +#define PMU_OVSCLR_CNT1_STATUS_Msk (1UL << PMU_OVSCLR_CNT1_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */ + +#define PMU_OVSCLR_CNT2_STATUS_Pos 2U /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */ +#define PMU_OVSCLR_CNT2_STATUS_Msk (1UL << PMU_OVSCLR_CNT2_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT3_STATUS_Pos 3U /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */ +#define PMU_OVSCLR_CNT3_STATUS_Msk (1UL << PMU_OVSCLR_CNT3_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT4_STATUS_Pos 4U /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */ +#define PMU_OVSCLR_CNT4_STATUS_Msk (1UL << PMU_OVSCLR_CNT4_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT5_STATUS_Pos 5U /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */ +#define PMU_OVSCLR_CNT5_STATUS_Msk (1UL << PMU_OVSCLR_CNT5_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT6_STATUS_Pos 6U /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */ +#define PMU_OVSCLR_CNT6_STATUS_Msk (1UL << PMU_OVSCLR_CNT6_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT7_STATUS_Pos 7U /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */ +#define PMU_OVSCLR_CNT7_STATUS_Msk (1UL << PMU_OVSCLR_CNT7_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT8_STATUS_Pos 8U /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */ +#define PMU_OVSCLR_CNT8_STATUS_Msk (1UL << PMU_OVSCLR_CNT8_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT9_STATUS_Pos 9U /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */ +#define PMU_OVSCLR_CNT9_STATUS_Msk (1UL << PMU_OVSCLR_CNT9_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT10_STATUS_Pos 10U /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */ +#define PMU_OVSCLR_CNT10_STATUS_Msk (1UL << PMU_OVSCLR_CNT10_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT11_STATUS_Pos 11U /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */ +#define PMU_OVSCLR_CNT11_STATUS_Msk (1UL << PMU_OVSCLR_CNT11_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT12_STATUS_Pos 12U /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */ +#define PMU_OVSCLR_CNT12_STATUS_Msk (1UL << PMU_OVSCLR_CNT12_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT13_STATUS_Pos 13U /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */ +#define PMU_OVSCLR_CNT13_STATUS_Msk (1UL << PMU_OVSCLR_CNT13_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT14_STATUS_Pos 14U /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */ +#define PMU_OVSCLR_CNT14_STATUS_Msk (1UL << PMU_OVSCLR_CNT14_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT15_STATUS_Pos 15U /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */ +#define PMU_OVSCLR_CNT15_STATUS_Msk (1UL << PMU_OVSCLR_CNT15_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT16_STATUS_Pos 16U /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */ +#define PMU_OVSCLR_CNT16_STATUS_Msk (1UL << PMU_OVSCLR_CNT16_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT17_STATUS_Pos 17U /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */ +#define PMU_OVSCLR_CNT17_STATUS_Msk (1UL << PMU_OVSCLR_CNT17_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT18_STATUS_Pos 18U /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */ +#define PMU_OVSCLR_CNT18_STATUS_Msk (1UL << PMU_OVSCLR_CNT18_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT19_STATUS_Pos 19U /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */ +#define PMU_OVSCLR_CNT19_STATUS_Msk (1UL << PMU_OVSCLR_CNT19_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT20_STATUS_Pos 20U /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */ +#define PMU_OVSCLR_CNT20_STATUS_Msk (1UL << PMU_OVSCLR_CNT20_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT21_STATUS_Pos 21U /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */ +#define PMU_OVSCLR_CNT21_STATUS_Msk (1UL << PMU_OVSCLR_CNT21_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT22_STATUS_Pos 22U /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */ +#define PMU_OVSCLR_CNT22_STATUS_Msk (1UL << PMU_OVSCLR_CNT22_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT23_STATUS_Pos 23U /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */ +#define PMU_OVSCLR_CNT23_STATUS_Msk (1UL << PMU_OVSCLR_CNT23_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT24_STATUS_Pos 24U /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */ +#define PMU_OVSCLR_CNT24_STATUS_Msk (1UL << PMU_OVSCLR_CNT24_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT25_STATUS_Pos 25U /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */ +#define PMU_OVSCLR_CNT25_STATUS_Msk (1UL << PMU_OVSCLR_CNT25_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT26_STATUS_Pos 26U /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */ +#define PMU_OVSCLR_CNT26_STATUS_Msk (1UL << PMU_OVSCLR_CNT26_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT27_STATUS_Pos 27U /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */ +#define PMU_OVSCLR_CNT27_STATUS_Msk (1UL << PMU_OVSCLR_CNT27_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT28_STATUS_Pos 28U /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */ +#define PMU_OVSCLR_CNT28_STATUS_Msk (1UL << PMU_OVSCLR_CNT28_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT29_STATUS_Pos 29U /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */ +#define PMU_OVSCLR_CNT29_STATUS_Msk (1UL << PMU_OVSCLR_CNT29_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT30_STATUS_Pos 30U /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */ +#define PMU_OVSCLR_CNT30_STATUS_Msk (1UL << PMU_OVSCLR_CNT30_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */ + +#define PMU_OVSCLR_CYCCNT_STATUS_Pos 31U /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */ +#define PMU_OVSCLR_CYCCNT_STATUS_Msk (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos) /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */ + +/** \brief PMU Software Increment Counter */ + +#define PMU_SWINC_CNT0_Pos 0U /*!< PMU SWINC: Event Counter 0 Software Increment Position */ +#define PMU_SWINC_CNT0_Msk (1UL /*<< PMU_SWINC_CNT0_Pos */) /*!< PMU SWINC: Event Counter 0 Software Increment Mask */ + +#define PMU_SWINC_CNT1_Pos 1U /*!< PMU SWINC: Event Counter 1 Software Increment Position */ +#define PMU_SWINC_CNT1_Msk (1UL << PMU_SWINC_CNT1_Pos) /*!< PMU SWINC: Event Counter 1 Software Increment Mask */ + +#define PMU_SWINC_CNT2_Pos 2U /*!< PMU SWINC: Event Counter 2 Software Increment Position */ +#define PMU_SWINC_CNT2_Msk (1UL << PMU_SWINC_CNT2_Pos) /*!< PMU SWINC: Event Counter 2 Software Increment Mask */ + +#define PMU_SWINC_CNT3_Pos 3U /*!< PMU SWINC: Event Counter 3 Software Increment Position */ +#define PMU_SWINC_CNT3_Msk (1UL << PMU_SWINC_CNT3_Pos) /*!< PMU SWINC: Event Counter 3 Software Increment Mask */ + +#define PMU_SWINC_CNT4_Pos 4U /*!< PMU SWINC: Event Counter 4 Software Increment Position */ +#define PMU_SWINC_CNT4_Msk (1UL << PMU_SWINC_CNT4_Pos) /*!< PMU SWINC: Event Counter 4 Software Increment Mask */ + +#define PMU_SWINC_CNT5_Pos 5U /*!< PMU SWINC: Event Counter 5 Software Increment Position */ +#define PMU_SWINC_CNT5_Msk (1UL << PMU_SWINC_CNT5_Pos) /*!< PMU SWINC: Event Counter 5 Software Increment Mask */ + +#define PMU_SWINC_CNT6_Pos 6U /*!< PMU SWINC: Event Counter 6 Software Increment Position */ +#define PMU_SWINC_CNT6_Msk (1UL << PMU_SWINC_CNT6_Pos) /*!< PMU SWINC: Event Counter 6 Software Increment Mask */ + +#define PMU_SWINC_CNT7_Pos 7U /*!< PMU SWINC: Event Counter 7 Software Increment Position */ +#define PMU_SWINC_CNT7_Msk (1UL << PMU_SWINC_CNT7_Pos) /*!< PMU SWINC: Event Counter 7 Software Increment Mask */ + +#define PMU_SWINC_CNT8_Pos 8U /*!< PMU SWINC: Event Counter 8 Software Increment Position */ +#define PMU_SWINC_CNT8_Msk (1UL << PMU_SWINC_CNT8_Pos) /*!< PMU SWINC: Event Counter 8 Software Increment Mask */ + +#define PMU_SWINC_CNT9_Pos 9U /*!< PMU SWINC: Event Counter 9 Software Increment Position */ +#define PMU_SWINC_CNT9_Msk (1UL << PMU_SWINC_CNT9_Pos) /*!< PMU SWINC: Event Counter 9 Software Increment Mask */ + +#define PMU_SWINC_CNT10_Pos 10U /*!< PMU SWINC: Event Counter 10 Software Increment Position */ +#define PMU_SWINC_CNT10_Msk (1UL << PMU_SWINC_CNT10_Pos) /*!< PMU SWINC: Event Counter 10 Software Increment Mask */ + +#define PMU_SWINC_CNT11_Pos 11U /*!< PMU SWINC: Event Counter 11 Software Increment Position */ +#define PMU_SWINC_CNT11_Msk (1UL << PMU_SWINC_CNT11_Pos) /*!< PMU SWINC: Event Counter 11 Software Increment Mask */ + +#define PMU_SWINC_CNT12_Pos 12U /*!< PMU SWINC: Event Counter 12 Software Increment Position */ +#define PMU_SWINC_CNT12_Msk (1UL << PMU_SWINC_CNT12_Pos) /*!< PMU SWINC: Event Counter 12 Software Increment Mask */ + +#define PMU_SWINC_CNT13_Pos 13U /*!< PMU SWINC: Event Counter 13 Software Increment Position */ +#define PMU_SWINC_CNT13_Msk (1UL << PMU_SWINC_CNT13_Pos) /*!< PMU SWINC: Event Counter 13 Software Increment Mask */ + +#define PMU_SWINC_CNT14_Pos 14U /*!< PMU SWINC: Event Counter 14 Software Increment Position */ +#define PMU_SWINC_CNT14_Msk (1UL << PMU_SWINC_CNT14_Pos) /*!< PMU SWINC: Event Counter 14 Software Increment Mask */ + +#define PMU_SWINC_CNT15_Pos 15U /*!< PMU SWINC: Event Counter 15 Software Increment Position */ +#define PMU_SWINC_CNT15_Msk (1UL << PMU_SWINC_CNT15_Pos) /*!< PMU SWINC: Event Counter 15 Software Increment Mask */ + +#define PMU_SWINC_CNT16_Pos 16U /*!< PMU SWINC: Event Counter 16 Software Increment Position */ +#define PMU_SWINC_CNT16_Msk (1UL << PMU_SWINC_CNT16_Pos) /*!< PMU SWINC: Event Counter 16 Software Increment Mask */ + +#define PMU_SWINC_CNT17_Pos 17U /*!< PMU SWINC: Event Counter 17 Software Increment Position */ +#define PMU_SWINC_CNT17_Msk (1UL << PMU_SWINC_CNT17_Pos) /*!< PMU SWINC: Event Counter 17 Software Increment Mask */ + +#define PMU_SWINC_CNT18_Pos 18U /*!< PMU SWINC: Event Counter 18 Software Increment Position */ +#define PMU_SWINC_CNT18_Msk (1UL << PMU_SWINC_CNT18_Pos) /*!< PMU SWINC: Event Counter 18 Software Increment Mask */ + +#define PMU_SWINC_CNT19_Pos 19U /*!< PMU SWINC: Event Counter 19 Software Increment Position */ +#define PMU_SWINC_CNT19_Msk (1UL << PMU_SWINC_CNT19_Pos) /*!< PMU SWINC: Event Counter 19 Software Increment Mask */ + +#define PMU_SWINC_CNT20_Pos 20U /*!< PMU SWINC: Event Counter 20 Software Increment Position */ +#define PMU_SWINC_CNT20_Msk (1UL << PMU_SWINC_CNT20_Pos) /*!< PMU SWINC: Event Counter 20 Software Increment Mask */ + +#define PMU_SWINC_CNT21_Pos 21U /*!< PMU SWINC: Event Counter 21 Software Increment Position */ +#define PMU_SWINC_CNT21_Msk (1UL << PMU_SWINC_CNT21_Pos) /*!< PMU SWINC: Event Counter 21 Software Increment Mask */ + +#define PMU_SWINC_CNT22_Pos 22U /*!< PMU SWINC: Event Counter 22 Software Increment Position */ +#define PMU_SWINC_CNT22_Msk (1UL << PMU_SWINC_CNT22_Pos) /*!< PMU SWINC: Event Counter 22 Software Increment Mask */ + +#define PMU_SWINC_CNT23_Pos 23U /*!< PMU SWINC: Event Counter 23 Software Increment Position */ +#define PMU_SWINC_CNT23_Msk (1UL << PMU_SWINC_CNT23_Pos) /*!< PMU SWINC: Event Counter 23 Software Increment Mask */ + +#define PMU_SWINC_CNT24_Pos 24U /*!< PMU SWINC: Event Counter 24 Software Increment Position */ +#define PMU_SWINC_CNT24_Msk (1UL << PMU_SWINC_CNT24_Pos) /*!< PMU SWINC: Event Counter 24 Software Increment Mask */ + +#define PMU_SWINC_CNT25_Pos 25U /*!< PMU SWINC: Event Counter 25 Software Increment Position */ +#define PMU_SWINC_CNT25_Msk (1UL << PMU_SWINC_CNT25_Pos) /*!< PMU SWINC: Event Counter 25 Software Increment Mask */ + +#define PMU_SWINC_CNT26_Pos 26U /*!< PMU SWINC: Event Counter 26 Software Increment Position */ +#define PMU_SWINC_CNT26_Msk (1UL << PMU_SWINC_CNT26_Pos) /*!< PMU SWINC: Event Counter 26 Software Increment Mask */ + +#define PMU_SWINC_CNT27_Pos 27U /*!< PMU SWINC: Event Counter 27 Software Increment Position */ +#define PMU_SWINC_CNT27_Msk (1UL << PMU_SWINC_CNT27_Pos) /*!< PMU SWINC: Event Counter 27 Software Increment Mask */ + +#define PMU_SWINC_CNT28_Pos 28U /*!< PMU SWINC: Event Counter 28 Software Increment Position */ +#define PMU_SWINC_CNT28_Msk (1UL << PMU_SWINC_CNT28_Pos) /*!< PMU SWINC: Event Counter 28 Software Increment Mask */ + +#define PMU_SWINC_CNT29_Pos 29U /*!< PMU SWINC: Event Counter 29 Software Increment Position */ +#define PMU_SWINC_CNT29_Msk (1UL << PMU_SWINC_CNT29_Pos) /*!< PMU SWINC: Event Counter 29 Software Increment Mask */ + +#define PMU_SWINC_CNT30_Pos 30U /*!< PMU SWINC: Event Counter 30 Software Increment Position */ +#define PMU_SWINC_CNT30_Msk (1UL << PMU_SWINC_CNT30_Pos) /*!< PMU SWINC: Event Counter 30 Software Increment Mask */ + +/** \brief PMU Control Register Definitions */ + +#define PMU_CTRL_ENABLE_Pos 0U /*!< PMU CTRL: ENABLE Position */ +#define PMU_CTRL_ENABLE_Msk (1UL /*<< PMU_CTRL_ENABLE_Pos*/) /*!< PMU CTRL: ENABLE Mask */ + +#define PMU_CTRL_EVENTCNT_RESET_Pos 1U /*!< PMU CTRL: Event Counter Reset Position */ +#define PMU_CTRL_EVENTCNT_RESET_Msk (1UL << PMU_CTRL_EVENTCNT_RESET_Pos) /*!< PMU CTRL: Event Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_RESET_Pos 2U /*!< PMU CTRL: Cycle Counter Reset Position */ +#define PMU_CTRL_CYCCNT_RESET_Msk (1UL << PMU_CTRL_CYCCNT_RESET_Pos) /*!< PMU CTRL: Cycle Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_DISABLE_Pos 5U /*!< PMU CTRL: Disable Cycle Counter Position */ +#define PMU_CTRL_CYCCNT_DISABLE_Msk (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos) /*!< PMU CTRL: Disable Cycle Counter Mask */ + +#define PMU_CTRL_FRZ_ON_OV_Pos 9U /*!< PMU CTRL: Freeze-on-overflow Position */ +#define PMU_CTRL_FRZ_ON_OV_Msk (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos) /*!< PMU CTRL: Freeze-on-overflow Mask */ + +#define PMU_CTRL_TRACE_ON_OV_Pos 11U /*!< PMU CTRL: Trace-on-overflow Position */ +#define PMU_CTRL_TRACE_ON_OV_Msk (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos) /*!< PMU CTRL: Trace-on-overflow Mask */ + +/** \brief PMU Type Register Definitions */ + +#define PMU_TYPE_NUM_CNTS_Pos 0U /*!< PMU TYPE: Number of Counters Position */ +#define PMU_TYPE_NUM_CNTS_Msk (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/) /*!< PMU TYPE: Number of Counters Mask */ + +#define PMU_TYPE_SIZE_CNTS_Pos 8U /*!< PMU TYPE: Size of Counters Position */ +#define PMU_TYPE_SIZE_CNTS_Msk (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos) /*!< PMU TYPE: Size of Counters Mask */ + +#define PMU_TYPE_CYCCNT_PRESENT_Pos 14U /*!< PMU TYPE: Cycle Counter Present Position */ +#define PMU_TYPE_CYCCNT_PRESENT_Msk (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos) /*!< PMU TYPE: Cycle Counter Present Mask */ + +#define PMU_TYPE_FRZ_OV_SUPPORT_Pos 21U /*!< PMU TYPE: Freeze-on-overflow Support Position */ +#define PMU_TYPE_FRZ_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Freeze-on-overflow Support Mask */ + +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos 23U /*!< PMU TYPE: Trace-on-overflow Support Position */ +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Trace-on-overflow Support Mask */ + +/** \brief PMU Authentication Status Register Definitions */ + +#define PMU_AUTHSTATUS_NSID_Pos 0U /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSID_Msk (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/) /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSNID_Pos 2U /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSNID_Msk (0x3UL << PMU_AUTHSTATUS_NSNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SID_Pos 4U /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_SID_Msk (0x3UL << PMU_AUTHSTATUS_SID_Pos) /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SNID_Pos 6U /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SNID_Msk (0x3UL << PMU_AUTHSTATUS_SNID_Pos) /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUID_Pos 16U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUID_Msk (0x3UL << PMU_AUTHSTATUS_NSUID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUNID_Pos 18U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUNID_Msk (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUID_Pos 20U /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_SUID_Msk (0x3UL << PMU_AUTHSTATUS_SUID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUNID_Pos 22U /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SUNID_Msk (0x3UL << PMU_AUTHSTATUS_SUNID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */ + + +/*@} end of group CMSIS_PMU */ +#endif + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +#define FPU_FPDSCR_FZ16_Pos 19U /*!< FPDSCR: FZ16 bit Position */ +#define FPU_FPDSCR_FZ16_Msk (1UL << FPU_FPDSCR_FZ16_Pos) /*!< FPDSCR: FZ16 bit Mask */ + +#define FPU_FPDSCR_LTPSIZE_Pos 16U /*!< FPDSCR: LTPSIZE bit Position */ +#define FPU_FPDSCR_LTPSIZE_Msk (7UL << FPU_FPDSCR_LTPSIZE_Pos) /*!< FPDSCR: LTPSIZE bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FPRound_Pos 28U /*!< MVFR0: FPRound bits Position */ +#define FPU_MVFR0_FPRound_Msk (0xFUL << FPU_MVFR0_FPRound_Pos) /*!< MVFR0: FPRound bits Mask */ + +#define FPU_MVFR0_FPSqrt_Pos 20U /*!< MVFR0: FPSqrt bits Position */ +#define FPU_MVFR0_FPSqrt_Msk (0xFUL << FPU_MVFR0_FPSqrt_Pos) /*!< MVFR0: FPSqrt bits Mask */ + +#define FPU_MVFR0_FPDivide_Pos 16U /*!< MVFR0: FPDivide bits Position */ +#define FPU_MVFR0_FPDivide_Msk (0xFUL << FPU_MVFR0_FPDivide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FPDP_Pos 8U /*!< MVFR0: FPDP bits Position */ +#define FPU_MVFR0_FPDP_Msk (0xFUL << FPU_MVFR0_FPDP_Pos) /*!< MVFR0: FPDP bits Mask */ + +#define FPU_MVFR0_FPSP_Pos 4U /*!< MVFR0: FPSP bits Position */ +#define FPU_MVFR0_FPSP_Msk (0xFUL << FPU_MVFR0_FPSP_Pos) /*!< MVFR0: FPSP bits Mask */ + +#define FPU_MVFR0_SIMDReg_Pos 0U /*!< MVFR0: SIMDReg bits Position */ +#define FPU_MVFR0_SIMDReg_Msk (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/) /*!< MVFR0: SIMDReg bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FMAC_Pos 28U /*!< MVFR1: FMAC bits Position */ +#define FPU_MVFR1_FMAC_Msk (0xFUL << FPU_MVFR1_FMAC_Pos) /*!< MVFR1: FMAC bits Mask */ + +#define FPU_MVFR1_FPHP_Pos 24U /*!< MVFR1: FPHP bits Position */ +#define FPU_MVFR1_FPHP_Msk (0xFUL << FPU_MVFR1_FPHP_Pos) /*!< MVFR1: FPHP bits Mask */ + +#define FPU_MVFR1_FP16_Pos 20U /*!< MVFR1: FP16 bits Position */ +#define FPU_MVFR1_FP16_Msk (0xFUL << FPU_MVFR1_FP16_Pos) /*!< MVFR1: FP16 bits Mask */ + +#define FPU_MVFR1_MVE_Pos 8U /*!< MVFR1: MVE bits Position */ +#define FPU_MVFR1_MVE_Msk (0xFUL << FPU_MVFR1_MVE_Pos) /*!< MVFR1: MVE bits Mask */ + +#define FPU_MVFR1_FPDNaN_Pos 4U /*!< MVFR1: FPDNaN bits Position */ +#define FPU_MVFR1_FPDNaN_Msk (0xFUL << FPU_MVFR1_FPDNaN_Pos) /*!< MVFR1: FPDNaN bits Mask */ + +#define FPU_MVFR1_FPFtZ_Pos 0U /*!< MVFR1: FPFtZ bits Position */ +#define FPU_MVFR1_FPFtZ_Msk (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/) /*!< MVFR1: FPFtZ bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_FPD_Pos 23U /*!< \deprecated CoreDebug DHCSR: S_FPD Position */ +#define CoreDebug_DHCSR_S_FPD_Msk (1UL << CoreDebug_DHCSR_S_FPD_Pos) /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */ + +#define CoreDebug_DHCSR_S_SUIDE_Pos 22U /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */ +#define CoreDebug_DHCSR_S_SUIDE_Msk (1UL << CoreDebug_DHCSR_S_SUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */ + +#define CoreDebug_DHCSR_S_NSUIDE_Pos 21U /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */ +#define CoreDebug_DHCSR_S_NSUIDE_Msk (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */ + +#define CoreDebug_DHCSR_S_SDE_Pos 20U /*!< \deprecated CoreDebug DHCSR: S_SDE Position */ +#define CoreDebug_DHCSR_S_SDE_Msk (1UL << CoreDebug_DHCSR_S_SDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_PMOV_Pos 6U /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */ +#define CoreDebug_DHCSR_C_PMOV_Msk (1UL << CoreDebug_DHCSR_C_PMOV_Pos) /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Set Clear Exception and Monitor Control Register Definitions */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos 3U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos 1U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_UIDEN_Pos 10U /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos 9U /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */ + +#define CoreDebug_DAUTHCTRL_FSDMA_Pos 8U /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */ +#define CoreDebug_DAUTHCTRL_FSDMA_Msk (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_FPD_Pos 23U /*!< DCB DHCSR: Floating-point registers Debuggable Position */ +#define DCB_DHCSR_S_FPD_Msk (0x1UL << DCB_DHCSR_S_FPD_Pos) /*!< DCB DHCSR: Floating-point registers Debuggable Mask */ + +#define DCB_DHCSR_S_SUIDE_Pos 22U /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_SUIDE_Msk (0x1UL << DCB_DHCSR_S_SUIDE_Pos) /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_NSUIDE_Pos 21U /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_NSUIDE_Msk (0x1UL << DCB_DHCSR_S_NSUIDE_Pos) /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_PMOV_Pos 6U /*!< DCB DHCSR: Halt on PMU overflow control Position */ +#define DCB_DHCSR_C_PMOV_Msk (0x1UL << DCB_DHCSR_C_PMOV_Pos) /*!< DCB DHCSR: Halt on PMU overflow control Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */ +#define DCB_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< DCB DSCEMCR: Clear monitor request Position */ +#define DCB_DSCEMCR_CLR_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos) /*!< DCB DSCEMCR: Clear monitor request Mask */ + +#define DCB_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< DCB DSCEMCR: Clear monitor pend Position */ +#define DCB_DSCEMCR_CLR_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos) /*!< DCB DSCEMCR: Clear monitor pend Mask */ + +#define DCB_DSCEMCR_SET_MON_REQ_Pos 3U /*!< DCB DSCEMCR: Set monitor request Position */ +#define DCB_DSCEMCR_SET_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos) /*!< DCB DSCEMCR: Set monitor request Mask */ + +#define DCB_DSCEMCR_SET_MON_PEND_Pos 1U /*!< DCB DSCEMCR: Set monitor pend Position */ +#define DCB_DSCEMCR_SET_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos) /*!< DCB DSCEMCR: Set monitor pend Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_UIDEN_Pos 10U /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */ +#define DCB_DAUTHCTRL_UIDEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */ + +#define DCB_DAUTHCTRL_UIDAPEN_Pos 9U /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */ +#define DCB_DAUTHCTRL_UIDAPEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */ + +#define DCB_DAUTHCTRL_FSDMA_Pos 8U /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */ +#define DCB_DAUTHCTRL_FSDMA_Msk (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos) /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */ + +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SUNID_Pos 22U /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUNID_Msk (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SUID_Pos 20U /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUID_Msk (0x3UL << DIB_DAUTHSTATUS_SUID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_NSUNID_Pos 18U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */ +#define DIB_DAUTHSTATUS_NSUNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */ + +#define DIB_DAUTHSTATUS_NSUID_Pos 16U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_NSUID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define MEMSYSCTL_BASE (0xE001E000UL) /*!< Memory System Control Base Address */ + #define ERRBNK_BASE (0xE001E100UL) /*!< Error Banking Base Address */ + #define PWRMODCTL_BASE (0xE001E300UL) /*!< Power Mode Control Base Address */ + #define EWIC_BASE (0xE001E400UL) /*!< External Wakeup Interrupt Controller Base Address */ + #define PRCCFGINF_BASE (0xE001E700UL) /*!< Processor Configuration Information Base Address */ + #define STL_BASE (0xE001E800UL) /*!< Software Test Library Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 ICB ((ICB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #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 */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define MEMSYSCTL ((MemSysCtl_Type *) MEMSYSCTL_BASE ) /*!< Memory System Control configuration struct */ + #define ERRBNK ((ErrBnk_Type *) ERRBNK_BASE ) /*!< Error Banking configuration struct */ + #define PWRMODCTL ((PwrModCtl_Type *) PWRMODCTL_BASE ) /*!< Power Mode Control configuration struct */ + #define EWIC ((EWIC_Type *) EWIC_BASE ) /*!< EWIC configuration struct */ + #define PRCCFGINF ((PrcCfgInf_Type *) PRCCFGINF_BASE ) /*!< Processor Configuration Information configuration struct */ + #define STL ((STL_Type *) STL_BASE ) /*!< Software Test Library configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + #define PMU_BASE (0xE0003000UL) /*!< PMU Base Address */ + #define PMU ((PMU_Type *) PMU_BASE ) /*!< PMU configuration struct */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define ICB_NS ((ICB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ +#define ID_ADR (ID_AFR) /*!< SCB Auxiliary Feature Register */ + +/* 'SCnSCB' is deprecated and replaced by 'ICB' */ +typedef ICB_Type SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISCRITAXIRUW_Pos (ICB_ACTLR_DISCRITAXIRUW_Pos) +#define SCnSCB_ACTLR_DISCRITAXIRUW_Msk (ICB_ACTLR_DISCRITAXIRUW_Msk) + +#define SCnSCB_ACTLR_DISDI_Pos (ICB_ACTLR_DISDI_Pos) +#define SCnSCB_ACTLR_DISDI_Msk (ICB_ACTLR_DISDI_Msk) + +#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos (ICB_ACTLR_DISCRITAXIRUR_Pos) +#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk (ICB_ACTLR_DISCRITAXIRUR_Msk) + +#define SCnSCB_ACTLR_EVENTBUSEN_Pos (ICB_ACTLR_EVENTBUSEN_Pos) +#define SCnSCB_ACTLR_EVENTBUSEN_Msk (ICB_ACTLR_EVENTBUSEN_Msk) + +#define SCnSCB_ACTLR_EVENTBUSEN_S_Pos (ICB_ACTLR_EVENTBUSEN_S_Pos) +#define SCnSCB_ACTLR_EVENTBUSEN_S_Msk (ICB_ACTLR_EVENTBUSEN_S_Msk) + +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos (ICB_ACTLR_DISITMATBFLUSH_Pos) +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (ICB_ACTLR_DISITMATBFLUSH_Msk) + +#define SCnSCB_ACTLR_DISNWAMODE_Pos (ICB_ACTLR_DISNWAMODE_Pos) +#define SCnSCB_ACTLR_DISNWAMODE_Msk (ICB_ACTLR_DISNWAMODE_Msk) + +#define SCnSCB_ACTLR_FPEXCODIS_Pos (ICB_ACTLR_FPEXCODIS_Pos) +#define SCnSCB_ACTLR_FPEXCODIS_Msk (ICB_ACTLR_FPEXCODIS_Msk) + +#define SCnSCB_ACTLR_DISOLAP_Pos (ICB_ACTLR_DISOLAP_Pos) +#define SCnSCB_ACTLR_DISOLAP_Msk (ICB_ACTLR_DISOLAP_Msk) + +#define SCnSCB_ACTLR_DISOLAPS_Pos (ICB_ACTLR_DISOLAPS_Pos) +#define SCnSCB_ACTLR_DISOLAPS_Msk (ICB_ACTLR_DISOLAPS_Msk) + +#define SCnSCB_ACTLR_DISLOBR_Pos (ICB_ACTLR_DISLOBR_Pos) +#define SCnSCB_ACTLR_DISLOBR_Msk (ICB_ACTLR_DISLOBR_Msk) + +#define SCnSCB_ACTLR_DISLO_Pos (ICB_ACTLR_DISLO_Pos) +#define SCnSCB_ACTLR_DISLO_Msk (ICB_ACTLR_DISLO_Msk) + +#define SCnSCB_ACTLR_DISLOLEP_Pos (ICB_ACTLR_DISLOLEP_Pos) +#define SCnSCB_ACTLR_DISLOLEP_Msk (ICB_ACTLR_DISLOLEP_Msk) + +#define SCnSCB_ACTLR_DISFOLD_Pos (ICB_ACTLR_DISFOLD_Pos) +#define SCnSCB_ACTLR_DISFOLD_Msk (ICB_ACTLR_DISFOLD_Msk) + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos (ICB_ICTR_INTLINESNUM_Pos) +#define SCnSCB_ICTR_INTLINESNUM_Msk (ICB_ICTR_INTLINESNUM_Msk) + +#define SCnSCB (ICB) +#define SCnSCB_NS (ICB_NS) + +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## PMU functions and events #################################### */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + +#include "pmu_armv8.h" + +/** + \brief Cortex-M55 PMU events + \note Architectural PMU events can be found in pmu_armv8.h +*/ + +#define ARMCM55_PMU_ECC_ERR 0xC000 /*!< Any ECC error */ +#define ARMCM55_PMU_ECC_ERR_FATAL 0xC001 /*!< Any fatal ECC error */ +#define ARMCM55_PMU_ECC_ERR_DCACHE 0xC010 /*!< Any ECC error in the data cache */ +#define ARMCM55_PMU_ECC_ERR_ICACHE 0xC011 /*!< Any ECC error in the instruction cache */ +#define ARMCM55_PMU_ECC_ERR_FATAL_DCACHE 0xC012 /*!< Any fatal ECC error in the data cache */ +#define ARMCM55_PMU_ECC_ERR_FATAL_ICACHE 0xC013 /*!< Any fatal ECC error in the instruction cache*/ +#define ARMCM55_PMU_ECC_ERR_DTCM 0xC020 /*!< Any ECC error in the DTCM */ +#define ARMCM55_PMU_ECC_ERR_ITCM 0xC021 /*!< Any ECC error in the ITCM */ +#define ARMCM55_PMU_ECC_ERR_FATAL_DTCM 0xC022 /*!< Any fatal ECC error in the DTCM */ +#define ARMCM55_PMU_ECC_ERR_FATAL_ITCM 0xC023 /*!< Any fatal ECC error in the ITCM */ +#define ARMCM55_PMU_PF_LINEFILL 0xC100 /*!< A prefetcher starts a line-fill */ +#define ARMCM55_PMU_PF_CANCEL 0xC101 /*!< A prefetcher stops prefetching */ +#define ARMCM55_PMU_PF_DROP_LINEFILL 0xC102 /*!< A linefill triggered by a prefetcher has been dropped because of lack of buffering */ +#define ARMCM55_PMU_NWAMODE_ENTER 0xC200 /*!< No write-allocate mode entry */ +#define ARMCM55_PMU_NWAMODE 0xC201 /*!< Write-allocate store is not allocated into the data cache due to no-write-allocate mode */ +#define ARMCM55_PMU_SAHB_ACCESS 0xC300 /*!< Read or write access on the S-AHB interface to the TCM */ +#define ARMCM55_PMU_PAHB_ACCESS 0xC301 /*!< Read or write access to the P-AHB write interface */ +#define ARMCM55_PMU_AXI_WRITE_ACCESS 0xC302 /*!< Any beat access to M-AXI write interface */ +#define ARMCM55_PMU_AXI_READ_ACCESS 0xC303 /*!< Any beat access to M-AXI read interface */ +#define ARMCM55_PMU_DOSTIMEOUT_DOUBLE 0xC400 /*!< Denial of Service timeout has fired twice and caused buffers to drain to allow forward progress */ +#define ARMCM55_PMU_DOSTIMEOUT_TRIPLE 0xC401 /*!< Denial of Service timeout has fired three times and blocked the LSU to force forward progress */ + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + +/* ########################## MVE functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_MveFunctions MVE Functions + \brief Function that provides MVE type. + @{ + */ + +/** + \brief get MVE type + \details returns the MVE type + \returns + - \b 0: No Vector Extension (MVE) + - \b 1: Integer Vector Extension (MVE-I) + - \b 2: Floating-point Vector Extension (MVE-F) + */ +__STATIC_INLINE uint32_t SCB_GetMVEType(void) +{ + const uint32_t mvfr1 = FPU->MVFR1; + if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos)) + { + return 2U; + } + else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos)) + { + return 1U; + } + else + { + return 0U; + } +} + + +/*@} end of CMSIS_Core_MveFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM55_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h new file mode 100644 index 0000000000..010506e9fa --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm7.h @@ -0,0 +1,2366 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.1.6 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_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_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ + uint32_t RESERVED7[5U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status 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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP 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 */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET 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_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#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_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< \deprecated SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< \deprecated SCB CACR: ECCEN Mask */ + +#define SCB_CACR_ECCDIS_Pos 1U /*!< SCB CACR: ECCDIS Position */ +#define SCB_CACR_ECCDIS_Msk (1UL << SCB_CACR_ECCDIS_Pos) /*!< SCB CACR: ECCDIS Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBSCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBSCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBSCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISDYNADD_Pos 26U /*!< ACTLR: DISDYNADD Position */ +#define SCnSCB_ACTLR_DISDYNADD_Msk (1UL << SCnSCB_ACTLR_DISDYNADD_Pos) /*!< ACTLR: DISDYNADD Mask */ + +#define SCnSCB_ACTLR_DISISSCH1_Pos 21U /*!< ACTLR: DISISSCH1 Position */ +#define SCnSCB_ACTLR_DISISSCH1_Msk (0x1FUL << SCnSCB_ACTLR_DISISSCH1_Pos) /*!< ACTLR: DISISSCH1 Mask */ + +#define SCnSCB_ACTLR_DISDI_Pos 16U /*!< ACTLR: DISDI Position */ +#define SCnSCB_ACTLR_DISDI_Msk (0x1FUL << SCnSCB_ACTLR_DISDI_Pos) /*!< ACTLR: DISDI Mask */ + +#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk (1UL << SCnSCB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define SCnSCB_ACTLR_DISBTACALLOC_Pos 14U /*!< ACTLR: DISBTACALLOC Position */ +#define SCnSCB_ACTLR_DISBTACALLOC_Msk (1UL << SCnSCB_ACTLR_DISBTACALLOC_Pos) /*!< ACTLR: DISBTACALLOC Mask */ + +#define SCnSCB_ACTLR_DISBTACREAD_Pos 13U /*!< ACTLR: DISBTACREAD Position */ +#define SCnSCB_ACTLR_DISBTACREAD_Msk (1UL << SCnSCB_ACTLR_DISBTACREAD_Pos) /*!< ACTLR: DISBTACREAD Mask */ + +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +#define FPU_MVFR2_VFP_Misc_Pos 4U /*!< MVFR2: VFP Misc bits Position */ +#define FPU_MVFR2_VFP_Misc_Msk (0xFUL << FPU_MVFR2_VFP_Misc_Pos) /*!< MVFR2: VFP Misc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} 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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#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 */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + +/*@} end of CMSIS_Core_FpuFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h new file mode 100644 index 0000000000..6046311189 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_cm85.h @@ -0,0 +1,4672 @@ +/**************************************************************************//** + * @file core_cm85.h + * @brief CMSIS Cortex-M85 Core Peripheral Access Layer Header File + * @version V1.0.4 + * @date 21. April 2022 + ******************************************************************************/ +/* + * Copyright (c) 2022 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_CM85_H_GENERIC +#define __CORE_CM85_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_M85 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM85 definitions */ + +#define __CORTEX_M (85U) /*!< Cortex-M Core */ + +#if defined ( __CC_ARM ) + #error Legacy Arm Compiler does not support Armv8.1-M target architecture. +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM85_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM85_H_DEPENDANT +#define __CORE_CM85_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM85_REV + #define __CM85_REV 0x0001U + #warning "__CM85_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #if __FPU_PRESENT != 0U + #ifndef __FPU_DP + #define __FPU_DP 0U + #warning "__FPU_DP not defined in device header file; using default!" + #endif + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __PMU_PRESENT + #define __PMU_PRESENT 0U + #warning "__PMU_PRESENT not defined in device header file; using default!" + #endif + + #if __PMU_PRESENT != 0U + #ifndef __PMU_NUM_EVENTCNT + #define __PMU_NUM_EVENTCNT 8U + #warning "__PMU_NUM_EVENTCNT not defined in device header file; using default!" + #elif (__PMU_NUM_EVENTCNT > 8 || __PMU_NUM_EVENTCNT < 2) + #error "__PMU_NUM_EVENTCNT is out of range in device header file!" */ + #endif + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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_M85 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core EWIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core PMU Register + - Core MPU Register + - Core SAU Register + - Core FPU 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:1; /*!< bit: 20 Reserved */ + uint32_t B:1; /*!< bit: 21 BTI active (read 0) */ + uint32_t _reserved2:2; /*!< bit: 22..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_B_Pos 21U /*!< xPSR: B Position */ +#define xPSR_B_Msk (1UL << xPSR_B_Pos) /*!< xPSR: B Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t BTI_EN:1; /*!< bit: 4 Privileged branch target identification enable */ + uint32_t UBTI_EN:1; /*!< bit: 5 Unprivileged branch target identification enable */ + uint32_t PAC_EN:1; /*!< bit: 6 Privileged pointer authentication enable */ + uint32_t UPAC_EN:1; /*!< bit: 7 Unprivileged pointer authentication enable */ + uint32_t _reserved1:24; /*!< bit: 8..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_UPAC_EN_Pos 7U /*!< CONTROL: UPAC_EN Position */ +#define CONTROL_UPAC_EN_Msk (1UL << CONTROL_UPAC_EN_Pos) /*!< CONTROL: UPAC_EN Mask */ + +#define CONTROL_PAC_EN_Pos 6U /*!< CONTROL: PAC_EN Position */ +#define CONTROL_PAC_EN_Msk (1UL << CONTROL_PAC_EN_Pos) /*!< CONTROL: PAC_EN Mask */ + +#define CONTROL_UBTI_EN_Pos 5U /*!< CONTROL: UBTI_EN Position */ +#define CONTROL_UBTI_EN_Msk (1UL << CONTROL_UBTI_EN_Pos) /*!< CONTROL: UBTI_EN Mask */ + +#define CONTROL_BTI_EN_Pos 4U /*!< CONTROL: BTI_EN Position */ +#define CONTROL_BTI_EN_Msk (1UL << CONTROL_BTI_EN_Pos) /*!< CONTROL: BTI_EN Mask */ + +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED7[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + __IOM uint32_t RFSR; /*!< Offset: 0x204 (R/W) RAS Fault Status Register */ + uint32_t RESERVED4[14U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + __OM uint32_t BPIALL; /*!< Offset: 0x278 ( /W) Branch Predictor Invalidate All */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_IESB_Pos 5U /*!< SCB AIRCR: Implicit ESB Enable Position */ +#define SCB_AIRCR_IESB_Msk (1UL << SCB_AIRCR_IESB_Pos) /*!< SCB AIRCR: Implicit ESB Enable Mask */ + +#define SCB_AIRCR_DIT_Pos 4U /*!< SCB AIRCR: Data Independent Timing Position */ +#define SCB_AIRCR_DIT_Msk (1UL << SCB_AIRCR_DIT_Pos) /*!< SCB AIRCR: Data Independent Timing Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_TRD_Pos 20U /*!< SCB CCR: TRD Position */ +#define SCB_CCR_TRD_Msk (1UL << SCB_CCR_TRD_Pos) /*!< SCB CCR: TRD Mask */ + +#define SCB_CCR_LOB_Pos 19U /*!< SCB CCR: LOB Position */ +#define SCB_CCR_LOB_Msk (1UL << SCB_CCR_LOB_Pos) /*!< SCB CCR: LOB Mask */ + +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_PMU_Pos 5U /*!< SCB DFSR: PMU Position */ +#define SCB_DFSR_PMU_Msk (1UL << SCB_DFSR_PMU_Pos) /*!< SCB DFSR: PMU Mask */ + +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CP7_Pos 7U /*!< SCB NSACR: CP7 Position */ +#define SCB_NSACR_CP7_Msk (1UL << SCB_NSACR_CP7_Pos) /*!< SCB NSACR: CP7 Mask */ + +#define SCB_NSACR_CP6_Pos 6U /*!< SCB NSACR: CP6 Position */ +#define SCB_NSACR_CP6_Msk (1UL << SCB_NSACR_CP6_Pos) /*!< SCB NSACR: CP6 Mask */ + +#define SCB_NSACR_CP5_Pos 5U /*!< SCB NSACR: CP5 Position */ +#define SCB_NSACR_CP5_Msk (1UL << SCB_NSACR_CP5_Pos) /*!< SCB NSACR: CP5 Mask */ + +#define SCB_NSACR_CP4_Pos 4U /*!< SCB NSACR: CP4 Position */ +#define SCB_NSACR_CP4_Msk (1UL << SCB_NSACR_CP4_Pos) /*!< SCB NSACR: CP4 Mask */ + +#define SCB_NSACR_CP3_Pos 3U /*!< SCB NSACR: CP3 Position */ +#define SCB_NSACR_CP3_Msk (1UL << SCB_NSACR_CP3_Pos) /*!< SCB NSACR: CP3 Mask */ + +#define SCB_NSACR_CP2_Pos 2U /*!< SCB NSACR: CP2 Position */ +#define SCB_NSACR_CP2_Msk (1UL << SCB_NSACR_CP2_Pos) /*!< SCB NSACR: CP2 Mask */ + +#define SCB_NSACR_CP1_Pos 1U /*!< SCB NSACR: CP1 Position */ +#define SCB_NSACR_CP1_Msk (1UL << SCB_NSACR_CP1_Pos) /*!< SCB NSACR: CP1 Mask */ + +#define SCB_NSACR_CP0_Pos 0U /*!< SCB NSACR: CP0 Position */ +#define SCB_NSACR_CP0_Msk (1UL /*<< SCB_NSACR_CP0_Pos*/) /*!< SCB NSACR: CP0 Mask */ + +/* SCB Debug Feature Register 0 Definitions */ +#define SCB_ID_DFR_UDE_Pos 28U /*!< SCB ID_DFR: UDE Position */ +#define SCB_ID_DFR_UDE_Msk (0xFUL << SCB_ID_DFR_UDE_Pos) /*!< SCB ID_DFR: UDE Mask */ + +#define SCB_ID_DFR_MProfDbg_Pos 20U /*!< SCB ID_DFR: MProfDbg Position */ +#define SCB_ID_DFR_MProfDbg_Msk (0xFUL << SCB_ID_DFR_MProfDbg_Pos) /*!< SCB ID_DFR: MProfDbg Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB RAS Fault Status Register Definitions */ +#define SCB_RFSR_V_Pos 31U /*!< SCB RFSR: V Position */ +#define SCB_RFSR_V_Msk (1UL << SCB_RFSR_V_Pos) /*!< SCB RFSR: V Mask */ + +#define SCB_RFSR_IS_Pos 16U /*!< SCB RFSR: IS Position */ +#define SCB_RFSR_IS_Msk (0x7FFFUL << SCB_RFSR_IS_Pos) /*!< SCB RFSR: IS Mask */ + +#define SCB_RFSR_UET_Pos 0U /*!< SCB RFSR: UET Position */ +#define SCB_RFSR_UET_Msk (3UL /*<< SCB_RFSR_UET_Pos*/) /*!< SCB RFSR: UET Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ICB Implementation Control Block register (ICB) + \brief Type definitions for the Implementation Control Block Register + @{ + */ + +/** + \brief Structure type to access the Implementation Control Block (ICB). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} ICB_Type; + +/* Auxiliary Control Register Definitions */ +#define ICB_ACTLR_DISCRITAXIRUW_Pos 27U /*!< ACTLR: DISCRITAXIRUW Position */ +#define ICB_ACTLR_DISCRITAXIRUW_Msk (1UL << ICB_ACTLR_DISCRITAXIRUW_Pos) /*!< ACTLR: DISCRITAXIRUW Mask */ + +#define ICB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define ICB_ACTLR_DISCRITAXIRUR_Msk (1UL << ICB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define ICB_ACTLR_EVENTBUSEN_Pos 14U /*!< ACTLR: EVENTBUSEN Position */ +#define ICB_ACTLR_EVENTBUSEN_Msk (1UL << ICB_ACTLR_EVENTBUSEN_Pos) /*!< ACTLR: EVENTBUSEN Mask */ + +#define ICB_ACTLR_EVENTBUSEN_S_Pos 13U /*!< ACTLR: EVENTBUSEN_S Position */ +#define ICB_ACTLR_EVENTBUSEN_S_Msk (1UL << ICB_ACTLR_EVENTBUSEN_S_Pos) /*!< ACTLR: EVENTBUSEN_S Mask */ + +#define ICB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define ICB_ACTLR_DISITMATBFLUSH_Msk (1UL << ICB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define ICB_ACTLR_DISNWAMODE_Pos 11U /*!< ACTLR: DISNWAMODE Position */ +#define ICB_ACTLR_DISNWAMODE_Msk (1UL << ICB_ACTLR_DISNWAMODE_Pos) /*!< ACTLR: DISNWAMODE Mask */ + +#define ICB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define ICB_ACTLR_FPEXCODIS_Msk (1UL << ICB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +/* Interrupt Controller Type Register Definitions */ +#define ICB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define ICB_ICTR_INTLINESNUM_Msk (0xFUL /*<< ICB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_ICB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[3U]; + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) ITM Device Type Register */ + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup MemSysCtl_Type Memory System Control Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Memory System Control Registers (MEMSYSCTL) + @{ + */ + +/** + \brief Structure type to access the Memory System Control Registers (MEMSYSCTL). + */ +typedef struct +{ + __IOM uint32_t MSCR; /*!< Offset: 0x000 (R/W) Memory System Control Register */ + __IOM uint32_t PFCR; /*!< Offset: 0x004 (R/W) Prefetcher Control Register */ + uint32_t RESERVED1[2U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x010 (R/W) ITCM Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x014 (R/W) DTCM Control Register */ + __IOM uint32_t PAHBCR; /*!< Offset: 0x018 (R/W) P-AHB Control Register */ + uint32_t RESERVED2[313U]; + __IOM uint32_t ITGU_CTRL; /*!< Offset: 0x500 (R/W) ITGU Control Register */ + __IOM uint32_t ITGU_CFG; /*!< Offset: 0x504 (R/W) ITGU Configuration Register */ + uint32_t RESERVED3[2U]; + __IOM uint32_t ITGU_LUT[16U]; /*!< Offset: 0x510 (R/W) ITGU Look Up Table Register */ + uint32_t RESERVED4[44U]; + __IOM uint32_t DTGU_CTRL; /*!< Offset: 0x600 (R/W) DTGU Control Registers */ + __IOM uint32_t DTGU_CFG; /*!< Offset: 0x604 (R/W) DTGU Configuration Register */ + uint32_t RESERVED5[2U]; + __IOM uint32_t DTGU_LUT[16U]; /*!< Offset: 0x610 (R/W) DTGU Look Up Table Register */ +} MemSysCtl_Type; + +/* MEMSYSCTL Memory System Control Register (MSCR) Register Definitions */ +#define MEMSYSCTL_MSCR_CPWRDN_Pos 17U /*!< MEMSYSCTL MSCR: CPWRDN Position */ +#define MEMSYSCTL_MSCR_CPWRDN_Msk (0x1UL << MEMSYSCTL_MSCR_CPWRDN_Pos) /*!< MEMSYSCTL MSCR: CPWRDN Mask */ + +#define MEMSYSCTL_MSCR_DCCLEAN_Pos 16U /*!< MEMSYSCTL MSCR: DCCLEAN Position */ +#define MEMSYSCTL_MSCR_DCCLEAN_Msk (0x1UL << MEMSYSCTL_MSCR_DCCLEAN_Pos) /*!< MEMSYSCTL MSCR: DCCLEAN Mask */ + +#define MEMSYSCTL_MSCR_ICACTIVE_Pos 13U /*!< MEMSYSCTL MSCR: ICACTIVE Position */ +#define MEMSYSCTL_MSCR_ICACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_ICACTIVE_Pos) /*!< MEMSYSCTL MSCR: ICACTIVE Mask */ + +#define MEMSYSCTL_MSCR_DCACTIVE_Pos 12U /*!< MEMSYSCTL MSCR: DCACTIVE Position */ +#define MEMSYSCTL_MSCR_DCACTIVE_Msk (0x1UL << MEMSYSCTL_MSCR_DCACTIVE_Pos) /*!< MEMSYSCTL MSCR: DCACTIVE Mask */ + +#define MEMSYSCTL_MSCR_EVECCFAULT_Pos 3U /*!< MEMSYSCTL MSCR: EVECCFAULT Position */ +#define MEMSYSCTL_MSCR_EVECCFAULT_Msk (0x1UL << MEMSYSCTL_MSCR_EVECCFAULT_Pos) /*!< MEMSYSCTL MSCR: EVECCFAULT Mask */ + +#define MEMSYSCTL_MSCR_FORCEWT_Pos 2U /*!< MEMSYSCTL MSCR: FORCEWT Position */ +#define MEMSYSCTL_MSCR_FORCEWT_Msk (0x1UL << MEMSYSCTL_MSCR_FORCEWT_Pos) /*!< MEMSYSCTL MSCR: FORCEWT Mask */ + +#define MEMSYSCTL_MSCR_ECCEN_Pos 1U /*!< MEMSYSCTL MSCR: ECCEN Position */ +#define MEMSYSCTL_MSCR_ECCEN_Msk (0x1UL << MEMSYSCTL_MSCR_ECCEN_Pos) /*!< MEMSYSCTL MSCR: ECCEN Mask */ + +/* MEMSYSCTL Prefetcher Control Register (PFCR) Register Definitions */ +#define MEMSYSCTL_PFCR_DIS_NLP_Pos 7U /*!< MEMSYSCTL PFCR: DIS_NLP Position */ +#define MEMSYSCTL_PFCR_DIS_NLP_Msk (0x1UL << MEMSYSCTL_PFCR_DIS_NLP_Pos) /*!< MEMSYSCTL PFCR: DIS_NLP Mask */ + +#define MEMSYSCTL_PFCR_ENABLE_Pos 0U /*!< MEMSYSCTL PFCR: ENABLE Position */ +#define MEMSYSCTL_PFCR_ENABLE_Msk (0x1UL /*<< MEMSYSCTL_PFCR_ENABLE_Pos*/) /*!< MEMSYSCTL PFCR: ENABLE Mask */ + +/* MEMSYSCTL ITCM Control Register (ITCMCR) Register Definitions */ +#define MEMSYSCTL_ITCMCR_SZ_Pos 3U /*!< MEMSYSCTL ITCMCR: SZ Position */ +#define MEMSYSCTL_ITCMCR_SZ_Msk (0xFUL << MEMSYSCTL_ITCMCR_SZ_Pos) /*!< MEMSYSCTL ITCMCR: SZ Mask */ + +#define MEMSYSCTL_ITCMCR_EN_Pos 0U /*!< MEMSYSCTL ITCMCR: EN Position */ +#define MEMSYSCTL_ITCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_ITCMCR_EN_Pos*/) /*!< MEMSYSCTL ITCMCR: EN Mask */ + +/* MEMSYSCTL DTCM Control Register (DTCMCR) Register Definitions */ +#define MEMSYSCTL_DTCMCR_SZ_Pos 3U /*!< MEMSYSCTL DTCMCR: SZ Position */ +#define MEMSYSCTL_DTCMCR_SZ_Msk (0xFUL << MEMSYSCTL_DTCMCR_SZ_Pos) /*!< MEMSYSCTL DTCMCR: SZ Mask */ + +#define MEMSYSCTL_DTCMCR_EN_Pos 0U /*!< MEMSYSCTL DTCMCR: EN Position */ +#define MEMSYSCTL_DTCMCR_EN_Msk (0x1UL /*<< MEMSYSCTL_DTCMCR_EN_Pos*/) /*!< MEMSYSCTL DTCMCR: EN Mask */ + +/* MEMSYSCTL P-AHB Control Register (PAHBCR) Register Definitions */ +#define MEMSYSCTL_PAHBCR_SZ_Pos 1U /*!< MEMSYSCTL PAHBCR: SZ Position */ +#define MEMSYSCTL_PAHBCR_SZ_Msk (0x7UL << MEMSYSCTL_PAHBCR_SZ_Pos) /*!< MEMSYSCTL PAHBCR: SZ Mask */ + +#define MEMSYSCTL_PAHBCR_EN_Pos 0U /*!< MEMSYSCTL PAHBCR: EN Position */ +#define MEMSYSCTL_PAHBCR_EN_Msk (0x1UL /*<< MEMSYSCTL_PAHBCR_EN_Pos*/) /*!< MEMSYSCTL PAHBCR: EN Mask */ + +/* MEMSYSCTL ITGU Control Register (ITGU_CTRL) Register Definitions */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL ITGU_CTRL: DEREN Position */ +#define MEMSYSCTL_ITGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_ITGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL ITGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL ITGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_ITGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_ITGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL ITGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL ITGU Configuration Register (ITGU_CFG) Register Definitions */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL ITGU_CFG: PRESENT Position */ +#define MEMSYSCTL_ITGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_ITGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL ITGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_ITGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_ITGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL ITGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL ITGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_ITGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_ITGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL ITGU_CFG: BLKSZ Mask */ + +/* MEMSYSCTL DTGU Control Registers (DTGU_CTRL) Register Definitions */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Pos 1U /*!< MEMSYSCTL DTGU_CTRL: DEREN Position */ +#define MEMSYSCTL_DTGU_CTRL_DEREN_Msk (0x1UL << MEMSYSCTL_DTGU_CTRL_DEREN_Pos) /*!< MEMSYSCTL DTGU_CTRL: DEREN Mask */ + +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Pos 0U /*!< MEMSYSCTL DTGU_CTRL: DBFEN Position */ +#define MEMSYSCTL_DTGU_CTRL_DBFEN_Msk (0x1UL /*<< MEMSYSCTL_DTGU_CTRL_DBFEN_Pos*/) /*!< MEMSYSCTL DTGU_CTRL: DBFEN Mask */ + +/* MEMSYSCTL DTGU Configuration Register (DTGU_CFG) Register Definitions */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Pos 31U /*!< MEMSYSCTL DTGU_CFG: PRESENT Position */ +#define MEMSYSCTL_DTGU_CFG_PRESENT_Msk (0x1UL << MEMSYSCTL_DTGU_CFG_PRESENT_Pos) /*!< MEMSYSCTL DTGU_CFG: PRESENT Mask */ + +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos 8U /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Position */ +#define MEMSYSCTL_DTGU_CFG_NUMBLKS_Msk (0xFUL << MEMSYSCTL_DTGU_CFG_NUMBLKS_Pos) /*!< MEMSYSCTL DTGU_CFG: NUMBLKS Mask */ + +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Pos 0U /*!< MEMSYSCTL DTGU_CFG: BLKSZ Position */ +#define MEMSYSCTL_DTGU_CFG_BLKSZ_Msk (0xFUL /*<< MEMSYSCTL_DTGU_CFG_BLKSZ_Pos*/) /*!< MEMSYSCTL DTGU_CFG: BLKSZ Mask */ + + +/*@}*/ /* end of group MemSysCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PwrModCtl_Type Power Mode Control Registers + \brief Type definitions for the Power Mode Control Registers (PWRMODCTL) + @{ + */ + +/** + \brief Structure type to access the Power Mode Control Registers (PWRMODCTL). + */ +typedef struct +{ + __IOM uint32_t CPDLPSTATE; /*!< Offset: 0x000 (R/W) Core Power Domain Low Power State Register */ + __IOM uint32_t DPDLPSTATE; /*!< Offset: 0x004 (R/W) Debug Power Domain Low Power State Register */ +} PwrModCtl_Type; + +/* PWRMODCTL Core Power Domain Low Power State (CPDLPSTATE) Register Definitions */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos 8U /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_RLPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_RLPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: RLPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos 4U /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_ELPSTATE_Msk (0x3UL << PWRMODCTL_CPDLPSTATE_ELPSTATE_Pos) /*!< PWRMODCTL CPDLPSTATE: ELPSTATE Mask */ + +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos 0U /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Position */ +#define PWRMODCTL_CPDLPSTATE_CLPSTATE_Msk (0x3UL /*<< PWRMODCTL_CPDLPSTATE_CLPSTATE_Pos*/) /*!< PWRMODCTL CPDLPSTATE: CLPSTATE Mask */ + +/* PWRMODCTL Debug Power Domain Low Power State (DPDLPSTATE) Register Definitions */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos 0U /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Position */ +#define PWRMODCTL_DPDLPSTATE_DLPSTATE_Msk (0x3UL /*<< PWRMODCTL_DPDLPSTATE_DLPSTATE_Pos*/) /*!< PWRMODCTL DPDLPSTATE: DLPSTATE Mask */ + +/*@}*/ /* end of group PwrModCtl_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup EWIC_Type External Wakeup Interrupt Controller Registers + \brief Type definitions for the External Wakeup Interrupt Controller Registers (EWIC) + @{ + */ + +/** + \brief Structure type to access the External Wakeup Interrupt Controller Registers (EWIC). + */ +typedef struct +{ + __OM uint32_t EVENTSPR; /*!< Offset: 0x000 ( /W) Event Set Pending Register */ + uint32_t RESERVED0[31U]; + __IM uint32_t EVENTMASKA; /*!< Offset: 0x080 (R/W) Event Mask A Register */ + __IM uint32_t EVENTMASK[15]; /*!< Offset: 0x084 (R/W) Event Mask Register */ +} EWIC_Type; + +/* EWIC External Wakeup Interrupt Controller (EVENTSPR) Register Definitions */ +#define EWIC_EVENTSPR_EDBGREQ_Pos 2U /*!< EWIC EVENTSPR: EDBGREQ Position */ +#define EWIC_EVENTSPR_EDBGREQ_Msk (0x1UL << EWIC_EVENTSPR_EDBGREQ_Pos) /*!< EWIC EVENTSPR: EDBGREQ Mask */ + +#define EWIC_EVENTSPR_NMI_Pos 1U /*!< EWIC EVENTSPR: NMI Position */ +#define EWIC_EVENTSPR_NMI_Msk (0x1UL << EWIC_EVENTSPR_NMI_Pos) /*!< EWIC EVENTSPR: NMI Mask */ + +#define EWIC_EVENTSPR_EVENT_Pos 0U /*!< EWIC EVENTSPR: EVENT Position */ +#define EWIC_EVENTSPR_EVENT_Msk (0x1UL /*<< EWIC_EVENTSPR_EVENT_Pos*/) /*!< EWIC EVENTSPR: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASKA) Register Definitions */ +#define EWIC_EVENTMASKA_EDBGREQ_Pos 2U /*!< EWIC EVENTMASKA: EDBGREQ Position */ +#define EWIC_EVENTMASKA_EDBGREQ_Msk (0x1UL << EWIC_EVENTMASKA_EDBGREQ_Pos) /*!< EWIC EVENTMASKA: EDBGREQ Mask */ + +#define EWIC_EVENTMASKA_NMI_Pos 1U /*!< EWIC EVENTMASKA: NMI Position */ +#define EWIC_EVENTMASKA_NMI_Msk (0x1UL << EWIC_EVENTMASKA_NMI_Pos) /*!< EWIC EVENTMASKA: NMI Mask */ + +#define EWIC_EVENTMASKA_EVENT_Pos 0U /*!< EWIC EVENTMASKA: EVENT Position */ +#define EWIC_EVENTMASKA_EVENT_Msk (0x1UL /*<< EWIC_EVENTMASKA_EVENT_Pos*/) /*!< EWIC EVENTMASKA: EVENT Mask */ + +/* EWIC External Wakeup Interrupt Controller (EVENTMASK) Register Definitions */ +#define EWIC_EVENTMASK_IRQ_Pos 0U /*!< EWIC EVENTMASKA: IRQ Position */ +#define EWIC_EVENTMASK_IRQ_Msk (0xFFFFFFFFUL /*<< EWIC_EVENTMASKA_IRQ_Pos*/) /*!< EWIC EVENTMASKA: IRQ Mask */ + +/*@}*/ /* end of group EWIC_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup ErrBnk_Type Error Banking Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Error Banking Registers (ERRBNK) + @{ + */ + +/** + \brief Structure type to access the Error Banking Registers (ERRBNK). + */ +typedef struct +{ + __IOM uint32_t IEBR0; /*!< Offset: 0x000 (R/W) Instruction Cache Error Bank Register 0 */ + __IOM uint32_t IEBR1; /*!< Offset: 0x004 (R/W) Instruction Cache Error Bank Register 1 */ + uint32_t RESERVED0[2U]; + __IOM uint32_t DEBR0; /*!< Offset: 0x010 (R/W) Data Cache Error Bank Register 0 */ + __IOM uint32_t DEBR1; /*!< Offset: 0x014 (R/W) Data Cache Error Bank Register 1 */ + uint32_t RESERVED1[2U]; + __IOM uint32_t TEBR0; /*!< Offset: 0x020 (R/W) TCM Error Bank Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t TEBR1; /*!< Offset: 0x028 (R/W) TCM Error Bank Register 1 */ +} ErrBnk_Type; + +/* ERRBNK Instruction Cache Error Bank Register 0 (IEBR0) Register Definitions */ +#define ERRBNK_IEBR0_SWDEF_Pos 30U /*!< ERRBNK IEBR0: SWDEF Position */ +#define ERRBNK_IEBR0_SWDEF_Msk (0x3UL << ERRBNK_IEBR0_SWDEF_Pos) /*!< ERRBNK IEBR0: SWDEF Mask */ + +#define ERRBNK_IEBR0_BANK_Pos 16U /*!< ERRBNK IEBR0: BANK Position */ +#define ERRBNK_IEBR0_BANK_Msk (0x1UL << ERRBNK_IEBR0_BANK_Pos) /*!< ERRBNK IEBR0: BANK Mask */ + +#define ERRBNK_IEBR0_LOCATION_Pos 2U /*!< ERRBNK IEBR0: LOCATION Position */ +#define ERRBNK_IEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR0_LOCATION_Pos) /*!< ERRBNK IEBR0: LOCATION Mask */ + +#define ERRBNK_IEBR0_LOCKED_Pos 1U /*!< ERRBNK IEBR0: LOCKED Position */ +#define ERRBNK_IEBR0_LOCKED_Msk (0x1UL << ERRBNK_IEBR0_LOCKED_Pos) /*!< ERRBNK IEBR0: LOCKED Mask */ + +#define ERRBNK_IEBR0_VALID_Pos 0U /*!< ERRBNK IEBR0: VALID Position */ +#define ERRBNK_IEBR0_VALID_Msk (0x1UL << /*ERRBNK_IEBR0_VALID_Pos*/) /*!< ERRBNK IEBR0: VALID Mask */ + +/* ERRBNK Instruction Cache Error Bank Register 1 (IEBR1) Register Definitions */ +#define ERRBNK_IEBR1_SWDEF_Pos 30U /*!< ERRBNK IEBR1: SWDEF Position */ +#define ERRBNK_IEBR1_SWDEF_Msk (0x3UL << ERRBNK_IEBR1_SWDEF_Pos) /*!< ERRBNK IEBR1: SWDEF Mask */ + +#define ERRBNK_IEBR1_BANK_Pos 16U /*!< ERRBNK IEBR1: BANK Position */ +#define ERRBNK_IEBR1_BANK_Msk (0x1UL << ERRBNK_IEBR1_BANK_Pos) /*!< ERRBNK IEBR1: BANK Mask */ + +#define ERRBNK_IEBR1_LOCATION_Pos 2U /*!< ERRBNK IEBR1: LOCATION Position */ +#define ERRBNK_IEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_IEBR1_LOCATION_Pos) /*!< ERRBNK IEBR1: LOCATION Mask */ + +#define ERRBNK_IEBR1_LOCKED_Pos 1U /*!< ERRBNK IEBR1: LOCKED Position */ +#define ERRBNK_IEBR1_LOCKED_Msk (0x1UL << ERRBNK_IEBR1_LOCKED_Pos) /*!< ERRBNK IEBR1: LOCKED Mask */ + +#define ERRBNK_IEBR1_VALID_Pos 0U /*!< ERRBNK IEBR1: VALID Position */ +#define ERRBNK_IEBR1_VALID_Msk (0x1UL << /*ERRBNK_IEBR1_VALID_Pos*/) /*!< ERRBNK IEBR1: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 0 (DEBR0) Register Definitions */ +#define ERRBNK_DEBR0_SWDEF_Pos 30U /*!< ERRBNK DEBR0: SWDEF Position */ +#define ERRBNK_DEBR0_SWDEF_Msk (0x3UL << ERRBNK_DEBR0_SWDEF_Pos) /*!< ERRBNK DEBR0: SWDEF Mask */ + +#define ERRBNK_DEBR0_TYPE_Pos 17U /*!< ERRBNK DEBR0: TYPE Position */ +#define ERRBNK_DEBR0_TYPE_Msk (0x1UL << ERRBNK_DEBR0_TYPE_Pos) /*!< ERRBNK DEBR0: TYPE Mask */ + +#define ERRBNK_DEBR0_BANK_Pos 16U /*!< ERRBNK DEBR0: BANK Position */ +#define ERRBNK_DEBR0_BANK_Msk (0x1UL << ERRBNK_DEBR0_BANK_Pos) /*!< ERRBNK DEBR0: BANK Mask */ + +#define ERRBNK_DEBR0_LOCATION_Pos 2U /*!< ERRBNK DEBR0: LOCATION Position */ +#define ERRBNK_DEBR0_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR0_LOCATION_Pos) /*!< ERRBNK DEBR0: LOCATION Mask */ + +#define ERRBNK_DEBR0_LOCKED_Pos 1U /*!< ERRBNK DEBR0: LOCKED Position */ +#define ERRBNK_DEBR0_LOCKED_Msk (0x1UL << ERRBNK_DEBR0_LOCKED_Pos) /*!< ERRBNK DEBR0: LOCKED Mask */ + +#define ERRBNK_DEBR0_VALID_Pos 0U /*!< ERRBNK DEBR0: VALID Position */ +#define ERRBNK_DEBR0_VALID_Msk (0x1UL << /*ERRBNK_DEBR0_VALID_Pos*/) /*!< ERRBNK DEBR0: VALID Mask */ + +/* ERRBNK Data Cache Error Bank Register 1 (DEBR1) Register Definitions */ +#define ERRBNK_DEBR1_SWDEF_Pos 30U /*!< ERRBNK DEBR1: SWDEF Position */ +#define ERRBNK_DEBR1_SWDEF_Msk (0x3UL << ERRBNK_DEBR1_SWDEF_Pos) /*!< ERRBNK DEBR1: SWDEF Mask */ + +#define ERRBNK_DEBR1_TYPE_Pos 17U /*!< ERRBNK DEBR1: TYPE Position */ +#define ERRBNK_DEBR1_TYPE_Msk (0x1UL << ERRBNK_DEBR1_TYPE_Pos) /*!< ERRBNK DEBR1: TYPE Mask */ + +#define ERRBNK_DEBR1_BANK_Pos 16U /*!< ERRBNK DEBR1: BANK Position */ +#define ERRBNK_DEBR1_BANK_Msk (0x1UL << ERRBNK_DEBR1_BANK_Pos) /*!< ERRBNK DEBR1: BANK Mask */ + +#define ERRBNK_DEBR1_LOCATION_Pos 2U /*!< ERRBNK DEBR1: LOCATION Position */ +#define ERRBNK_DEBR1_LOCATION_Msk (0x3FFFUL << ERRBNK_DEBR1_LOCATION_Pos) /*!< ERRBNK DEBR1: LOCATION Mask */ + +#define ERRBNK_DEBR1_LOCKED_Pos 1U /*!< ERRBNK DEBR1: LOCKED Position */ +#define ERRBNK_DEBR1_LOCKED_Msk (0x1UL << ERRBNK_DEBR1_LOCKED_Pos) /*!< ERRBNK DEBR1: LOCKED Mask */ + +#define ERRBNK_DEBR1_VALID_Pos 0U /*!< ERRBNK DEBR1: VALID Position */ +#define ERRBNK_DEBR1_VALID_Msk (0x1UL << /*ERRBNK_DEBR1_VALID_Pos*/) /*!< ERRBNK DEBR1: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 0 (TEBR0) Register Definitions */ +#define ERRBNK_TEBR0_SWDEF_Pos 30U /*!< ERRBNK TEBR0: SWDEF Position */ +#define ERRBNK_TEBR0_SWDEF_Msk (0x3UL << ERRBNK_TEBR0_SWDEF_Pos) /*!< ERRBNK TEBR0: SWDEF Mask */ + +#define ERRBNK_TEBR0_POISON_Pos 28U /*!< ERRBNK TEBR0: POISON Position */ +#define ERRBNK_TEBR0_POISON_Msk (0x1UL << ERRBNK_TEBR0_POISON_Pos) /*!< ERRBNK TEBR0: POISON Mask */ + +#define ERRBNK_TEBR0_TYPE_Pos 27U /*!< ERRBNK TEBR0: TYPE Position */ +#define ERRBNK_TEBR0_TYPE_Msk (0x1UL << ERRBNK_TEBR0_TYPE_Pos) /*!< ERRBNK TEBR0: TYPE Mask */ + +#define ERRBNK_TEBR0_BANK_Pos 24U /*!< ERRBNK TEBR0: BANK Position */ +#define ERRBNK_TEBR0_BANK_Msk (0x3UL << ERRBNK_TEBR0_BANK_Pos) /*!< ERRBNK TEBR0: BANK Mask */ + +#define ERRBNK_TEBR0_LOCATION_Pos 2U /*!< ERRBNK TEBR0: LOCATION Position */ +#define ERRBNK_TEBR0_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR0_LOCATION_Pos) /*!< ERRBNK TEBR0: LOCATION Mask */ + +#define ERRBNK_TEBR0_LOCKED_Pos 1U /*!< ERRBNK TEBR0: LOCKED Position */ +#define ERRBNK_TEBR0_LOCKED_Msk (0x1UL << ERRBNK_TEBR0_LOCKED_Pos) /*!< ERRBNK TEBR0: LOCKED Mask */ + +#define ERRBNK_TEBR0_VALID_Pos 0U /*!< ERRBNK TEBR0: VALID Position */ +#define ERRBNK_TEBR0_VALID_Msk (0x1UL << /*ERRBNK_TEBR0_VALID_Pos*/) /*!< ERRBNK TEBR0: VALID Mask */ + +/* ERRBNK TCM Error Bank Register 1 (TEBR1) Register Definitions */ +#define ERRBNK_TEBR1_SWDEF_Pos 30U /*!< ERRBNK TEBR1: SWDEF Position */ +#define ERRBNK_TEBR1_SWDEF_Msk (0x3UL << ERRBNK_TEBR1_SWDEF_Pos) /*!< ERRBNK TEBR1: SWDEF Mask */ + +#define ERRBNK_TEBR1_POISON_Pos 28U /*!< ERRBNK TEBR1: POISON Position */ +#define ERRBNK_TEBR1_POISON_Msk (0x1UL << ERRBNK_TEBR1_POISON_Pos) /*!< ERRBNK TEBR1: POISON Mask */ + +#define ERRBNK_TEBR1_TYPE_Pos 27U /*!< ERRBNK TEBR1: TYPE Position */ +#define ERRBNK_TEBR1_TYPE_Msk (0x1UL << ERRBNK_TEBR1_TYPE_Pos) /*!< ERRBNK TEBR1: TYPE Mask */ + +#define ERRBNK_TEBR1_BANK_Pos 24U /*!< ERRBNK TEBR1: BANK Position */ +#define ERRBNK_TEBR1_BANK_Msk (0x3UL << ERRBNK_TEBR1_BANK_Pos) /*!< ERRBNK TEBR1: BANK Mask */ + +#define ERRBNK_TEBR1_LOCATION_Pos 2U /*!< ERRBNK TEBR1: LOCATION Position */ +#define ERRBNK_TEBR1_LOCATION_Msk (0x3FFFFFUL << ERRBNK_TEBR1_LOCATION_Pos) /*!< ERRBNK TEBR1: LOCATION Mask */ + +#define ERRBNK_TEBR1_LOCKED_Pos 1U /*!< ERRBNK TEBR1: LOCKED Position */ +#define ERRBNK_TEBR1_LOCKED_Msk (0x1UL << ERRBNK_TEBR1_LOCKED_Pos) /*!< ERRBNK TEBR1: LOCKED Mask */ + +#define ERRBNK_TEBR1_VALID_Pos 0U /*!< ERRBNK TEBR1: VALID Position */ +#define ERRBNK_TEBR1_VALID_Msk (0x1UL << /*ERRBNK_TEBR1_VALID_Pos*/) /*!< ERRBNK TEBR1: VALID Mask */ + +/*@}*/ /* end of group ErrBnk_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup PrcCfgInf_Type Processor Configuration Information Registers (IMPLEMENTATION DEFINED) + \brief Type definitions for the Processor Configuration Information Registerss (PRCCFGINF) + @{ + */ + +/** + \brief Structure type to access the Processor Configuration Information Registerss (PRCCFGINF). + */ +typedef struct +{ + __OM uint32_t CFGINFOSEL; /*!< Offset: 0x000 ( /W) Processor Configuration Information Selection Register */ + __IM uint32_t CFGINFORD; /*!< Offset: 0x004 (R/ ) Processor Configuration Information Read Data Register */ +} PrcCfgInf_Type; + +/* PRCCFGINF Processor Configuration Information Selection Register (CFGINFOSEL) Definitions */ + +/* PRCCFGINF Processor Configuration Information Read Data Register (CFGINFORD) Definitions */ + +/*@}*/ /* end of group PrcCfgInf_Type */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFmt_Pos 0U /*!< TPI FFCR: EnFmt Position */ +#define TPI_FFCR_EnFmt_Msk (0x3UL << /*TPI_FFCR_EnFmt_Pos*/) /*!< TPI FFCR: EnFmt Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_PMU Performance Monitoring Unit (PMU) + \brief Type definitions for the Performance Monitoring Unit (PMU) + @{ + */ + +/** + \brief Structure type to access the Performance Monitoring Unit (PMU). + */ +typedef struct +{ + __IOM uint32_t EVCNTR[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x0 (R/W) PMU Event Counter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED0[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCNTR; /*!< Offset: 0x7C (R/W) PMU Cycle Counter Register */ + uint32_t RESERVED1[224]; + __IOM uint32_t EVTYPER[__PMU_NUM_EVENTCNT]; /*!< Offset: 0x400 (R/W) PMU Event Type and Filter Registers */ +#if __PMU_NUM_EVENTCNT<31 + uint32_t RESERVED2[31U-__PMU_NUM_EVENTCNT]; +#endif + __IOM uint32_t CCFILTR; /*!< Offset: 0x47C (R/W) PMU Cycle Counter Filter Register */ + uint32_t RESERVED3[480]; + __IOM uint32_t CNTENSET; /*!< Offset: 0xC00 (R/W) PMU Count Enable Set Register */ + uint32_t RESERVED4[7]; + __IOM uint32_t CNTENCLR; /*!< Offset: 0xC20 (R/W) PMU Count Enable Clear Register */ + uint32_t RESERVED5[7]; + __IOM uint32_t INTENSET; /*!< Offset: 0xC40 (R/W) PMU Interrupt Enable Set Register */ + uint32_t RESERVED6[7]; + __IOM uint32_t INTENCLR; /*!< Offset: 0xC60 (R/W) PMU Interrupt Enable Clear Register */ + uint32_t RESERVED7[7]; + __IOM uint32_t OVSCLR; /*!< Offset: 0xC80 (R/W) PMU Overflow Flag Status Clear Register */ + uint32_t RESERVED8[7]; + __IOM uint32_t SWINC; /*!< Offset: 0xCA0 (R/W) PMU Software Increment Register */ + uint32_t RESERVED9[7]; + __IOM uint32_t OVSSET; /*!< Offset: 0xCC0 (R/W) PMU Overflow Flag Status Set Register */ + uint32_t RESERVED10[79]; + __IOM uint32_t TYPE; /*!< Offset: 0xE00 (R/W) PMU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0xE04 (R/W) PMU Control Register */ + uint32_t RESERVED11[108]; + __IOM uint32_t AUTHSTATUS; /*!< Offset: 0xFB8 (R/W) PMU Authentication Status Register */ + __IOM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/W) PMU Device Architecture Register */ + uint32_t RESERVED12[3]; + __IOM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/W) PMU Device Type Register */ + __IOM uint32_t PIDR4; /*!< Offset: 0xFD0 (R/W) PMU Peripheral Identification Register 4 */ + uint32_t RESERVED13[3]; + __IOM uint32_t PIDR0; /*!< Offset: 0xFE0 (R/W) PMU Peripheral Identification Register 0 */ + __IOM uint32_t PIDR1; /*!< Offset: 0xFE4 (R/W) PMU Peripheral Identification Register 1 */ + __IOM uint32_t PIDR2; /*!< Offset: 0xFE8 (R/W) PMU Peripheral Identification Register 2 */ + __IOM uint32_t PIDR3; /*!< Offset: 0xFEC (R/W) PMU Peripheral Identification Register 3 */ + __IOM uint32_t CIDR0; /*!< Offset: 0xFF0 (R/W) PMU Component Identification Register 0 */ + __IOM uint32_t CIDR1; /*!< Offset: 0xFF4 (R/W) PMU Component Identification Register 1 */ + __IOM uint32_t CIDR2; /*!< Offset: 0xFF8 (R/W) PMU Component Identification Register 2 */ + __IOM uint32_t CIDR3; /*!< Offset: 0xFFC (R/W) PMU Component Identification Register 3 */ +} PMU_Type; + +/** \brief PMU Event Counter Registers (0-30) Definitions */ + +#define PMU_EVCNTR_CNT_Pos 0U /*!< PMU EVCNTR: Counter Position */ +#define PMU_EVCNTR_CNT_Msk (0xFFFFUL /*<< PMU_EVCNTRx_CNT_Pos*/) /*!< PMU EVCNTR: Counter Mask */ + +/** \brief PMU Event Type and Filter Registers (0-30) Definitions */ + +#define PMU_EVTYPER_EVENTTOCNT_Pos 0U /*!< PMU EVTYPER: Event to Count Position */ +#define PMU_EVTYPER_EVENTTOCNT_Msk (0xFFFFUL /*<< EVTYPERx_EVENTTOCNT_Pos*/) /*!< PMU EVTYPER: Event to Count Mask */ + +/** \brief PMU Count Enable Set Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENSET: Event Counter 0 Enable Set Position */ +#define PMU_CNTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENSET_CNT0_ENABLE_Pos*/) /*!< PMU CNTENSET: Event Counter 0 Enable Set Mask */ + +#define PMU_CNTENSET_CNT1_ENABLE_Pos 1U /*!< PMU CNTENSET: Event Counter 1 Enable Set Position */ +#define PMU_CNTENSET_CNT1_ENABLE_Msk (1UL << PMU_CNTENSET_CNT1_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 1 Enable Set Mask */ + +#define PMU_CNTENSET_CNT2_ENABLE_Pos 2U /*!< PMU CNTENSET: Event Counter 2 Enable Set Position */ +#define PMU_CNTENSET_CNT2_ENABLE_Msk (1UL << PMU_CNTENSET_CNT2_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 2 Enable Set Mask */ + +#define PMU_CNTENSET_CNT3_ENABLE_Pos 3U /*!< PMU CNTENSET: Event Counter 3 Enable Set Position */ +#define PMU_CNTENSET_CNT3_ENABLE_Msk (1UL << PMU_CNTENSET_CNT3_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 3 Enable Set Mask */ + +#define PMU_CNTENSET_CNT4_ENABLE_Pos 4U /*!< PMU CNTENSET: Event Counter 4 Enable Set Position */ +#define PMU_CNTENSET_CNT4_ENABLE_Msk (1UL << PMU_CNTENSET_CNT4_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 4 Enable Set Mask */ + +#define PMU_CNTENSET_CNT5_ENABLE_Pos 5U /*!< PMU CNTENSET: Event Counter 5 Enable Set Position */ +#define PMU_CNTENSET_CNT5_ENABLE_Msk (1UL << PMU_CNTENSET_CNT5_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 5 Enable Set Mask */ + +#define PMU_CNTENSET_CNT6_ENABLE_Pos 6U /*!< PMU CNTENSET: Event Counter 6 Enable Set Position */ +#define PMU_CNTENSET_CNT6_ENABLE_Msk (1UL << PMU_CNTENSET_CNT6_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 6 Enable Set Mask */ + +#define PMU_CNTENSET_CNT7_ENABLE_Pos 7U /*!< PMU CNTENSET: Event Counter 7 Enable Set Position */ +#define PMU_CNTENSET_CNT7_ENABLE_Msk (1UL << PMU_CNTENSET_CNT7_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 7 Enable Set Mask */ + +#define PMU_CNTENSET_CNT8_ENABLE_Pos 8U /*!< PMU CNTENSET: Event Counter 8 Enable Set Position */ +#define PMU_CNTENSET_CNT8_ENABLE_Msk (1UL << PMU_CNTENSET_CNT8_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 8 Enable Set Mask */ + +#define PMU_CNTENSET_CNT9_ENABLE_Pos 9U /*!< PMU CNTENSET: Event Counter 9 Enable Set Position */ +#define PMU_CNTENSET_CNT9_ENABLE_Msk (1UL << PMU_CNTENSET_CNT9_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 9 Enable Set Mask */ + +#define PMU_CNTENSET_CNT10_ENABLE_Pos 10U /*!< PMU CNTENSET: Event Counter 10 Enable Set Position */ +#define PMU_CNTENSET_CNT10_ENABLE_Msk (1UL << PMU_CNTENSET_CNT10_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 10 Enable Set Mask */ + +#define PMU_CNTENSET_CNT11_ENABLE_Pos 11U /*!< PMU CNTENSET: Event Counter 11 Enable Set Position */ +#define PMU_CNTENSET_CNT11_ENABLE_Msk (1UL << PMU_CNTENSET_CNT11_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 11 Enable Set Mask */ + +#define PMU_CNTENSET_CNT12_ENABLE_Pos 12U /*!< PMU CNTENSET: Event Counter 12 Enable Set Position */ +#define PMU_CNTENSET_CNT12_ENABLE_Msk (1UL << PMU_CNTENSET_CNT12_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 12 Enable Set Mask */ + +#define PMU_CNTENSET_CNT13_ENABLE_Pos 13U /*!< PMU CNTENSET: Event Counter 13 Enable Set Position */ +#define PMU_CNTENSET_CNT13_ENABLE_Msk (1UL << PMU_CNTENSET_CNT13_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 13 Enable Set Mask */ + +#define PMU_CNTENSET_CNT14_ENABLE_Pos 14U /*!< PMU CNTENSET: Event Counter 14 Enable Set Position */ +#define PMU_CNTENSET_CNT14_ENABLE_Msk (1UL << PMU_CNTENSET_CNT14_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 14 Enable Set Mask */ + +#define PMU_CNTENSET_CNT15_ENABLE_Pos 15U /*!< PMU CNTENSET: Event Counter 15 Enable Set Position */ +#define PMU_CNTENSET_CNT15_ENABLE_Msk (1UL << PMU_CNTENSET_CNT15_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 15 Enable Set Mask */ + +#define PMU_CNTENSET_CNT16_ENABLE_Pos 16U /*!< PMU CNTENSET: Event Counter 16 Enable Set Position */ +#define PMU_CNTENSET_CNT16_ENABLE_Msk (1UL << PMU_CNTENSET_CNT16_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 16 Enable Set Mask */ + +#define PMU_CNTENSET_CNT17_ENABLE_Pos 17U /*!< PMU CNTENSET: Event Counter 17 Enable Set Position */ +#define PMU_CNTENSET_CNT17_ENABLE_Msk (1UL << PMU_CNTENSET_CNT17_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 17 Enable Set Mask */ + +#define PMU_CNTENSET_CNT18_ENABLE_Pos 18U /*!< PMU CNTENSET: Event Counter 18 Enable Set Position */ +#define PMU_CNTENSET_CNT18_ENABLE_Msk (1UL << PMU_CNTENSET_CNT18_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 18 Enable Set Mask */ + +#define PMU_CNTENSET_CNT19_ENABLE_Pos 19U /*!< PMU CNTENSET: Event Counter 19 Enable Set Position */ +#define PMU_CNTENSET_CNT19_ENABLE_Msk (1UL << PMU_CNTENSET_CNT19_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 19 Enable Set Mask */ + +#define PMU_CNTENSET_CNT20_ENABLE_Pos 20U /*!< PMU CNTENSET: Event Counter 20 Enable Set Position */ +#define PMU_CNTENSET_CNT20_ENABLE_Msk (1UL << PMU_CNTENSET_CNT20_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 20 Enable Set Mask */ + +#define PMU_CNTENSET_CNT21_ENABLE_Pos 21U /*!< PMU CNTENSET: Event Counter 21 Enable Set Position */ +#define PMU_CNTENSET_CNT21_ENABLE_Msk (1UL << PMU_CNTENSET_CNT21_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 21 Enable Set Mask */ + +#define PMU_CNTENSET_CNT22_ENABLE_Pos 22U /*!< PMU CNTENSET: Event Counter 22 Enable Set Position */ +#define PMU_CNTENSET_CNT22_ENABLE_Msk (1UL << PMU_CNTENSET_CNT22_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 22 Enable Set Mask */ + +#define PMU_CNTENSET_CNT23_ENABLE_Pos 23U /*!< PMU CNTENSET: Event Counter 23 Enable Set Position */ +#define PMU_CNTENSET_CNT23_ENABLE_Msk (1UL << PMU_CNTENSET_CNT23_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 23 Enable Set Mask */ + +#define PMU_CNTENSET_CNT24_ENABLE_Pos 24U /*!< PMU CNTENSET: Event Counter 24 Enable Set Position */ +#define PMU_CNTENSET_CNT24_ENABLE_Msk (1UL << PMU_CNTENSET_CNT24_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 24 Enable Set Mask */ + +#define PMU_CNTENSET_CNT25_ENABLE_Pos 25U /*!< PMU CNTENSET: Event Counter 25 Enable Set Position */ +#define PMU_CNTENSET_CNT25_ENABLE_Msk (1UL << PMU_CNTENSET_CNT25_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 25 Enable Set Mask */ + +#define PMU_CNTENSET_CNT26_ENABLE_Pos 26U /*!< PMU CNTENSET: Event Counter 26 Enable Set Position */ +#define PMU_CNTENSET_CNT26_ENABLE_Msk (1UL << PMU_CNTENSET_CNT26_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 26 Enable Set Mask */ + +#define PMU_CNTENSET_CNT27_ENABLE_Pos 27U /*!< PMU CNTENSET: Event Counter 27 Enable Set Position */ +#define PMU_CNTENSET_CNT27_ENABLE_Msk (1UL << PMU_CNTENSET_CNT27_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 27 Enable Set Mask */ + +#define PMU_CNTENSET_CNT28_ENABLE_Pos 28U /*!< PMU CNTENSET: Event Counter 28 Enable Set Position */ +#define PMU_CNTENSET_CNT28_ENABLE_Msk (1UL << PMU_CNTENSET_CNT28_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 28 Enable Set Mask */ + +#define PMU_CNTENSET_CNT29_ENABLE_Pos 29U /*!< PMU CNTENSET: Event Counter 29 Enable Set Position */ +#define PMU_CNTENSET_CNT29_ENABLE_Msk (1UL << PMU_CNTENSET_CNT29_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 29 Enable Set Mask */ + +#define PMU_CNTENSET_CNT30_ENABLE_Pos 30U /*!< PMU CNTENSET: Event Counter 30 Enable Set Position */ +#define PMU_CNTENSET_CNT30_ENABLE_Msk (1UL << PMU_CNTENSET_CNT30_ENABLE_Pos) /*!< PMU CNTENSET: Event Counter 30 Enable Set Mask */ + +#define PMU_CNTENSET_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENSET: Cycle Counter Enable Set Position */ +#define PMU_CNTENSET_CCNTR_ENABLE_Msk (1UL << PMU_CNTENSET_CCNTR_ENABLE_Pos) /*!< PMU CNTENSET: Cycle Counter Enable Set Mask */ + +/** \brief PMU Count Enable Clear Register Definitions */ + +#define PMU_CNTENSET_CNT0_ENABLE_Pos 0U /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Position */ +#define PMU_CNTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_CNTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU CNTENCLR: Event Counter 0 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU CNTENCLR: Event Counter 1 Enable Clear Position */ +#define PMU_CNTENCLR_CNT1_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT1_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 1 Enable Clear */ + +#define PMU_CNTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Position */ +#define PMU_CNTENCLR_CNT2_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT2_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 2 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Position */ +#define PMU_CNTENCLR_CNT3_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT3_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 3 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Position */ +#define PMU_CNTENCLR_CNT4_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT4_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 4 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Position */ +#define PMU_CNTENCLR_CNT5_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT5_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 5 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Position */ +#define PMU_CNTENCLR_CNT6_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT6_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 6 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Position */ +#define PMU_CNTENCLR_CNT7_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT7_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 7 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Position */ +#define PMU_CNTENCLR_CNT8_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT8_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 8 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Position */ +#define PMU_CNTENCLR_CNT9_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT9_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 9 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Position */ +#define PMU_CNTENCLR_CNT10_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT10_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 10 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Position */ +#define PMU_CNTENCLR_CNT11_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT11_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 11 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Position */ +#define PMU_CNTENCLR_CNT12_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT12_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 12 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Position */ +#define PMU_CNTENCLR_CNT13_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT13_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 13 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Position */ +#define PMU_CNTENCLR_CNT14_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT14_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 14 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Position */ +#define PMU_CNTENCLR_CNT15_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT15_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 15 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Position */ +#define PMU_CNTENCLR_CNT16_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT16_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 16 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Position */ +#define PMU_CNTENCLR_CNT17_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT17_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 17 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Position */ +#define PMU_CNTENCLR_CNT18_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT18_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 18 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Position */ +#define PMU_CNTENCLR_CNT19_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT19_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 19 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Position */ +#define PMU_CNTENCLR_CNT20_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT20_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 20 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Position */ +#define PMU_CNTENCLR_CNT21_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT21_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 21 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Position */ +#define PMU_CNTENCLR_CNT22_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT22_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 22 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Position */ +#define PMU_CNTENCLR_CNT23_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT23_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 23 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Position */ +#define PMU_CNTENCLR_CNT24_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT24_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 24 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Position */ +#define PMU_CNTENCLR_CNT25_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT25_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 25 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Position */ +#define PMU_CNTENCLR_CNT26_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT26_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 26 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Position */ +#define PMU_CNTENCLR_CNT27_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT27_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 27 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Position */ +#define PMU_CNTENCLR_CNT28_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT28_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 28 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Position */ +#define PMU_CNTENCLR_CNT29_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT29_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 29 Enable Clear Mask */ + +#define PMU_CNTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Position */ +#define PMU_CNTENCLR_CNT30_ENABLE_Msk (1UL << PMU_CNTENCLR_CNT30_ENABLE_Pos) /*!< PMU CNTENCLR: Event Counter 30 Enable Clear Mask */ + +#define PMU_CNTENCLR_CCNTR_ENABLE_Pos 31U /*!< PMU CNTENCLR: Cycle Counter Enable Clear Position */ +#define PMU_CNTENCLR_CCNTR_ENABLE_Msk (1UL << PMU_CNTENCLR_CCNTR_ENABLE_Pos) /*!< PMU CNTENCLR: Cycle Counter Enable Clear Mask */ + +/** \brief PMU Interrupt Enable Set Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENSET_CNT0_ENABLE_Pos*/) /*!< PMU INTENSET: Event Counter 0 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT1_ENABLE_Pos 1U /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT1_ENABLE_Msk (1UL << PMU_INTENSET_CNT1_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 1 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT2_ENABLE_Pos 2U /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT2_ENABLE_Msk (1UL << PMU_INTENSET_CNT2_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 2 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT3_ENABLE_Pos 3U /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT3_ENABLE_Msk (1UL << PMU_INTENSET_CNT3_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 3 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT4_ENABLE_Pos 4U /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT4_ENABLE_Msk (1UL << PMU_INTENSET_CNT4_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 4 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT5_ENABLE_Pos 5U /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT5_ENABLE_Msk (1UL << PMU_INTENSET_CNT5_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 5 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT6_ENABLE_Pos 6U /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT6_ENABLE_Msk (1UL << PMU_INTENSET_CNT6_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 6 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT7_ENABLE_Pos 7U /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT7_ENABLE_Msk (1UL << PMU_INTENSET_CNT7_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 7 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT8_ENABLE_Pos 8U /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT8_ENABLE_Msk (1UL << PMU_INTENSET_CNT8_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 8 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT9_ENABLE_Pos 9U /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT9_ENABLE_Msk (1UL << PMU_INTENSET_CNT9_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 9 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT10_ENABLE_Pos 10U /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT10_ENABLE_Msk (1UL << PMU_INTENSET_CNT10_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 10 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT11_ENABLE_Pos 11U /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT11_ENABLE_Msk (1UL << PMU_INTENSET_CNT11_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 11 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT12_ENABLE_Pos 12U /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT12_ENABLE_Msk (1UL << PMU_INTENSET_CNT12_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 12 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT13_ENABLE_Pos 13U /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT13_ENABLE_Msk (1UL << PMU_INTENSET_CNT13_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 13 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT14_ENABLE_Pos 14U /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT14_ENABLE_Msk (1UL << PMU_INTENSET_CNT14_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 14 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT15_ENABLE_Pos 15U /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT15_ENABLE_Msk (1UL << PMU_INTENSET_CNT15_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 15 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT16_ENABLE_Pos 16U /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT16_ENABLE_Msk (1UL << PMU_INTENSET_CNT16_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 16 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT17_ENABLE_Pos 17U /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT17_ENABLE_Msk (1UL << PMU_INTENSET_CNT17_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 17 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT18_ENABLE_Pos 18U /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT18_ENABLE_Msk (1UL << PMU_INTENSET_CNT18_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 18 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT19_ENABLE_Pos 19U /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT19_ENABLE_Msk (1UL << PMU_INTENSET_CNT19_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 19 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT20_ENABLE_Pos 20U /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT20_ENABLE_Msk (1UL << PMU_INTENSET_CNT20_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 20 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT21_ENABLE_Pos 21U /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT21_ENABLE_Msk (1UL << PMU_INTENSET_CNT21_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 21 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT22_ENABLE_Pos 22U /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT22_ENABLE_Msk (1UL << PMU_INTENSET_CNT22_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 22 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT23_ENABLE_Pos 23U /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT23_ENABLE_Msk (1UL << PMU_INTENSET_CNT23_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 23 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT24_ENABLE_Pos 24U /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT24_ENABLE_Msk (1UL << PMU_INTENSET_CNT24_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 24 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT25_ENABLE_Pos 25U /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT25_ENABLE_Msk (1UL << PMU_INTENSET_CNT25_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 25 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT26_ENABLE_Pos 26U /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT26_ENABLE_Msk (1UL << PMU_INTENSET_CNT26_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 26 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT27_ENABLE_Pos 27U /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT27_ENABLE_Msk (1UL << PMU_INTENSET_CNT27_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 27 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT28_ENABLE_Pos 28U /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT28_ENABLE_Msk (1UL << PMU_INTENSET_CNT28_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 28 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT29_ENABLE_Pos 29U /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT29_ENABLE_Msk (1UL << PMU_INTENSET_CNT29_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 29 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CNT30_ENABLE_Pos 30U /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Position */ +#define PMU_INTENSET_CNT30_ENABLE_Msk (1UL << PMU_INTENSET_CNT30_ENABLE_Pos) /*!< PMU INTENSET: Event Counter 30 Interrupt Enable Set Mask */ + +#define PMU_INTENSET_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Position */ +#define PMU_INTENSET_CCYCNT_ENABLE_Msk (1UL << PMU_INTENSET_CYCCNT_ENABLE_Pos) /*!< PMU INTENSET: Cycle Counter Interrupt Enable Set Mask */ + +/** \brief PMU Interrupt Enable Clear Register Definitions */ + +#define PMU_INTENSET_CNT0_ENABLE_Pos 0U /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT0_ENABLE_Msk (1UL /*<< PMU_INTENCLR_CNT0_ENABLE_Pos*/) /*!< PMU INTENCLR: Event Counter 0 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT1_ENABLE_Pos 1U /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT1_ENABLE_Msk (1UL << PMU_INTENCLR_CNT1_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 1 Interrupt Enable Clear */ + +#define PMU_INTENCLR_CNT2_ENABLE_Pos 2U /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT2_ENABLE_Msk (1UL << PMU_INTENCLR_CNT2_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 2 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT3_ENABLE_Pos 3U /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT3_ENABLE_Msk (1UL << PMU_INTENCLR_CNT3_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 3 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT4_ENABLE_Pos 4U /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT4_ENABLE_Msk (1UL << PMU_INTENCLR_CNT4_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 4 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT5_ENABLE_Pos 5U /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT5_ENABLE_Msk (1UL << PMU_INTENCLR_CNT5_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 5 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT6_ENABLE_Pos 6U /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT6_ENABLE_Msk (1UL << PMU_INTENCLR_CNT6_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 6 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT7_ENABLE_Pos 7U /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT7_ENABLE_Msk (1UL << PMU_INTENCLR_CNT7_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 7 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT8_ENABLE_Pos 8U /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT8_ENABLE_Msk (1UL << PMU_INTENCLR_CNT8_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 8 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT9_ENABLE_Pos 9U /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT9_ENABLE_Msk (1UL << PMU_INTENCLR_CNT9_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 9 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT10_ENABLE_Pos 10U /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT10_ENABLE_Msk (1UL << PMU_INTENCLR_CNT10_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 10 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT11_ENABLE_Pos 11U /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT11_ENABLE_Msk (1UL << PMU_INTENCLR_CNT11_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 11 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT12_ENABLE_Pos 12U /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT12_ENABLE_Msk (1UL << PMU_INTENCLR_CNT12_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 12 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT13_ENABLE_Pos 13U /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT13_ENABLE_Msk (1UL << PMU_INTENCLR_CNT13_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 13 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT14_ENABLE_Pos 14U /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT14_ENABLE_Msk (1UL << PMU_INTENCLR_CNT14_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 14 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT15_ENABLE_Pos 15U /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT15_ENABLE_Msk (1UL << PMU_INTENCLR_CNT15_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 15 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT16_ENABLE_Pos 16U /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT16_ENABLE_Msk (1UL << PMU_INTENCLR_CNT16_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 16 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT17_ENABLE_Pos 17U /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT17_ENABLE_Msk (1UL << PMU_INTENCLR_CNT17_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 17 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT18_ENABLE_Pos 18U /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT18_ENABLE_Msk (1UL << PMU_INTENCLR_CNT18_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 18 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT19_ENABLE_Pos 19U /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT19_ENABLE_Msk (1UL << PMU_INTENCLR_CNT19_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 19 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT20_ENABLE_Pos 20U /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT20_ENABLE_Msk (1UL << PMU_INTENCLR_CNT20_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 20 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT21_ENABLE_Pos 21U /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT21_ENABLE_Msk (1UL << PMU_INTENCLR_CNT21_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 21 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT22_ENABLE_Pos 22U /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT22_ENABLE_Msk (1UL << PMU_INTENCLR_CNT22_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 22 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT23_ENABLE_Pos 23U /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT23_ENABLE_Msk (1UL << PMU_INTENCLR_CNT23_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 23 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT24_ENABLE_Pos 24U /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT24_ENABLE_Msk (1UL << PMU_INTENCLR_CNT24_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 24 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT25_ENABLE_Pos 25U /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT25_ENABLE_Msk (1UL << PMU_INTENCLR_CNT25_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 25 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT26_ENABLE_Pos 26U /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT26_ENABLE_Msk (1UL << PMU_INTENCLR_CNT26_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 26 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT27_ENABLE_Pos 27U /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT27_ENABLE_Msk (1UL << PMU_INTENCLR_CNT27_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 27 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT28_ENABLE_Pos 28U /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT28_ENABLE_Msk (1UL << PMU_INTENCLR_CNT28_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 28 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT29_ENABLE_Pos 29U /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT29_ENABLE_Msk (1UL << PMU_INTENCLR_CNT29_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 29 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CNT30_ENABLE_Pos 30U /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CNT30_ENABLE_Msk (1UL << PMU_INTENCLR_CNT30_ENABLE_Pos) /*!< PMU INTENCLR: Event Counter 30 Interrupt Enable Clear Mask */ + +#define PMU_INTENCLR_CYCCNT_ENABLE_Pos 31U /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Position */ +#define PMU_INTENCLR_CYCCNT_ENABLE_Msk (1UL << PMU_INTENCLR_CYCCNT_ENABLE_Pos) /*!< PMU INTENCLR: Cycle Counter Interrupt Enable Clear Mask */ + +/** \brief PMU Overflow Flag Status Set Register Definitions */ + +#define PMU_OVSSET_CNT0_STATUS_Pos 0U /*!< PMU OVSSET: Event Counter 0 Overflow Set Position */ +#define PMU_OVSSET_CNT0_STATUS_Msk (1UL /*<< PMU_OVSSET_CNT0_STATUS_Pos*/) /*!< PMU OVSSET: Event Counter 0 Overflow Set Mask */ + +#define PMU_OVSSET_CNT1_STATUS_Pos 1U /*!< PMU OVSSET: Event Counter 1 Overflow Set Position */ +#define PMU_OVSSET_CNT1_STATUS_Msk (1UL << PMU_OVSSET_CNT1_STATUS_Pos) /*!< PMU OVSSET: Event Counter 1 Overflow Set Mask */ + +#define PMU_OVSSET_CNT2_STATUS_Pos 2U /*!< PMU OVSSET: Event Counter 2 Overflow Set Position */ +#define PMU_OVSSET_CNT2_STATUS_Msk (1UL << PMU_OVSSET_CNT2_STATUS_Pos) /*!< PMU OVSSET: Event Counter 2 Overflow Set Mask */ + +#define PMU_OVSSET_CNT3_STATUS_Pos 3U /*!< PMU OVSSET: Event Counter 3 Overflow Set Position */ +#define PMU_OVSSET_CNT3_STATUS_Msk (1UL << PMU_OVSSET_CNT3_STATUS_Pos) /*!< PMU OVSSET: Event Counter 3 Overflow Set Mask */ + +#define PMU_OVSSET_CNT4_STATUS_Pos 4U /*!< PMU OVSSET: Event Counter 4 Overflow Set Position */ +#define PMU_OVSSET_CNT4_STATUS_Msk (1UL << PMU_OVSSET_CNT4_STATUS_Pos) /*!< PMU OVSSET: Event Counter 4 Overflow Set Mask */ + +#define PMU_OVSSET_CNT5_STATUS_Pos 5U /*!< PMU OVSSET: Event Counter 5 Overflow Set Position */ +#define PMU_OVSSET_CNT5_STATUS_Msk (1UL << PMU_OVSSET_CNT5_STATUS_Pos) /*!< PMU OVSSET: Event Counter 5 Overflow Set Mask */ + +#define PMU_OVSSET_CNT6_STATUS_Pos 6U /*!< PMU OVSSET: Event Counter 6 Overflow Set Position */ +#define PMU_OVSSET_CNT6_STATUS_Msk (1UL << PMU_OVSSET_CNT6_STATUS_Pos) /*!< PMU OVSSET: Event Counter 6 Overflow Set Mask */ + +#define PMU_OVSSET_CNT7_STATUS_Pos 7U /*!< PMU OVSSET: Event Counter 7 Overflow Set Position */ +#define PMU_OVSSET_CNT7_STATUS_Msk (1UL << PMU_OVSSET_CNT7_STATUS_Pos) /*!< PMU OVSSET: Event Counter 7 Overflow Set Mask */ + +#define PMU_OVSSET_CNT8_STATUS_Pos 8U /*!< PMU OVSSET: Event Counter 8 Overflow Set Position */ +#define PMU_OVSSET_CNT8_STATUS_Msk (1UL << PMU_OVSSET_CNT8_STATUS_Pos) /*!< PMU OVSSET: Event Counter 8 Overflow Set Mask */ + +#define PMU_OVSSET_CNT9_STATUS_Pos 9U /*!< PMU OVSSET: Event Counter 9 Overflow Set Position */ +#define PMU_OVSSET_CNT9_STATUS_Msk (1UL << PMU_OVSSET_CNT9_STATUS_Pos) /*!< PMU OVSSET: Event Counter 9 Overflow Set Mask */ + +#define PMU_OVSSET_CNT10_STATUS_Pos 10U /*!< PMU OVSSET: Event Counter 10 Overflow Set Position */ +#define PMU_OVSSET_CNT10_STATUS_Msk (1UL << PMU_OVSSET_CNT10_STATUS_Pos) /*!< PMU OVSSET: Event Counter 10 Overflow Set Mask */ + +#define PMU_OVSSET_CNT11_STATUS_Pos 11U /*!< PMU OVSSET: Event Counter 11 Overflow Set Position */ +#define PMU_OVSSET_CNT11_STATUS_Msk (1UL << PMU_OVSSET_CNT11_STATUS_Pos) /*!< PMU OVSSET: Event Counter 11 Overflow Set Mask */ + +#define PMU_OVSSET_CNT12_STATUS_Pos 12U /*!< PMU OVSSET: Event Counter 12 Overflow Set Position */ +#define PMU_OVSSET_CNT12_STATUS_Msk (1UL << PMU_OVSSET_CNT12_STATUS_Pos) /*!< PMU OVSSET: Event Counter 12 Overflow Set Mask */ + +#define PMU_OVSSET_CNT13_STATUS_Pos 13U /*!< PMU OVSSET: Event Counter 13 Overflow Set Position */ +#define PMU_OVSSET_CNT13_STATUS_Msk (1UL << PMU_OVSSET_CNT13_STATUS_Pos) /*!< PMU OVSSET: Event Counter 13 Overflow Set Mask */ + +#define PMU_OVSSET_CNT14_STATUS_Pos 14U /*!< PMU OVSSET: Event Counter 14 Overflow Set Position */ +#define PMU_OVSSET_CNT14_STATUS_Msk (1UL << PMU_OVSSET_CNT14_STATUS_Pos) /*!< PMU OVSSET: Event Counter 14 Overflow Set Mask */ + +#define PMU_OVSSET_CNT15_STATUS_Pos 15U /*!< PMU OVSSET: Event Counter 15 Overflow Set Position */ +#define PMU_OVSSET_CNT15_STATUS_Msk (1UL << PMU_OVSSET_CNT15_STATUS_Pos) /*!< PMU OVSSET: Event Counter 15 Overflow Set Mask */ + +#define PMU_OVSSET_CNT16_STATUS_Pos 16U /*!< PMU OVSSET: Event Counter 16 Overflow Set Position */ +#define PMU_OVSSET_CNT16_STATUS_Msk (1UL << PMU_OVSSET_CNT16_STATUS_Pos) /*!< PMU OVSSET: Event Counter 16 Overflow Set Mask */ + +#define PMU_OVSSET_CNT17_STATUS_Pos 17U /*!< PMU OVSSET: Event Counter 17 Overflow Set Position */ +#define PMU_OVSSET_CNT17_STATUS_Msk (1UL << PMU_OVSSET_CNT17_STATUS_Pos) /*!< PMU OVSSET: Event Counter 17 Overflow Set Mask */ + +#define PMU_OVSSET_CNT18_STATUS_Pos 18U /*!< PMU OVSSET: Event Counter 18 Overflow Set Position */ +#define PMU_OVSSET_CNT18_STATUS_Msk (1UL << PMU_OVSSET_CNT18_STATUS_Pos) /*!< PMU OVSSET: Event Counter 18 Overflow Set Mask */ + +#define PMU_OVSSET_CNT19_STATUS_Pos 19U /*!< PMU OVSSET: Event Counter 19 Overflow Set Position */ +#define PMU_OVSSET_CNT19_STATUS_Msk (1UL << PMU_OVSSET_CNT19_STATUS_Pos) /*!< PMU OVSSET: Event Counter 19 Overflow Set Mask */ + +#define PMU_OVSSET_CNT20_STATUS_Pos 20U /*!< PMU OVSSET: Event Counter 20 Overflow Set Position */ +#define PMU_OVSSET_CNT20_STATUS_Msk (1UL << PMU_OVSSET_CNT20_STATUS_Pos) /*!< PMU OVSSET: Event Counter 20 Overflow Set Mask */ + +#define PMU_OVSSET_CNT21_STATUS_Pos 21U /*!< PMU OVSSET: Event Counter 21 Overflow Set Position */ +#define PMU_OVSSET_CNT21_STATUS_Msk (1UL << PMU_OVSSET_CNT21_STATUS_Pos) /*!< PMU OVSSET: Event Counter 21 Overflow Set Mask */ + +#define PMU_OVSSET_CNT22_STATUS_Pos 22U /*!< PMU OVSSET: Event Counter 22 Overflow Set Position */ +#define PMU_OVSSET_CNT22_STATUS_Msk (1UL << PMU_OVSSET_CNT22_STATUS_Pos) /*!< PMU OVSSET: Event Counter 22 Overflow Set Mask */ + +#define PMU_OVSSET_CNT23_STATUS_Pos 23U /*!< PMU OVSSET: Event Counter 23 Overflow Set Position */ +#define PMU_OVSSET_CNT23_STATUS_Msk (1UL << PMU_OVSSET_CNT23_STATUS_Pos) /*!< PMU OVSSET: Event Counter 23 Overflow Set Mask */ + +#define PMU_OVSSET_CNT24_STATUS_Pos 24U /*!< PMU OVSSET: Event Counter 24 Overflow Set Position */ +#define PMU_OVSSET_CNT24_STATUS_Msk (1UL << PMU_OVSSET_CNT24_STATUS_Pos) /*!< PMU OVSSET: Event Counter 24 Overflow Set Mask */ + +#define PMU_OVSSET_CNT25_STATUS_Pos 25U /*!< PMU OVSSET: Event Counter 25 Overflow Set Position */ +#define PMU_OVSSET_CNT25_STATUS_Msk (1UL << PMU_OVSSET_CNT25_STATUS_Pos) /*!< PMU OVSSET: Event Counter 25 Overflow Set Mask */ + +#define PMU_OVSSET_CNT26_STATUS_Pos 26U /*!< PMU OVSSET: Event Counter 26 Overflow Set Position */ +#define PMU_OVSSET_CNT26_STATUS_Msk (1UL << PMU_OVSSET_CNT26_STATUS_Pos) /*!< PMU OVSSET: Event Counter 26 Overflow Set Mask */ + +#define PMU_OVSSET_CNT27_STATUS_Pos 27U /*!< PMU OVSSET: Event Counter 27 Overflow Set Position */ +#define PMU_OVSSET_CNT27_STATUS_Msk (1UL << PMU_OVSSET_CNT27_STATUS_Pos) /*!< PMU OVSSET: Event Counter 27 Overflow Set Mask */ + +#define PMU_OVSSET_CNT28_STATUS_Pos 28U /*!< PMU OVSSET: Event Counter 28 Overflow Set Position */ +#define PMU_OVSSET_CNT28_STATUS_Msk (1UL << PMU_OVSSET_CNT28_STATUS_Pos) /*!< PMU OVSSET: Event Counter 28 Overflow Set Mask */ + +#define PMU_OVSSET_CNT29_STATUS_Pos 29U /*!< PMU OVSSET: Event Counter 29 Overflow Set Position */ +#define PMU_OVSSET_CNT29_STATUS_Msk (1UL << PMU_OVSSET_CNT29_STATUS_Pos) /*!< PMU OVSSET: Event Counter 29 Overflow Set Mask */ + +#define PMU_OVSSET_CNT30_STATUS_Pos 30U /*!< PMU OVSSET: Event Counter 30 Overflow Set Position */ +#define PMU_OVSSET_CNT30_STATUS_Msk (1UL << PMU_OVSSET_CNT30_STATUS_Pos) /*!< PMU OVSSET: Event Counter 30 Overflow Set Mask */ + +#define PMU_OVSSET_CYCCNT_STATUS_Pos 31U /*!< PMU OVSSET: Cycle Counter Overflow Set Position */ +#define PMU_OVSSET_CYCCNT_STATUS_Msk (1UL << PMU_OVSSET_CYCCNT_STATUS_Pos) /*!< PMU OVSSET: Cycle Counter Overflow Set Mask */ + +/** \brief PMU Overflow Flag Status Clear Register Definitions */ + +#define PMU_OVSCLR_CNT0_STATUS_Pos 0U /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Position */ +#define PMU_OVSCLR_CNT0_STATUS_Msk (1UL /*<< PMU_OVSCLR_CNT0_STATUS_Pos*/) /*!< PMU OVSCLR: Event Counter 0 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT1_STATUS_Pos 1U /*!< PMU OVSCLR: Event Counter 1 Overflow Clear Position */ +#define PMU_OVSCLR_CNT1_STATUS_Msk (1UL << PMU_OVSCLR_CNT1_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 1 Overflow Clear */ + +#define PMU_OVSCLR_CNT2_STATUS_Pos 2U /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Position */ +#define PMU_OVSCLR_CNT2_STATUS_Msk (1UL << PMU_OVSCLR_CNT2_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 2 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT3_STATUS_Pos 3U /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Position */ +#define PMU_OVSCLR_CNT3_STATUS_Msk (1UL << PMU_OVSCLR_CNT3_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 3 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT4_STATUS_Pos 4U /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Position */ +#define PMU_OVSCLR_CNT4_STATUS_Msk (1UL << PMU_OVSCLR_CNT4_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 4 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT5_STATUS_Pos 5U /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Position */ +#define PMU_OVSCLR_CNT5_STATUS_Msk (1UL << PMU_OVSCLR_CNT5_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 5 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT6_STATUS_Pos 6U /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Position */ +#define PMU_OVSCLR_CNT6_STATUS_Msk (1UL << PMU_OVSCLR_CNT6_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 6 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT7_STATUS_Pos 7U /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Position */ +#define PMU_OVSCLR_CNT7_STATUS_Msk (1UL << PMU_OVSCLR_CNT7_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 7 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT8_STATUS_Pos 8U /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Position */ +#define PMU_OVSCLR_CNT8_STATUS_Msk (1UL << PMU_OVSCLR_CNT8_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 8 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT9_STATUS_Pos 9U /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Position */ +#define PMU_OVSCLR_CNT9_STATUS_Msk (1UL << PMU_OVSCLR_CNT9_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 9 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT10_STATUS_Pos 10U /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Position */ +#define PMU_OVSCLR_CNT10_STATUS_Msk (1UL << PMU_OVSCLR_CNT10_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 10 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT11_STATUS_Pos 11U /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Position */ +#define PMU_OVSCLR_CNT11_STATUS_Msk (1UL << PMU_OVSCLR_CNT11_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 11 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT12_STATUS_Pos 12U /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Position */ +#define PMU_OVSCLR_CNT12_STATUS_Msk (1UL << PMU_OVSCLR_CNT12_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 12 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT13_STATUS_Pos 13U /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Position */ +#define PMU_OVSCLR_CNT13_STATUS_Msk (1UL << PMU_OVSCLR_CNT13_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 13 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT14_STATUS_Pos 14U /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Position */ +#define PMU_OVSCLR_CNT14_STATUS_Msk (1UL << PMU_OVSCLR_CNT14_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 14 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT15_STATUS_Pos 15U /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Position */ +#define PMU_OVSCLR_CNT15_STATUS_Msk (1UL << PMU_OVSCLR_CNT15_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 15 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT16_STATUS_Pos 16U /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Position */ +#define PMU_OVSCLR_CNT16_STATUS_Msk (1UL << PMU_OVSCLR_CNT16_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 16 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT17_STATUS_Pos 17U /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Position */ +#define PMU_OVSCLR_CNT17_STATUS_Msk (1UL << PMU_OVSCLR_CNT17_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 17 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT18_STATUS_Pos 18U /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Position */ +#define PMU_OVSCLR_CNT18_STATUS_Msk (1UL << PMU_OVSCLR_CNT18_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 18 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT19_STATUS_Pos 19U /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Position */ +#define PMU_OVSCLR_CNT19_STATUS_Msk (1UL << PMU_OVSCLR_CNT19_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 19 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT20_STATUS_Pos 20U /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Position */ +#define PMU_OVSCLR_CNT20_STATUS_Msk (1UL << PMU_OVSCLR_CNT20_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 20 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT21_STATUS_Pos 21U /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Position */ +#define PMU_OVSCLR_CNT21_STATUS_Msk (1UL << PMU_OVSCLR_CNT21_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 21 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT22_STATUS_Pos 22U /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Position */ +#define PMU_OVSCLR_CNT22_STATUS_Msk (1UL << PMU_OVSCLR_CNT22_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 22 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT23_STATUS_Pos 23U /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Position */ +#define PMU_OVSCLR_CNT23_STATUS_Msk (1UL << PMU_OVSCLR_CNT23_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 23 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT24_STATUS_Pos 24U /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Position */ +#define PMU_OVSCLR_CNT24_STATUS_Msk (1UL << PMU_OVSCLR_CNT24_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 24 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT25_STATUS_Pos 25U /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Position */ +#define PMU_OVSCLR_CNT25_STATUS_Msk (1UL << PMU_OVSCLR_CNT25_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 25 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT26_STATUS_Pos 26U /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Position */ +#define PMU_OVSCLR_CNT26_STATUS_Msk (1UL << PMU_OVSCLR_CNT26_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 26 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT27_STATUS_Pos 27U /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Position */ +#define PMU_OVSCLR_CNT27_STATUS_Msk (1UL << PMU_OVSCLR_CNT27_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 27 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT28_STATUS_Pos 28U /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Position */ +#define PMU_OVSCLR_CNT28_STATUS_Msk (1UL << PMU_OVSCLR_CNT28_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 28 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT29_STATUS_Pos 29U /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Position */ +#define PMU_OVSCLR_CNT29_STATUS_Msk (1UL << PMU_OVSCLR_CNT29_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 29 Overflow Clear Mask */ + +#define PMU_OVSCLR_CNT30_STATUS_Pos 30U /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Position */ +#define PMU_OVSCLR_CNT30_STATUS_Msk (1UL << PMU_OVSCLR_CNT30_STATUS_Pos) /*!< PMU OVSCLR: Event Counter 30 Overflow Clear Mask */ + +#define PMU_OVSCLR_CYCCNT_STATUS_Pos 31U /*!< PMU OVSCLR: Cycle Counter Overflow Clear Position */ +#define PMU_OVSCLR_CYCCNT_STATUS_Msk (1UL << PMU_OVSCLR_CYCCNT_STATUS_Pos) /*!< PMU OVSCLR: Cycle Counter Overflow Clear Mask */ + +/** \brief PMU Software Increment Counter */ + +#define PMU_SWINC_CNT0_Pos 0U /*!< PMU SWINC: Event Counter 0 Software Increment Position */ +#define PMU_SWINC_CNT0_Msk (1UL /*<< PMU_SWINC_CNT0_Pos */) /*!< PMU SWINC: Event Counter 0 Software Increment Mask */ + +#define PMU_SWINC_CNT1_Pos 1U /*!< PMU SWINC: Event Counter 1 Software Increment Position */ +#define PMU_SWINC_CNT1_Msk (1UL << PMU_SWINC_CNT1_Pos) /*!< PMU SWINC: Event Counter 1 Software Increment Mask */ + +#define PMU_SWINC_CNT2_Pos 2U /*!< PMU SWINC: Event Counter 2 Software Increment Position */ +#define PMU_SWINC_CNT2_Msk (1UL << PMU_SWINC_CNT2_Pos) /*!< PMU SWINC: Event Counter 2 Software Increment Mask */ + +#define PMU_SWINC_CNT3_Pos 3U /*!< PMU SWINC: Event Counter 3 Software Increment Position */ +#define PMU_SWINC_CNT3_Msk (1UL << PMU_SWINC_CNT3_Pos) /*!< PMU SWINC: Event Counter 3 Software Increment Mask */ + +#define PMU_SWINC_CNT4_Pos 4U /*!< PMU SWINC: Event Counter 4 Software Increment Position */ +#define PMU_SWINC_CNT4_Msk (1UL << PMU_SWINC_CNT4_Pos) /*!< PMU SWINC: Event Counter 4 Software Increment Mask */ + +#define PMU_SWINC_CNT5_Pos 5U /*!< PMU SWINC: Event Counter 5 Software Increment Position */ +#define PMU_SWINC_CNT5_Msk (1UL << PMU_SWINC_CNT5_Pos) /*!< PMU SWINC: Event Counter 5 Software Increment Mask */ + +#define PMU_SWINC_CNT6_Pos 6U /*!< PMU SWINC: Event Counter 6 Software Increment Position */ +#define PMU_SWINC_CNT6_Msk (1UL << PMU_SWINC_CNT6_Pos) /*!< PMU SWINC: Event Counter 6 Software Increment Mask */ + +#define PMU_SWINC_CNT7_Pos 7U /*!< PMU SWINC: Event Counter 7 Software Increment Position */ +#define PMU_SWINC_CNT7_Msk (1UL << PMU_SWINC_CNT7_Pos) /*!< PMU SWINC: Event Counter 7 Software Increment Mask */ + +#define PMU_SWINC_CNT8_Pos 8U /*!< PMU SWINC: Event Counter 8 Software Increment Position */ +#define PMU_SWINC_CNT8_Msk (1UL << PMU_SWINC_CNT8_Pos) /*!< PMU SWINC: Event Counter 8 Software Increment Mask */ + +#define PMU_SWINC_CNT9_Pos 9U /*!< PMU SWINC: Event Counter 9 Software Increment Position */ +#define PMU_SWINC_CNT9_Msk (1UL << PMU_SWINC_CNT9_Pos) /*!< PMU SWINC: Event Counter 9 Software Increment Mask */ + +#define PMU_SWINC_CNT10_Pos 10U /*!< PMU SWINC: Event Counter 10 Software Increment Position */ +#define PMU_SWINC_CNT10_Msk (1UL << PMU_SWINC_CNT10_Pos) /*!< PMU SWINC: Event Counter 10 Software Increment Mask */ + +#define PMU_SWINC_CNT11_Pos 11U /*!< PMU SWINC: Event Counter 11 Software Increment Position */ +#define PMU_SWINC_CNT11_Msk (1UL << PMU_SWINC_CNT11_Pos) /*!< PMU SWINC: Event Counter 11 Software Increment Mask */ + +#define PMU_SWINC_CNT12_Pos 12U /*!< PMU SWINC: Event Counter 12 Software Increment Position */ +#define PMU_SWINC_CNT12_Msk (1UL << PMU_SWINC_CNT12_Pos) /*!< PMU SWINC: Event Counter 12 Software Increment Mask */ + +#define PMU_SWINC_CNT13_Pos 13U /*!< PMU SWINC: Event Counter 13 Software Increment Position */ +#define PMU_SWINC_CNT13_Msk (1UL << PMU_SWINC_CNT13_Pos) /*!< PMU SWINC: Event Counter 13 Software Increment Mask */ + +#define PMU_SWINC_CNT14_Pos 14U /*!< PMU SWINC: Event Counter 14 Software Increment Position */ +#define PMU_SWINC_CNT14_Msk (1UL << PMU_SWINC_CNT14_Pos) /*!< PMU SWINC: Event Counter 14 Software Increment Mask */ + +#define PMU_SWINC_CNT15_Pos 15U /*!< PMU SWINC: Event Counter 15 Software Increment Position */ +#define PMU_SWINC_CNT15_Msk (1UL << PMU_SWINC_CNT15_Pos) /*!< PMU SWINC: Event Counter 15 Software Increment Mask */ + +#define PMU_SWINC_CNT16_Pos 16U /*!< PMU SWINC: Event Counter 16 Software Increment Position */ +#define PMU_SWINC_CNT16_Msk (1UL << PMU_SWINC_CNT16_Pos) /*!< PMU SWINC: Event Counter 16 Software Increment Mask */ + +#define PMU_SWINC_CNT17_Pos 17U /*!< PMU SWINC: Event Counter 17 Software Increment Position */ +#define PMU_SWINC_CNT17_Msk (1UL << PMU_SWINC_CNT17_Pos) /*!< PMU SWINC: Event Counter 17 Software Increment Mask */ + +#define PMU_SWINC_CNT18_Pos 18U /*!< PMU SWINC: Event Counter 18 Software Increment Position */ +#define PMU_SWINC_CNT18_Msk (1UL << PMU_SWINC_CNT18_Pos) /*!< PMU SWINC: Event Counter 18 Software Increment Mask */ + +#define PMU_SWINC_CNT19_Pos 19U /*!< PMU SWINC: Event Counter 19 Software Increment Position */ +#define PMU_SWINC_CNT19_Msk (1UL << PMU_SWINC_CNT19_Pos) /*!< PMU SWINC: Event Counter 19 Software Increment Mask */ + +#define PMU_SWINC_CNT20_Pos 20U /*!< PMU SWINC: Event Counter 20 Software Increment Position */ +#define PMU_SWINC_CNT20_Msk (1UL << PMU_SWINC_CNT20_Pos) /*!< PMU SWINC: Event Counter 20 Software Increment Mask */ + +#define PMU_SWINC_CNT21_Pos 21U /*!< PMU SWINC: Event Counter 21 Software Increment Position */ +#define PMU_SWINC_CNT21_Msk (1UL << PMU_SWINC_CNT21_Pos) /*!< PMU SWINC: Event Counter 21 Software Increment Mask */ + +#define PMU_SWINC_CNT22_Pos 22U /*!< PMU SWINC: Event Counter 22 Software Increment Position */ +#define PMU_SWINC_CNT22_Msk (1UL << PMU_SWINC_CNT22_Pos) /*!< PMU SWINC: Event Counter 22 Software Increment Mask */ + +#define PMU_SWINC_CNT23_Pos 23U /*!< PMU SWINC: Event Counter 23 Software Increment Position */ +#define PMU_SWINC_CNT23_Msk (1UL << PMU_SWINC_CNT23_Pos) /*!< PMU SWINC: Event Counter 23 Software Increment Mask */ + +#define PMU_SWINC_CNT24_Pos 24U /*!< PMU SWINC: Event Counter 24 Software Increment Position */ +#define PMU_SWINC_CNT24_Msk (1UL << PMU_SWINC_CNT24_Pos) /*!< PMU SWINC: Event Counter 24 Software Increment Mask */ + +#define PMU_SWINC_CNT25_Pos 25U /*!< PMU SWINC: Event Counter 25 Software Increment Position */ +#define PMU_SWINC_CNT25_Msk (1UL << PMU_SWINC_CNT25_Pos) /*!< PMU SWINC: Event Counter 25 Software Increment Mask */ + +#define PMU_SWINC_CNT26_Pos 26U /*!< PMU SWINC: Event Counter 26 Software Increment Position */ +#define PMU_SWINC_CNT26_Msk (1UL << PMU_SWINC_CNT26_Pos) /*!< PMU SWINC: Event Counter 26 Software Increment Mask */ + +#define PMU_SWINC_CNT27_Pos 27U /*!< PMU SWINC: Event Counter 27 Software Increment Position */ +#define PMU_SWINC_CNT27_Msk (1UL << PMU_SWINC_CNT27_Pos) /*!< PMU SWINC: Event Counter 27 Software Increment Mask */ + +#define PMU_SWINC_CNT28_Pos 28U /*!< PMU SWINC: Event Counter 28 Software Increment Position */ +#define PMU_SWINC_CNT28_Msk (1UL << PMU_SWINC_CNT28_Pos) /*!< PMU SWINC: Event Counter 28 Software Increment Mask */ + +#define PMU_SWINC_CNT29_Pos 29U /*!< PMU SWINC: Event Counter 29 Software Increment Position */ +#define PMU_SWINC_CNT29_Msk (1UL << PMU_SWINC_CNT29_Pos) /*!< PMU SWINC: Event Counter 29 Software Increment Mask */ + +#define PMU_SWINC_CNT30_Pos 30U /*!< PMU SWINC: Event Counter 30 Software Increment Position */ +#define PMU_SWINC_CNT30_Msk (1UL << PMU_SWINC_CNT30_Pos) /*!< PMU SWINC: Event Counter 30 Software Increment Mask */ + +/** \brief PMU Control Register Definitions */ + +#define PMU_CTRL_ENABLE_Pos 0U /*!< PMU CTRL: ENABLE Position */ +#define PMU_CTRL_ENABLE_Msk (1UL /*<< PMU_CTRL_ENABLE_Pos*/) /*!< PMU CTRL: ENABLE Mask */ + +#define PMU_CTRL_EVENTCNT_RESET_Pos 1U /*!< PMU CTRL: Event Counter Reset Position */ +#define PMU_CTRL_EVENTCNT_RESET_Msk (1UL << PMU_CTRL_EVENTCNT_RESET_Pos) /*!< PMU CTRL: Event Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_RESET_Pos 2U /*!< PMU CTRL: Cycle Counter Reset Position */ +#define PMU_CTRL_CYCCNT_RESET_Msk (1UL << PMU_CTRL_CYCCNT_RESET_Pos) /*!< PMU CTRL: Cycle Counter Reset Mask */ + +#define PMU_CTRL_CYCCNT_DISABLE_Pos 5U /*!< PMU CTRL: Disable Cycle Counter Position */ +#define PMU_CTRL_CYCCNT_DISABLE_Msk (1UL << PMU_CTRL_CYCCNT_DISABLE_Pos) /*!< PMU CTRL: Disable Cycle Counter Mask */ + +#define PMU_CTRL_FRZ_ON_OV_Pos 9U /*!< PMU CTRL: Freeze-on-overflow Position */ +#define PMU_CTRL_FRZ_ON_OV_Msk (1UL << PMU_CTRL_FRZ_ON_OVERFLOW_Pos) /*!< PMU CTRL: Freeze-on-overflow Mask */ + +#define PMU_CTRL_TRACE_ON_OV_Pos 11U /*!< PMU CTRL: Trace-on-overflow Position */ +#define PMU_CTRL_TRACE_ON_OV_Msk (1UL << PMU_CTRL_TRACE_ON_OVERFLOW_Pos) /*!< PMU CTRL: Trace-on-overflow Mask */ + +/** \brief PMU Type Register Definitions */ + +#define PMU_TYPE_NUM_CNTS_Pos 0U /*!< PMU TYPE: Number of Counters Position */ +#define PMU_TYPE_NUM_CNTS_Msk (0xFFUL /*<< PMU_TYPE_NUM_CNTS_Pos*/) /*!< PMU TYPE: Number of Counters Mask */ + +#define PMU_TYPE_SIZE_CNTS_Pos 8U /*!< PMU TYPE: Size of Counters Position */ +#define PMU_TYPE_SIZE_CNTS_Msk (0x3FUL << PMU_TYPE_SIZE_CNTS_Pos) /*!< PMU TYPE: Size of Counters Mask */ + +#define PMU_TYPE_CYCCNT_PRESENT_Pos 14U /*!< PMU TYPE: Cycle Counter Present Position */ +#define PMU_TYPE_CYCCNT_PRESENT_Msk (1UL << PMU_TYPE_CYCCNT_PRESENT_Pos) /*!< PMU TYPE: Cycle Counter Present Mask */ + +#define PMU_TYPE_FRZ_OV_SUPPORT_Pos 21U /*!< PMU TYPE: Freeze-on-overflow Support Position */ +#define PMU_TYPE_FRZ_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Freeze-on-overflow Support Mask */ + +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Pos 23U /*!< PMU TYPE: Trace-on-overflow Support Position */ +#define PMU_TYPE_TRACE_ON_OV_SUPPORT_Msk (1UL << PMU_TYPE_FRZ_OV_SUPPORT_Pos) /*!< PMU TYPE: Trace-on-overflow Support Mask */ + +/** \brief PMU Authentication Status Register Definitions */ + +#define PMU_AUTHSTATUS_NSID_Pos 0U /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSID_Msk (0x3UL /*<< PMU_AUTHSTATUS_NSID_Pos*/) /*!< PMU AUTHSTATUS: Non-secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSNID_Pos 2U /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSNID_Msk (0x3UL << PMU_AUTHSTATUS_NSNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SID_Pos 4U /*!< PMU AUTHSTATUS: Secure Invasive Debug Position */ +#define PMU_AUTHSTATUS_SID_Msk (0x3UL << PMU_AUTHSTATUS_SID_Pos) /*!< PMU AUTHSTATUS: Secure Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SNID_Pos 6U /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SNID_Msk (0x3UL << PMU_AUTHSTATUS_SNID_Pos) /*!< PMU AUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUID_Pos 16U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUID_Msk (0x3UL << PMU_AUTHSTATUS_NSUID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_NSUNID_Pos 18U /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_NSUNID_Msk (0x3UL << PMU_AUTHSTATUS_NSUNID_Pos) /*!< PMU AUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUID_Pos 20U /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Position */ +#define PMU_AUTHSTATUS_SUID_Msk (0x3UL << PMU_AUTHSTATUS_SUID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Invasive Debug Mask */ + +#define PMU_AUTHSTATUS_SUNID_Pos 22U /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Position */ +#define PMU_AUTHSTATUS_SUNID_Msk (0x3UL << PMU_AUTHSTATUS_SUNID_Pos) /*!< PMU AUTHSTATUS: Secure Unprivileged Non-invasive Debug Mask */ + + +/*@} end of group CMSIS_PMU */ +#endif + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +#define FPU_FPDSCR_FZ16_Pos 19U /*!< FPDSCR: FZ16 bit Position */ +#define FPU_FPDSCR_FZ16_Msk (1UL << FPU_FPDSCR_FZ16_Pos) /*!< FPDSCR: FZ16 bit Mask */ + +#define FPU_FPDSCR_LTPSIZE_Pos 16U /*!< FPDSCR: LTPSIZE bit Position */ +#define FPU_FPDSCR_LTPSIZE_Msk (7UL << FPU_FPDSCR_LTPSIZE_Pos) /*!< FPDSCR: LTPSIZE bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FPRound_Pos 28U /*!< MVFR0: FPRound bits Position */ +#define FPU_MVFR0_FPRound_Msk (0xFUL << FPU_MVFR0_FPRound_Pos) /*!< MVFR0: FPRound bits Mask */ + +#define FPU_MVFR0_FPSqrt_Pos 20U /*!< MVFR0: FPSqrt bits Position */ +#define FPU_MVFR0_FPSqrt_Msk (0xFUL << FPU_MVFR0_FPSqrt_Pos) /*!< MVFR0: FPSqrt bits Mask */ + +#define FPU_MVFR0_FPDivide_Pos 16U /*!< MVFR0: FPDivide bits Position */ +#define FPU_MVFR0_FPDivide_Msk (0xFUL << FPU_MVFR0_FPDivide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FPDP_Pos 8U /*!< MVFR0: FPDP bits Position */ +#define FPU_MVFR0_FPDP_Msk (0xFUL << FPU_MVFR0_FPDP_Pos) /*!< MVFR0: FPDP bits Mask */ + +#define FPU_MVFR0_FPSP_Pos 4U /*!< MVFR0: FPSP bits Position */ +#define FPU_MVFR0_FPSP_Msk (0xFUL << FPU_MVFR0_FPSP_Pos) /*!< MVFR0: FPSP bits Mask */ + +#define FPU_MVFR0_SIMDReg_Pos 0U /*!< MVFR0: SIMDReg bits Position */ +#define FPU_MVFR0_SIMDReg_Msk (0xFUL /*<< FPU_MVFR0_SIMDReg_Pos*/) /*!< MVFR0: SIMDReg bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FMAC_Pos 28U /*!< MVFR1: FMAC bits Position */ +#define FPU_MVFR1_FMAC_Msk (0xFUL << FPU_MVFR1_FMAC_Pos) /*!< MVFR1: FMAC bits Mask */ + +#define FPU_MVFR1_FPHP_Pos 24U /*!< MVFR1: FPHP bits Position */ +#define FPU_MVFR1_FPHP_Msk (0xFUL << FPU_MVFR1_FPHP_Pos) /*!< MVFR1: FPHP bits Mask */ + +#define FPU_MVFR1_FP16_Pos 20U /*!< MVFR1: FP16 bits Position */ +#define FPU_MVFR1_FP16_Msk (0xFUL << FPU_MVFR1_FP16_Pos) /*!< MVFR1: FP16 bits Mask */ + +#define FPU_MVFR1_MVE_Pos 8U /*!< MVFR1: MVE bits Position */ +#define FPU_MVFR1_MVE_Msk (0xFUL << FPU_MVFR1_MVE_Pos) /*!< MVFR1: MVE bits Mask */ + +#define FPU_MVFR1_FPDNaN_Pos 4U /*!< MVFR1: FPDNaN bits Position */ +#define FPU_MVFR1_FPDNaN_Msk (0xFUL << FPU_MVFR1_FPDNaN_Pos) /*!< MVFR1: FPDNaN bits Mask */ + +#define FPU_MVFR1_FPFtZ_Pos 0U /*!< MVFR1: FPFtZ bits Position */ +#define FPU_MVFR1_FPFtZ_Msk (0xFUL /*<< FPU_MVFR1_FPFtZ_Pos*/) /*!< MVFR1: FPFtZ bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + +/* CoreDebug is deprecated. replaced by DCB (Debug Control Block) */ +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief \deprecated Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< \deprecated CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< \deprecated CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< \deprecated CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_FPD_Pos 23U /*!< \deprecated CoreDebug DHCSR: S_FPD Position */ +#define CoreDebug_DHCSR_S_FPD_Msk (1UL << CoreDebug_DHCSR_S_FPD_Pos) /*!< \deprecated CoreDebug DHCSR: S_FPD Mask */ + +#define CoreDebug_DHCSR_S_SUIDE_Pos 22U /*!< \deprecated CoreDebug DHCSR: S_SUIDE Position */ +#define CoreDebug_DHCSR_S_SUIDE_Msk (1UL << CoreDebug_DHCSR_S_SUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SUIDE Mask */ + +#define CoreDebug_DHCSR_S_NSUIDE_Pos 21U /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Position */ +#define CoreDebug_DHCSR_S_NSUIDE_Msk (1UL << CoreDebug_DHCSR_S_NSUIDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_NSUIDE Mask */ + +#define CoreDebug_DHCSR_S_SDE_Pos 20U /*!< \deprecated CoreDebug DHCSR: S_SDE Position */ +#define CoreDebug_DHCSR_S_SDE_Msk (1UL << CoreDebug_DHCSR_S_SDE_Pos) /*!< \deprecated CoreDebug DHCSR: S_SDE Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< \deprecated CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< \deprecated CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< \deprecated CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< \deprecated CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< \deprecated CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< \deprecated CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_PMOV_Pos 6U /*!< \deprecated CoreDebug DHCSR: C_PMOV Position */ +#define CoreDebug_DHCSR_C_PMOV_Msk (1UL << CoreDebug_DHCSR_C_PMOV_Pos) /*!< \deprecated CoreDebug DHCSR: C_PMOV Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< \deprecated CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< \deprecated CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< \deprecated CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< \deprecated CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< \deprecated CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< \deprecated CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< \deprecated CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< \deprecated CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< \deprecated CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< \deprecated CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< \deprecated CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< \deprecated CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< \deprecated CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< \deprecated CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< \deprecated CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< \deprecated CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< \deprecated CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< \deprecated CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< \deprecated CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< \deprecated CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< \deprecated CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< \deprecated CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< \deprecated CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< \deprecated CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Set Clear Exception and Monitor Control Register Definitions */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_CLR_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_CLR_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: CLR_MON_PEND, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_REQ_Pos 3U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Position */ +#define CoreDebug_DSCEMCR_SET_MON_REQ_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_REQ_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_REQ, Mask */ + +#define CoreDebug_DSCEMCR_SET_MON_PEND_Pos 1U /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Position */ +#define CoreDebug_DSCEMCR_SET_MON_PEND_Msk (1UL << CoreDebug_DSCEMCR_SET_MON_PEND_Pos) /*!< \deprecated CoreDebug DSCEMCR: SET_MON_PEND, Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_UIDEN_Pos 10U /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_UIDAPEN_Pos 9U /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Position */ +#define CoreDebug_DAUTHCTRL_UIDAPEN_Msk (1UL << CoreDebug_DAUTHCTRL_UIDAPEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: UIDAPEN, Mask */ + +#define CoreDebug_DAUTHCTRL_FSDMA_Pos 8U /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Position */ +#define CoreDebug_DAUTHCTRL_FSDMA_Msk (1UL << CoreDebug_DAUTHCTRL_FSDMA_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: FSDMA, Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< \deprecated CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< \deprecated CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< \deprecated CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< \deprecated CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< \deprecated CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< \deprecated CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< \deprecated CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< \deprecated CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + __OM uint32_t DSCEMCR; /*!< Offset: 0x010 ( /W) Debug Set Clear Exception and Monitor Control Register */ + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_FPD_Pos 23U /*!< DCB DHCSR: Floating-point registers Debuggable Position */ +#define DCB_DHCSR_S_FPD_Msk (0x1UL << DCB_DHCSR_S_FPD_Pos) /*!< DCB DHCSR: Floating-point registers Debuggable Mask */ + +#define DCB_DHCSR_S_SUIDE_Pos 22U /*!< DCB DHCSR: Secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_SUIDE_Msk (0x1UL << DCB_DHCSR_S_SUIDE_Pos) /*!< DCB DHCSR: Secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_NSUIDE_Pos 21U /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Position */ +#define DCB_DHCSR_S_NSUIDE_Msk (0x1UL << DCB_DHCSR_S_NSUIDE_Pos) /*!< DCB DHCSR: Non-secure unprivileged halting debug enabled Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_PMOV_Pos 6U /*!< DCB DHCSR: Halt on PMU overflow control Position */ +#define DCB_DHCSR_C_PMOV_Msk (0x1UL << DCB_DHCSR_C_PMOV_Pos) /*!< DCB DHCSR: Halt on PMU overflow control Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DSCEMCR, Debug Set Clear Exception and Monitor Control Register Definitions */ +#define DCB_DSCEMCR_CLR_MON_REQ_Pos 19U /*!< DCB DSCEMCR: Clear monitor request Position */ +#define DCB_DSCEMCR_CLR_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_REQ_Pos) /*!< DCB DSCEMCR: Clear monitor request Mask */ + +#define DCB_DSCEMCR_CLR_MON_PEND_Pos 17U /*!< DCB DSCEMCR: Clear monitor pend Position */ +#define DCB_DSCEMCR_CLR_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_CLR_MON_PEND_Pos) /*!< DCB DSCEMCR: Clear monitor pend Mask */ + +#define DCB_DSCEMCR_SET_MON_REQ_Pos 3U /*!< DCB DSCEMCR: Set monitor request Position */ +#define DCB_DSCEMCR_SET_MON_REQ_Msk (0x1UL << DCB_DSCEMCR_SET_MON_REQ_Pos) /*!< DCB DSCEMCR: Set monitor request Mask */ + +#define DCB_DSCEMCR_SET_MON_PEND_Pos 1U /*!< DCB DSCEMCR: Set monitor pend Position */ +#define DCB_DSCEMCR_SET_MON_PEND_Msk (0x1UL << DCB_DSCEMCR_SET_MON_PEND_Pos) /*!< DCB DSCEMCR: Set monitor pend Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_UIDEN_Pos 10U /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Position */ +#define DCB_DAUTHCTRL_UIDEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive Debug Enable Mask */ + +#define DCB_DAUTHCTRL_UIDAPEN_Pos 9U /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Position */ +#define DCB_DAUTHCTRL_UIDAPEN_Msk (0x1UL << DCB_DAUTHCTRL_UIDAPEN_Pos) /*!< DCB DAUTHCTRL: Unprivileged Invasive DAP Access Enable Mask */ + +#define DCB_DAUTHCTRL_FSDMA_Pos 8U /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Position */ +#define DCB_DAUTHCTRL_FSDMA_Msk (0x1UL << DCB_DAUTHCTRL_FSDMA_Pos) /*!< DCB DAUTHCTRL: Force Secure DebugMonitor Allowed Mask */ + +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SUNID_Pos 22U /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUNID_Msk (0x3UL << DIB_DAUTHSTATUS_SUNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Non-invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SUID_Pos 20U /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_SUID_Msk (0x3UL << DIB_DAUTHSTATUS_SUID_Pos ) /*!< DIB DAUTHSTATUS: Secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_NSUNID_Pos 18U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Position */ +#define DIB_DAUTHSTATUS_NSUNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Non-invasive Debug Allo Mask */ + +#define DIB_DAUTHSTATUS_NSUID_Pos 16U /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Position */ +#define DIB_DAUTHSTATUS_NSUID_Msk (0x3UL << DIB_DAUTHSTATUS_NSUID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Unprivileged Invasive Debug Allowed Mask */ + +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define MEMSYSCTL_BASE (0xE001E000UL) /*!< Memory System Control Base Address */ + #define ERRBNK_BASE (0xE001E100UL) /*!< Error Banking Base Address */ + #define PWRMODCTL_BASE (0xE001E300UL) /*!< Power Mode Control Base Address */ + #define EWIC_BASE (0xE001E400UL) /*!< External Wakeup Interrupt Controller Base Address */ + #define PRCCFGINF_BASE (0xE001E700UL) /*!< Processor Configuration Information Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< \deprecated Core Debug Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB 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 ICB ((ICB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #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 */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define MEMSYSCTL ((MemSysCtl_Type *) MEMSYSCTL_BASE ) /*!< Memory System Control configuration struct */ + #define ERRBNK ((ErrBnk_Type *) ERRBNK_BASE ) /*!< Error Banking configuration struct */ + #define PWRMODCTL ((PwrModCtl_Type *) PWRMODCTL_BASE ) /*!< Power Mode Control configuration struct */ + #define EWIC ((EWIC_Type *) EWIC_BASE ) /*!< EWIC configuration struct */ + #define PRCCFGINF ((PrcCfgInf_Type *) PRCCFGINF_BASE ) /*!< Processor Configuration Information configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< \deprecated Core Debug configuration struct */ + #define DCB ((DCB_Type *) DCB_BASE ) /*!< DCB configuration struct */ + #define DIB ((DIB_Type *) DIB_BASE ) /*!< DIB configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + #define PMU_BASE (0xE0003000UL) /*!< PMU Base Address */ + #define PMU ((PMU_Type *) PMU_BASE ) /*!< PMU configuration struct */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< \deprecated Core Debug Base Address (non-secure address space) */ + #define DCB_BASE_NS (0xE002EDF0UL) /*!< DCB Base Address (non-secure address space) */ + #define DIB_BASE_NS (0xE002EFB0UL) /*!< DIB Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define ICB_NS ((ICB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< \deprecated Core Debug configuration struct (non-secure address space) */ + #define DCB_NS ((DCB_Type *) DCB_BASE_NS ) /*!< DCB configuration struct (non-secure address space) */ + #define DIB_NS ((DIB_Type *) DIB_BASE_NS ) /*!< DIB configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_register_aliases Backwards Compatibility Aliases + \brief Register alias definitions for backwards compatibility. + @{ + */ + +/*@} */ + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## PMU functions and events #################################### */ + +#if defined (__PMU_PRESENT) && (__PMU_PRESENT == 1U) + +#include "pmu_armv8.h" + +/** + \brief Cortex-M85 PMU events + \note Architectural PMU events can be found in pmu_armv8.h +*/ + +#define ARMCM85_PMU_ECC_ERR 0xC000 /*!< One or more Error Correcting Code (ECC) errors detected */ +#define ARMCM85_PMU_ECC_ERR_MBIT 0xC001 /*!< One or more multi-bit ECC errors detected */ +#define ARMCM85_PMU_ECC_ERR_DCACHE 0xC010 /*!< One or more ECC errors in the data cache */ +#define ARMCM85_PMU_ECC_ERR_ICACHE 0xC011 /*!< One or more ECC errors in the instruction cache */ +#define ARMCM85_PMU_ECC_ERR_MBIT_DCACHE 0xC012 /*!< One or more multi-bit ECC errors in the data cache */ +#define ARMCM85_PMU_ECC_ERR_MBIT_ICACHE 0xC013 /*!< One or more multi-bit ECC errors in the instruction cache */ +#define ARMCM85_PMU_ECC_ERR_DTCM 0xC020 /*!< One or more ECC errors in the Data Tightly Coupled Memory (DTCM) */ +#define ARMCM85_PMU_ECC_ERR_ITCM 0xC021 /*!< One or more ECC errors in the Instruction Tightly Coupled Memory (ITCM) */ +#define ARMCM85_PMU_ECC_ERR_MBIT_DTCM 0xC022 /*!< One or more multi-bit ECC errors in the DTCM */ +#define ARMCM85_PMU_ECC_ERR_MBIT_ITCM 0xC023 /*!< One or more multi-bit ECC errors in the ITCM */ +#define ARMCM85_PMU_PF_LINEFILL 0xC100 /*!< The prefetcher starts a line-fill */ +#define ARMCM85_PMU_PF_CANCEL 0xC101 /*!< The prefetcher stops prefetching */ +#define ARMCM85_PMU_PF_DROP_LINEFILL 0xC102 /*!< A linefill triggered by a prefetcher has been dropped because of lack of buffering */ +#define ARMCM85_PMU_NWAMODE_ENTER 0xC200 /*!< No write-allocate mode entry */ +#define ARMCM85_PMU_NWAMODE 0xC201 /*!< Write-allocate store is not allocated into the data cache due to no-write-allocate mode */ +#define ARMCM85_PMU_SAHB_ACCESS 0xC300 /*!< Read or write access on the S-AHB interface to the TCM */ +#define ARMCM85_PMU_PAHB_ACCESS 0xC301 /*!< Read or write access on the P-AHB write interface */ +#define ARMCM85_PMU_AXI_WRITE_ACCESS 0xC302 /*!< Any beat access to M-AXI write interface */ +#define ARMCM85_PMU_AXI_READ_ACCESS 0xC303 /*!< Any beat access to M-AXI read interface */ +#define ARMCM85_PMU_DOSTIMEOUT_DOUBLE 0xC400 /*!< Denial of Service timeout has fired twice and caused buffers to drain to allow forward progress */ +#define ARMCM85_PMU_DOSTIMEOUT_TRIPLE 0xC401 /*!< Denial of Service timeout has fired three times and blocked the LSU to force forward progress */ + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_FPSP_Msk | FPU_MVFR0_FPDP_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + +/* ########################## MVE functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_MveFunctions MVE Functions + \brief Function that provides MVE type. + @{ + */ + +/** + \brief get MVE type + \details returns the MVE type + \returns + - \b 0: No Vector Extension (MVE) + - \b 1: Integer Vector Extension (MVE-I) + - \b 2: Floating-point Vector Extension (MVE-F) + */ +__STATIC_INLINE uint32_t SCB_GetMVEType(void) +{ + const uint32_t mvfr1 = FPU->MVFR1; + if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x2U << FPU_MVFR1_MVE_Pos)) + { + return 2U; + } + else if ((mvfr1 & FPU_MVFR1_MVE_Msk) == (0x1U << FPU_MVFR1_MVE_Pos)) + { + return 1U; + } + else + { + return 0U; + } +} + + +/*@} end of CMSIS_Core_MveFunctions */ + + +/* ########################## Cache functions #################################### */ + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) +#include "cachel1_armv7.h" +#endif + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + +/* ################### PAC Key functions ########################### */ + +#if (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) +#include "pac_armv81.h" +#endif + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM85_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h new file mode 100644 index 0000000000..e252068ce6 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc000.h @@ -0,0 +1,1030 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 27. March 2020 + ******************************************************************************/ +/* + * Copyright (c) 2009-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_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 SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT 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 SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 RESERVED0[1U]; + __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 */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control 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 Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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 */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#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 */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* 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 Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + 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))); + } + else + { + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M0 and M0+ do not require the architectural barrier - assume SC000 is the same */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __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 */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h new file mode 100644 index 0000000000..d66621031e --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_sc300.h @@ -0,0 +1,1917 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.10 + * @date 04. June 2021 + ******************************************************************************/ +/* + * Copyright (c) 2009-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_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 SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __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_FP + #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 ( __TI_ARM__ ) + #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 "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 1U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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 SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU 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:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q 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:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + 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 */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control 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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP 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 */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET 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_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x1UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x1UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x1UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x1UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} 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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug 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 SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#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 */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug 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. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M3 does not require the architectural barrier */ +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h new file mode 100644 index 0000000000..ebc0f77eb7 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/core_starmc1.h @@ -0,0 +1,3592 @@ +/**************************************************************************//** + * @file core_starmc1.h + * @brief CMSIS ArmChina STAR-MC1 Core Peripheral Access Layer Header File + * @version V1.0.2 + * @date 07. April 2022 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. + * Copyright (c) 2018-2022 Arm China. + * All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic ignored "-Wpedantic" /* disable pedantic warning due to unnamed structs/unions */ +#endif + +#ifndef __CORE_STAR_H_GENERIC +#define __CORE_STAR_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 STAR-MC1 + @{ + */ + +#include "cmsis_version.h" + +/* Macro Define for STAR-MC1 */ +#define __STAR_MC (1U) /*!< STAR-MC Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_FP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_STAR_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_STAR_H_DEPENDANT +#define __CORE_STAR_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __STAR_REV + #define __STAR_REV 0x0000U + #warning "__STAR_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #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 STAR-MC1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for STAR-MC1 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:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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 */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE 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:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 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_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE 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 nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV 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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} 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 */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __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 */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED_ADD1[21U]; + __IOM uint32_t SFSR; /*!< Offset: 0x0E4 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x0E8 (R/W) Secure Fault Address Register */ + uint32_t RESERVED3[69U]; + __OM uint32_t STIR; /*!< Offset: F00-D00=0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} SCB_Type; + +typedef struct +{ + __IOM uint32_t CACR; /*!< Offset: 0x0 (R/W) L1 Cache Control Register */ + __IOM uint32_t ITCMCR; /*!< Offset: 0x10 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x14 (R/W) Data Tightly-Coupled Memory Control Registers */ +}EMSS_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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE 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 Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP 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 */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_CFSR_MEMFAULTSR_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_CFSR_MEMFAULTSR_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_CFSR_MEMFAULTSR_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +#define SCB_CLIDR_IC_Pos 0U /*!< SCB CLIDR: IC Position */ +#define SCB_CLIDR_IC_Msk (1UL << SCB_CLIDR_IC_Pos) /*!< SCB CLIDR: IC Mask */ + +#define SCB_CLIDR_DC_Pos 1U /*!< SCB CLIDR: DC Position */ +#define SCB_CLIDR_DC_Msk (1UL << SCB_CLIDR_DC_Pos) /*!< SCB CLIDR: DC Mask */ + + + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache line Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_LEVEL_Pos 1U /*!< SCB DCISW: Level Position */ +#define SCB_DCISW_LEVEL_Msk (7UL << SCB_DCISW_LEVEL_Pos) /*!< SCB DCISW: Level Mask */ + +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0xFFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean line by Set-way Register Definitions */ +#define SCB_DCCSW_LEVEL_Pos 1U /*!< SCB DCCSW: Level Position */ +#define SCB_DCCSW_LEVEL_Msk (7UL << SCB_DCCSW_LEVEL_Pos) /*!< SCB DCCSW: Level Mask */ + +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0xFFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_LEVEL_Pos 1U /*!< SCB DCCISW: Level Position */ +#define SCB_DCCISW_LEVEL_Msk (7UL << SCB_DCCISW_LEVEL_Pos) /*!< SCB DCCISW: Level Mask */ + +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0xFFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* ArmChina: Implementation Defined */ +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_DCCLEAN_Pos 16U /*!< SCB CACR: DCCLEAN Position */ +#define SCB_CACR_DCCLEAN_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: DCCLEAN Mask */ + +#define SCB_CACR_ICACTIVE_Pos 13U /*!< SCB CACR: ICACTIVE Position */ +#define SCB_CACR_ICACTIVE_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: ICACTIVE Mask */ + +#define SCB_CACR_DCACTIVE_Pos 12U /*!< SCB CACR: DCACTIVE Position */ +#define SCB_CACR_DCACTIVE_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: DCACTIVE Mask */ + +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \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_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[32U]; + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and VFP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and VFP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and VFP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and VFP Feature Register 2 Definitions */ +#define FPU_MVFR2_FPMisc_Pos 4U /*!< MVFR2: FPMisc bits Position */ +#define FPU_MVFR2_FPMisc_Msk (0xFUL << FPU_MVFR2_FPMisc_Pos) /*!< MVFR2: FPMisc bits Mask */ + +/*@} end of group CMSIS_FPU */ + + + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DCB Debug Control Block + \brief Type definitions for the Debug Control Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Control Block Registers (DCB). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} DCB_Type; + +/* DHCSR, Debug Halting Control and Status Register Definitions */ +#define DCB_DHCSR_DBGKEY_Pos 16U /*!< DCB DHCSR: Debug key Position */ +#define DCB_DHCSR_DBGKEY_Msk (0xFFFFUL << DCB_DHCSR_DBGKEY_Pos) /*!< DCB DHCSR: Debug key Mask */ + +#define DCB_DHCSR_S_RESTART_ST_Pos 26U /*!< DCB DHCSR: Restart sticky status Position */ +#define DCB_DHCSR_S_RESTART_ST_Msk (0x1UL << DCB_DHCSR_S_RESTART_ST_Pos) /*!< DCB DHCSR: Restart sticky status Mask */ + +#define DCB_DHCSR_S_RESET_ST_Pos 25U /*!< DCB DHCSR: Reset sticky status Position */ +#define DCB_DHCSR_S_RESET_ST_Msk (0x1UL << DCB_DHCSR_S_RESET_ST_Pos) /*!< DCB DHCSR: Reset sticky status Mask */ + +#define DCB_DHCSR_S_RETIRE_ST_Pos 24U /*!< DCB DHCSR: Retire sticky status Position */ +#define DCB_DHCSR_S_RETIRE_ST_Msk (0x1UL << DCB_DHCSR_S_RETIRE_ST_Pos) /*!< DCB DHCSR: Retire sticky status Mask */ + +#define DCB_DHCSR_S_SDE_Pos 20U /*!< DCB DHCSR: Secure debug enabled Position */ +#define DCB_DHCSR_S_SDE_Msk (0x1UL << DCB_DHCSR_S_SDE_Pos) /*!< DCB DHCSR: Secure debug enabled Mask */ + +#define DCB_DHCSR_S_LOCKUP_Pos 19U /*!< DCB DHCSR: Lockup status Position */ +#define DCB_DHCSR_S_LOCKUP_Msk (0x1UL << DCB_DHCSR_S_LOCKUP_Pos) /*!< DCB DHCSR: Lockup status Mask */ + +#define DCB_DHCSR_S_SLEEP_Pos 18U /*!< DCB DHCSR: Sleeping status Position */ +#define DCB_DHCSR_S_SLEEP_Msk (0x1UL << DCB_DHCSR_S_SLEEP_Pos) /*!< DCB DHCSR: Sleeping status Mask */ + +#define DCB_DHCSR_S_HALT_Pos 17U /*!< DCB DHCSR: Halted status Position */ +#define DCB_DHCSR_S_HALT_Msk (0x1UL << DCB_DHCSR_S_HALT_Pos) /*!< DCB DHCSR: Halted status Mask */ + +#define DCB_DHCSR_S_REGRDY_Pos 16U /*!< DCB DHCSR: Register ready status Position */ +#define DCB_DHCSR_S_REGRDY_Msk (0x1UL << DCB_DHCSR_S_REGRDY_Pos) /*!< DCB DHCSR: Register ready status Mask */ + +#define DCB_DHCSR_C_SNAPSTALL_Pos 5U /*!< DCB DHCSR: Snap stall control Position */ +#define DCB_DHCSR_C_SNAPSTALL_Msk (0x1UL << DCB_DHCSR_C_SNAPSTALL_Pos) /*!< DCB DHCSR: Snap stall control Mask */ + +#define DCB_DHCSR_C_MASKINTS_Pos 3U /*!< DCB DHCSR: Mask interrupts control Position */ +#define DCB_DHCSR_C_MASKINTS_Msk (0x1UL << DCB_DHCSR_C_MASKINTS_Pos) /*!< DCB DHCSR: Mask interrupts control Mask */ + +#define DCB_DHCSR_C_STEP_Pos 2U /*!< DCB DHCSR: Step control Position */ +#define DCB_DHCSR_C_STEP_Msk (0x1UL << DCB_DHCSR_C_STEP_Pos) /*!< DCB DHCSR: Step control Mask */ + +#define DCB_DHCSR_C_HALT_Pos 1U /*!< DCB DHCSR: Halt control Position */ +#define DCB_DHCSR_C_HALT_Msk (0x1UL << DCB_DHCSR_C_HALT_Pos) /*!< DCB DHCSR: Halt control Mask */ + +#define DCB_DHCSR_C_DEBUGEN_Pos 0U /*!< DCB DHCSR: Debug enable control Position */ +#define DCB_DHCSR_C_DEBUGEN_Msk (0x1UL /*<< DCB_DHCSR_C_DEBUGEN_Pos*/) /*!< DCB DHCSR: Debug enable control Mask */ + +/* DCRSR, Debug Core Register Select Register Definitions */ +#define DCB_DCRSR_REGWnR_Pos 16U /*!< DCB DCRSR: Register write/not-read Position */ +#define DCB_DCRSR_REGWnR_Msk (0x1UL << DCB_DCRSR_REGWnR_Pos) /*!< DCB DCRSR: Register write/not-read Mask */ + +#define DCB_DCRSR_REGSEL_Pos 0U /*!< DCB DCRSR: Register selector Position */ +#define DCB_DCRSR_REGSEL_Msk (0x7FUL /*<< DCB_DCRSR_REGSEL_Pos*/) /*!< DCB DCRSR: Register selector Mask */ + +/* DCRDR, Debug Core Register Data Register Definitions */ +#define DCB_DCRDR_DBGTMP_Pos 0U /*!< DCB DCRDR: Data temporary buffer Position */ +#define DCB_DCRDR_DBGTMP_Msk (0xFFFFFFFFUL /*<< DCB_DCRDR_DBGTMP_Pos*/) /*!< DCB DCRDR: Data temporary buffer Mask */ + +/* DEMCR, Debug Exception and Monitor Control Register Definitions */ +#define DCB_DEMCR_TRCENA_Pos 24U /*!< DCB DEMCR: Trace enable Position */ +#define DCB_DEMCR_TRCENA_Msk (0x1UL << DCB_DEMCR_TRCENA_Pos) /*!< DCB DEMCR: Trace enable Mask */ + +#define DCB_DEMCR_MONPRKEY_Pos 23U /*!< DCB DEMCR: Monitor pend req key Position */ +#define DCB_DEMCR_MONPRKEY_Msk (0x1UL << DCB_DEMCR_MONPRKEY_Pos) /*!< DCB DEMCR: Monitor pend req key Mask */ + +#define DCB_DEMCR_UMON_EN_Pos 21U /*!< DCB DEMCR: Unprivileged monitor enable Position */ +#define DCB_DEMCR_UMON_EN_Msk (0x1UL << DCB_DEMCR_UMON_EN_Pos) /*!< DCB DEMCR: Unprivileged monitor enable Mask */ + +#define DCB_DEMCR_SDME_Pos 20U /*!< DCB DEMCR: Secure DebugMonitor enable Position */ +#define DCB_DEMCR_SDME_Msk (0x1UL << DCB_DEMCR_SDME_Pos) /*!< DCB DEMCR: Secure DebugMonitor enable Mask */ + +#define DCB_DEMCR_MON_REQ_Pos 19U /*!< DCB DEMCR: Monitor request Position */ +#define DCB_DEMCR_MON_REQ_Msk (0x1UL << DCB_DEMCR_MON_REQ_Pos) /*!< DCB DEMCR: Monitor request Mask */ + +#define DCB_DEMCR_MON_STEP_Pos 18U /*!< DCB DEMCR: Monitor step Position */ +#define DCB_DEMCR_MON_STEP_Msk (0x1UL << DCB_DEMCR_MON_STEP_Pos) /*!< DCB DEMCR: Monitor step Mask */ + +#define DCB_DEMCR_MON_PEND_Pos 17U /*!< DCB DEMCR: Monitor pend Position */ +#define DCB_DEMCR_MON_PEND_Msk (0x1UL << DCB_DEMCR_MON_PEND_Pos) /*!< DCB DEMCR: Monitor pend Mask */ + +#define DCB_DEMCR_MON_EN_Pos 16U /*!< DCB DEMCR: Monitor enable Position */ +#define DCB_DEMCR_MON_EN_Msk (0x1UL << DCB_DEMCR_MON_EN_Pos) /*!< DCB DEMCR: Monitor enable Mask */ + +#define DCB_DEMCR_VC_SFERR_Pos 11U /*!< DCB DEMCR: Vector Catch SecureFault Position */ +#define DCB_DEMCR_VC_SFERR_Msk (0x1UL << DCB_DEMCR_VC_SFERR_Pos) /*!< DCB DEMCR: Vector Catch SecureFault Mask */ + +#define DCB_DEMCR_VC_HARDERR_Pos 10U /*!< DCB DEMCR: Vector Catch HardFault errors Position */ +#define DCB_DEMCR_VC_HARDERR_Msk (0x1UL << DCB_DEMCR_VC_HARDERR_Pos) /*!< DCB DEMCR: Vector Catch HardFault errors Mask */ + +#define DCB_DEMCR_VC_INTERR_Pos 9U /*!< DCB DEMCR: Vector Catch interrupt errors Position */ +#define DCB_DEMCR_VC_INTERR_Msk (0x1UL << DCB_DEMCR_VC_INTERR_Pos) /*!< DCB DEMCR: Vector Catch interrupt errors Mask */ + +#define DCB_DEMCR_VC_BUSERR_Pos 8U /*!< DCB DEMCR: Vector Catch BusFault errors Position */ +#define DCB_DEMCR_VC_BUSERR_Msk (0x1UL << DCB_DEMCR_VC_BUSERR_Pos) /*!< DCB DEMCR: Vector Catch BusFault errors Mask */ + +#define DCB_DEMCR_VC_STATERR_Pos 7U /*!< DCB DEMCR: Vector Catch state errors Position */ +#define DCB_DEMCR_VC_STATERR_Msk (0x1UL << DCB_DEMCR_VC_STATERR_Pos) /*!< DCB DEMCR: Vector Catch state errors Mask */ + +#define DCB_DEMCR_VC_CHKERR_Pos 6U /*!< DCB DEMCR: Vector Catch check errors Position */ +#define DCB_DEMCR_VC_CHKERR_Msk (0x1UL << DCB_DEMCR_VC_CHKERR_Pos) /*!< DCB DEMCR: Vector Catch check errors Mask */ + +#define DCB_DEMCR_VC_NOCPERR_Pos 5U /*!< DCB DEMCR: Vector Catch NOCP errors Position */ +#define DCB_DEMCR_VC_NOCPERR_Msk (0x1UL << DCB_DEMCR_VC_NOCPERR_Pos) /*!< DCB DEMCR: Vector Catch NOCP errors Mask */ + +#define DCB_DEMCR_VC_MMERR_Pos 4U /*!< DCB DEMCR: Vector Catch MemManage errors Position */ +#define DCB_DEMCR_VC_MMERR_Msk (0x1UL << DCB_DEMCR_VC_MMERR_Pos) /*!< DCB DEMCR: Vector Catch MemManage errors Mask */ + +#define DCB_DEMCR_VC_CORERESET_Pos 0U /*!< DCB DEMCR: Vector Catch Core reset Position */ +#define DCB_DEMCR_VC_CORERESET_Msk (0x1UL /*<< DCB_DEMCR_VC_CORERESET_Pos*/) /*!< DCB DEMCR: Vector Catch Core reset Mask */ + +/* DAUTHCTRL, Debug Authentication Control Register Definitions */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPNIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPNIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure non-invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPNIDENSEL_Msk (0x1UL << DCB_DAUTHCTRL_SPNIDENSEL_Pos) /*!< DCB DAUTHCTRL: Secure non-invasive debug enable select Mask */ + +#define DCB_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Position */ +#define DCB_DAUTHCTRL_INTSPIDEN_Msk (0x1UL << DCB_DAUTHCTRL_INTSPIDEN_Pos) /*!< DCB DAUTHCTRL: Internal Secure invasive debug enable Mask */ + +#define DCB_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< DCB DAUTHCTRL: Secure invasive debug enable select Position */ +#define DCB_DAUTHCTRL_SPIDENSEL_Msk (0x1UL /*<< DCB_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< DCB DAUTHCTRL: Secure invasive debug enable select Mask */ + +/* DSCSR, Debug Security Control and Status Register Definitions */ +#define DCB_DSCSR_CDSKEY_Pos 17U /*!< DCB DSCSR: CDS write-enable key Position */ +#define DCB_DSCSR_CDSKEY_Msk (0x1UL << DCB_DSCSR_CDSKEY_Pos) /*!< DCB DSCSR: CDS write-enable key Mask */ + +#define DCB_DSCSR_CDS_Pos 16U /*!< DCB DSCSR: Current domain Secure Position */ +#define DCB_DSCSR_CDS_Msk (0x1UL << DCB_DSCSR_CDS_Pos) /*!< DCB DSCSR: Current domain Secure Mask */ + +#define DCB_DSCSR_SBRSEL_Pos 1U /*!< DCB DSCSR: Secure banked register select Position */ +#define DCB_DSCSR_SBRSEL_Msk (0x1UL << DCB_DSCSR_SBRSEL_Pos) /*!< DCB DSCSR: Secure banked register select Mask */ + +#define DCB_DSCSR_SBRSELEN_Pos 0U /*!< DCB DSCSR: Secure banked register select enable Position */ +#define DCB_DSCSR_SBRSELEN_Msk (0x1UL /*<< DCB_DSCSR_SBRSELEN_Pos*/) /*!< DCB DSCSR: Secure banked register select enable Mask */ + +/*@} end of group CMSIS_DCB */ + + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DIB Debug Identification Block + \brief Type definitions for the Debug Identification Block Registers + @{ + */ + +/** + \brief Structure type to access the Debug Identification Block Registers (DIB). + */ +typedef struct +{ + __OM uint32_t DLAR; /*!< Offset: 0x000 ( /W) SCS Software Lock Access Register */ + __IM uint32_t DLSR; /*!< Offset: 0x004 (R/ ) SCS Software Lock Status Register */ + __IM uint32_t DAUTHSTATUS; /*!< Offset: 0x008 (R/ ) Debug Authentication Status Register */ + __IM uint32_t DDEVARCH; /*!< Offset: 0x00C (R/ ) SCS Device Architecture Register */ + __IM uint32_t DDEVTYPE; /*!< Offset: 0x010 (R/ ) SCS Device Type Register */ +} DIB_Type; + +/* DLAR, SCS Software Lock Access Register Definitions */ +#define DIB_DLAR_KEY_Pos 0U /*!< DIB DLAR: KEY Position */ +#define DIB_DLAR_KEY_Msk (0xFFFFFFFFUL /*<< DIB_DLAR_KEY_Pos */) /*!< DIB DLAR: KEY Mask */ + +/* DLSR, SCS Software Lock Status Register Definitions */ +#define DIB_DLSR_nTT_Pos 2U /*!< DIB DLSR: Not thirty-two bit Position */ +#define DIB_DLSR_nTT_Msk (0x1UL << DIB_DLSR_nTT_Pos ) /*!< DIB DLSR: Not thirty-two bit Mask */ + +#define DIB_DLSR_SLK_Pos 1U /*!< DIB DLSR: Software Lock status Position */ +#define DIB_DLSR_SLK_Msk (0x1UL << DIB_DLSR_SLK_Pos ) /*!< DIB DLSR: Software Lock status Mask */ + +#define DIB_DLSR_SLI_Pos 0U /*!< DIB DLSR: Software Lock implemented Position */ +#define DIB_DLSR_SLI_Msk (0x1UL /*<< DIB_DLSR_SLI_Pos*/) /*!< DIB DLSR: Software Lock implemented Mask */ + +/* DAUTHSTATUS, Debug Authentication Status Register Definitions */ +#define DIB_DAUTHSTATUS_SNID_Pos 6U /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_SNID_Msk (0x3UL << DIB_DAUTHSTATUS_SNID_Pos ) /*!< DIB DAUTHSTATUS: Secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_SID_Pos 4U /*!< DIB DAUTHSTATUS: Secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_SID_Msk (0x3UL << DIB_DAUTHSTATUS_SID_Pos ) /*!< DIB DAUTHSTATUS: Secure Invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSNID_Pos 2U /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSNID_Msk (0x3UL << DIB_DAUTHSTATUS_NSNID_Pos ) /*!< DIB DAUTHSTATUS: Non-secure Non-invasive Debug Mask */ + +#define DIB_DAUTHSTATUS_NSID_Pos 0U /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Position */ +#define DIB_DAUTHSTATUS_NSID_Msk (0x3UL /*<< DIB_DAUTHSTATUS_NSID_Pos*/) /*!< DIB DAUTHSTATUS: Non-secure Invasive Debug Mask */ + +/* DDEVARCH, SCS Device Architecture Register Definitions */ +#define DIB_DDEVARCH_ARCHITECT_Pos 21U /*!< DIB DDEVARCH: Architect Position */ +#define DIB_DDEVARCH_ARCHITECT_Msk (0x7FFUL << DIB_DDEVARCH_ARCHITECT_Pos ) /*!< DIB DDEVARCH: Architect Mask */ + +#define DIB_DDEVARCH_PRESENT_Pos 20U /*!< DIB DDEVARCH: DEVARCH Present Position */ +#define DIB_DDEVARCH_PRESENT_Msk (0x1FUL << DIB_DDEVARCH_PRESENT_Pos ) /*!< DIB DDEVARCH: DEVARCH Present Mask */ + +#define DIB_DDEVARCH_REVISION_Pos 16U /*!< DIB DDEVARCH: Revision Position */ +#define DIB_DDEVARCH_REVISION_Msk (0xFUL << DIB_DDEVARCH_REVISION_Pos ) /*!< DIB DDEVARCH: Revision Mask */ + +#define DIB_DDEVARCH_ARCHVER_Pos 12U /*!< DIB DDEVARCH: Architecture Version Position */ +#define DIB_DDEVARCH_ARCHVER_Msk (0xFUL << DIB_DDEVARCH_ARCHVER_Pos ) /*!< DIB DDEVARCH: Architecture Version Mask */ + +#define DIB_DDEVARCH_ARCHPART_Pos 0U /*!< DIB DDEVARCH: Architecture Part Position */ +#define DIB_DDEVARCH_ARCHPART_Msk (0xFFFUL /*<< DIB_DDEVARCH_ARCHPART_Pos*/) /*!< DIB DDEVARCH: Architecture Part Mask */ + +/* DDEVTYPE, SCS Device Type Register Definitions */ +#define DIB_DDEVTYPE_SUB_Pos 4U /*!< DIB DDEVTYPE: Sub-type Position */ +#define DIB_DDEVTYPE_SUB_Msk (0xFUL << DIB_DDEVTYPE_SUB_Pos ) /*!< DIB DDEVTYPE: Sub-type Mask */ + +#define DIB_DDEVTYPE_MAJOR_Pos 0U /*!< DIB DDEVTYPE: Major type Position */ +#define DIB_DDEVTYPE_MAJOR_Msk (0xFUL /*<< DIB_DDEVTYPE_MAJOR_Pos*/) /*!< DIB DDEVTYPE: Major type Mask */ + + +/*@} end of group CMSIS_DIB */ + + +/** + \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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(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. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(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 Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define DCB_BASE (0xE000EDF0UL) /*!< DCB Base Address */ + #define DIB_BASE (0xE000EFB0UL) /*!< DIB Base Address */ + #define EMSS_BASE (0xE001E000UL) /*!AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + __COMPILER_BARRIER(); + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __COMPILER_BARRIER(); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every processor exception. + */ +__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses including + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/** + \brief Software Reset + \details Initiates a system reset request to reset the CPU. + */ +__NO_RETURN __STATIC_INLINE void __SW_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses including + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_BFHFNMINS_Msk) | /* Keep BFHFNMINS unchanged. Use this Reset function in case your case need to keep it */ + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | /* Keep priority group unchanged */ + SCB_AIRCR_SYSRESETREQ_Msk ); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + +/* ################################## Debug Control function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DCBFunctions Debug Control Functions + \brief Functions that access the Debug Control Block. + @{ + */ + + +/** + \brief Set Debug Authentication Control Register + \details writes to Debug Authentication Control register. + \param [in] value value to be writen. + */ +__STATIC_INLINE void DCB_SetAuthCtrl(uint32_t value) +{ + __DSB(); + __ISB(); + DCB->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register + \details Reads Debug Authentication Control register. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t DCB_GetAuthCtrl(void) +{ + return (DCB->DAUTHCTRL); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Debug Authentication Control Register (non-secure) + \details writes to non-secure Debug Authentication Control register when in secure state. + \param [in] value value to be writen + */ +__STATIC_INLINE void TZ_DCB_SetAuthCtrl_NS(uint32_t value) +{ + __DSB(); + __ISB(); + DCB_NS->DAUTHCTRL = value; + __DSB(); + __ISB(); +} + + +/** + \brief Get Debug Authentication Control Register (non-secure) + \details Reads non-secure Debug Authentication Control register when in secure state. + \return Debug Authentication Control Register. + */ +__STATIC_INLINE uint32_t TZ_DCB_GetAuthCtrl_NS(void) +{ + return (DCB_NS->DAUTHCTRL); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + + + +/* ################################## Debug Identification function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_DIBFunctions Debug Identification Functions + \brief Functions that access the Debug Identification Block. + @{ + */ + + +/** + \brief Get Debug Authentication Status Register + \details Reads Debug Authentication Status register. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t DIB_GetAuthStatus(void) +{ + return (DIB->DAUTHSTATUS); +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Debug Authentication Status Register (non-secure) + \details Reads non-secure Debug Authentication Status register when in secure state. + \return Debug Authentication Status Register. + */ +__STATIC_INLINE uint32_t TZ_DIB_GetAuthStatus_NS(void) +{ + return (DIB_NS->DAUTHSTATUS); +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_DCBFunctions */ + + +#if ((defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U)) || \ + (defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U))) + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + +#define __SCB_DCACHE_LINE_SIZE 32U /*!< STAR-MC1 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#define __SCB_ICACHE_LINE_SIZE 32U /*!< STAR-MC1 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ + + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief I-Cache Invalidate by address + \details Invalidates I-Cache for the given address. + I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + I-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] isize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if ( isize > 0 ) { + int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->ICIMVAU = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_ICACHE_LINE_SIZE; + op_size -= __SCB_ICACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address. + D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned and invalidated. + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + +/*@} end of CMSIS_Core_CacheFunctions */ +#endif + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_STAR_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h new file mode 100644 index 0000000000..9909f83990 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv7.h @@ -0,0 +1,275 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.1.2 + * @date 25. May 2020 + ******************************************************************************/ +/* + * Copyright (c) 2017-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) | \ + (((SubRegionDisable) << MPU_RASR_SRD_Pos) & MPU_RASR_SRD_Msk) | \ + (((Size) << MPU_RASR_SIZE_Pos) & MPU_RASR_SIZE_Msk) | \ + (((MPU_RASR_ENABLE_Msk)))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if shareable) or 010b (if non-shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) >> 1U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DMB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; + __DSB(); + __ISB(); +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rasr Value for RASR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rasr Value for RASR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcpy with strictly ordered memory access, e.g. used by code in ARM_MPU_Load(). +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + ARM_MPU_OrderedMemcpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h new file mode 100644 index 0000000000..19855b9667 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/mpu_armv8.h @@ -0,0 +1,352 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M and Armv8.1-M MPU + * @version V5.1.3 + * @date 03. February 2021 + ******************************************************************************/ +/* + * Copyright (c) 2017-2021 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + ((((NT) & 1U) << 3U) | (((WB) & 1U) << 2U) | (((RA) & 1U) << 1U) | ((WA) & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) ((((O) & 0xFU) << 4U) | ((((O) & 0xFU) != 0U) ? ((I) & 0xFU) : (((I) & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) ((((RO) & 1U) << 1U) | ((NP) & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + (((BASE) & MPU_RBAR_BASE_Msk) | \ + (((SH) << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + (((XN) << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + (((LIMIT) & MPU_RLAR_LIMIT_Msk) | \ + (((IDX) << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#if defined(MPU_RLAR_PXN_Pos) + +/** \brief Region Limit Address Register with PXN value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param PXN Privileged execute never. Defines whether code can be executed from this privileged region. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR_PXN(LIMIT, PXN, IDX) \ + (((LIMIT) & MPU_RLAR_LIMIT_Msk) | \ + (((PXN) << MPU_RLAR_PXN_Pos) & MPU_RLAR_PXN_Msk) | \ + (((IDX) << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#endif + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DMB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; + __DSB(); + __ISB(); +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + __DMB(); + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; + __DSB(); + __ISB(); +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcpy with strictly ordered memory access, e.g. used by code in ARM_MPU_LoadEx() +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void ARM_MPU_OrderedMemcpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h new file mode 100644 index 0000000000..854b60a204 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pac_armv81.h @@ -0,0 +1,206 @@ +/****************************************************************************** + * @file pac_armv81.h + * @brief CMSIS PAC key functions for Armv8.1-M PAC extension + * @version V1.0.0 + * @date 23. March 2022 + ******************************************************************************/ +/* + * Copyright (c) 2022 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef PAC_ARMV81_H +#define PAC_ARMV81_H + + +/* ################### PAC Key functions ########################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_PacKeyFunctions PAC Key functions + \brief Functions that access the PAC keys. + @{ + */ + +#if (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) + +/** + \brief read the PAC key used for privileged mode + \details Reads the PAC key stored in the PAC_KEY_P registers. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __get_PAC_KEY_P (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_p_0\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_p_1\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_p_2\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_p_3\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for privileged mode + \details writes the given PAC key to the PAC_KEY_P registers. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __set_PAC_KEY_P (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_p_0, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_p_1, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_p_2, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_p_3, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief read the PAC key used for unprivileged mode + \details Reads the PAC key stored in the PAC_KEY_U registers. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __get_PAC_KEY_U (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_u_0\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_u_1\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_u_2\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_u_3\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for unprivileged mode + \details writes the given PAC key to the PAC_KEY_U registers. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __set_PAC_KEY_U (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_u_0, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_u_1, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_u_2, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_u_3, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + +/** + \brief read the PAC key used for privileged mode (non-secure) + \details Reads the PAC key stored in the non-secure PAC_KEY_P registers when in secure mode. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_get_PAC_KEY_P_NS (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_p_0_ns\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_p_1_ns\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_p_2_ns\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_p_3_ns\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for privileged mode (non-secure) + \details writes the given PAC key to the non-secure PAC_KEY_P registers when in secure mode. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_set_PAC_KEY_P_NS (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_p_0_ns, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_p_1_ns, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_p_2_ns, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_p_3_ns, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief read the PAC key used for unprivileged mode (non-secure) + \details Reads the PAC key stored in the non-secure PAC_KEY_U registers when in secure mode. + \param [out] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_get_PAC_KEY_U_NS (uint32_t* pPacKey) { + __ASM volatile ( + "mrs r1, pac_key_u_0_ns\n" + "str r1,[%0,#0]\n" + "mrs r1, pac_key_u_1_ns\n" + "str r1,[%0,#4]\n" + "mrs r1, pac_key_u_2_ns\n" + "str r1,[%0,#8]\n" + "mrs r1, pac_key_u_3_ns\n" + "str r1,[%0,#12]\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +/** + \brief write the PAC key used for unprivileged mode (non-secure) + \details writes the given PAC key to the non-secure PAC_KEY_U registers when in secure mode. + \param [in] pPacKey 128bit PAC key + */ +__STATIC_FORCEINLINE void __TZ_set_PAC_KEY_U_NS (uint32_t* pPacKey) { + __ASM volatile ( + "ldr r1,[%0,#0]\n" + "msr pac_key_u_0_ns, r1\n" + "ldr r1,[%0,#4]\n" + "msr pac_key_u_1_ns, r1\n" + "ldr r1,[%0,#8]\n" + "msr pac_key_u_2_ns, r1\n" + "ldr r1,[%0,#12]\n" + "msr pac_key_u_3_ns, r1\n" + : : "r" (pPacKey) : "memory", "r1" + ); +} + +#endif /* (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) */ + +#endif /* (defined (__ARM_FEATURE_PAUTH) && (__ARM_FEATURE_PAUTH == 1)) */ + +/*@} end of CMSIS_Core_PacKeyFunctions */ + + +#endif /* PAC_ARMV81_H */ diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h new file mode 100644 index 0000000000..aa53bb47c1 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/pmu_armv8.h @@ -0,0 +1,337 @@ +/****************************************************************************** + * @file pmu_armv8.h + * @brief CMSIS PMU API for Armv8.1-M PMU + * @version V1.0.1 + * @date 15. April 2020 + ******************************************************************************/ +/* + * Copyright (c) 2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_PMU_ARMV8_H +#define ARM_PMU_ARMV8_H + +/** + * \brief PMU Events + * \note See the Armv8.1-M Architecture Reference Manual for full details on these PMU events. + * */ + +#define ARM_PMU_SW_INCR 0x0000 /*!< Software update to the PMU_SWINC register, architecturally executed and condition code check pass */ +#define ARM_PMU_L1I_CACHE_REFILL 0x0001 /*!< L1 I-Cache refill */ +#define ARM_PMU_L1D_CACHE_REFILL 0x0003 /*!< L1 D-Cache refill */ +#define ARM_PMU_L1D_CACHE 0x0004 /*!< L1 D-Cache access */ +#define ARM_PMU_LD_RETIRED 0x0006 /*!< Memory-reading instruction architecturally executed and condition code check pass */ +#define ARM_PMU_ST_RETIRED 0x0007 /*!< Memory-writing instruction architecturally executed and condition code check pass */ +#define ARM_PMU_INST_RETIRED 0x0008 /*!< Instruction architecturally executed */ +#define ARM_PMU_EXC_TAKEN 0x0009 /*!< Exception entry */ +#define ARM_PMU_EXC_RETURN 0x000A /*!< Exception return instruction architecturally executed and the condition code check pass */ +#define ARM_PMU_PC_WRITE_RETIRED 0x000C /*!< Software change to the Program Counter (PC). Instruction is architecturally executed and condition code check pass */ +#define ARM_PMU_BR_IMMED_RETIRED 0x000D /*!< Immediate branch architecturally executed */ +#define ARM_PMU_BR_RETURN_RETIRED 0x000E /*!< Function return instruction architecturally executed and the condition code check pass */ +#define ARM_PMU_UNALIGNED_LDST_RETIRED 0x000F /*!< Unaligned memory memory-reading or memory-writing instruction architecturally executed and condition code check pass */ +#define ARM_PMU_BR_MIS_PRED 0x0010 /*!< Mispredicted or not predicted branch speculatively executed */ +#define ARM_PMU_CPU_CYCLES 0x0011 /*!< Cycle */ +#define ARM_PMU_BR_PRED 0x0012 /*!< Predictable branch speculatively executed */ +#define ARM_PMU_MEM_ACCESS 0x0013 /*!< Data memory access */ +#define ARM_PMU_L1I_CACHE 0x0014 /*!< Level 1 instruction cache access */ +#define ARM_PMU_L1D_CACHE_WB 0x0015 /*!< Level 1 data cache write-back */ +#define ARM_PMU_L2D_CACHE 0x0016 /*!< Level 2 data cache access */ +#define ARM_PMU_L2D_CACHE_REFILL 0x0017 /*!< Level 2 data cache refill */ +#define ARM_PMU_L2D_CACHE_WB 0x0018 /*!< Level 2 data cache write-back */ +#define ARM_PMU_BUS_ACCESS 0x0019 /*!< Bus access */ +#define ARM_PMU_MEMORY_ERROR 0x001A /*!< Local memory error */ +#define ARM_PMU_INST_SPEC 0x001B /*!< Instruction speculatively executed */ +#define ARM_PMU_BUS_CYCLES 0x001D /*!< Bus cycles */ +#define ARM_PMU_CHAIN 0x001E /*!< For an odd numbered counter, increment when an overflow occurs on the preceding even-numbered counter on the same PE */ +#define ARM_PMU_L1D_CACHE_ALLOCATE 0x001F /*!< Level 1 data cache allocation without refill */ +#define ARM_PMU_L2D_CACHE_ALLOCATE 0x0020 /*!< Level 2 data cache allocation without refill */ +#define ARM_PMU_BR_RETIRED 0x0021 /*!< Branch instruction architecturally executed */ +#define ARM_PMU_BR_MIS_PRED_RETIRED 0x0022 /*!< Mispredicted branch instruction architecturally executed */ +#define ARM_PMU_STALL_FRONTEND 0x0023 /*!< No operation issued because of the frontend */ +#define ARM_PMU_STALL_BACKEND 0x0024 /*!< No operation issued because of the backend */ +#define ARM_PMU_L2I_CACHE 0x0027 /*!< Level 2 instruction cache access */ +#define ARM_PMU_L2I_CACHE_REFILL 0x0028 /*!< Level 2 instruction cache refill */ +#define ARM_PMU_L3D_CACHE_ALLOCATE 0x0029 /*!< Level 3 data cache allocation without refill */ +#define ARM_PMU_L3D_CACHE_REFILL 0x002A /*!< Level 3 data cache refill */ +#define ARM_PMU_L3D_CACHE 0x002B /*!< Level 3 data cache access */ +#define ARM_PMU_L3D_CACHE_WB 0x002C /*!< Level 3 data cache write-back */ +#define ARM_PMU_LL_CACHE_RD 0x0036 /*!< Last level data cache read */ +#define ARM_PMU_LL_CACHE_MISS_RD 0x0037 /*!< Last level data cache read miss */ +#define ARM_PMU_L1D_CACHE_MISS_RD 0x0039 /*!< Level 1 data cache read miss */ +#define ARM_PMU_OP_COMPLETE 0x003A /*!< Operation retired */ +#define ARM_PMU_OP_SPEC 0x003B /*!< Operation speculatively executed */ +#define ARM_PMU_STALL 0x003C /*!< Stall cycle for instruction or operation not sent for execution */ +#define ARM_PMU_STALL_OP_BACKEND 0x003D /*!< Stall cycle for instruction or operation not sent for execution due to pipeline backend */ +#define ARM_PMU_STALL_OP_FRONTEND 0x003E /*!< Stall cycle for instruction or operation not sent for execution due to pipeline frontend */ +#define ARM_PMU_STALL_OP 0x003F /*!< Instruction or operation slots not occupied each cycle */ +#define ARM_PMU_L1D_CACHE_RD 0x0040 /*!< Level 1 data cache read */ +#define ARM_PMU_LE_RETIRED 0x0100 /*!< Loop end instruction executed */ +#define ARM_PMU_LE_SPEC 0x0101 /*!< Loop end instruction speculatively executed */ +#define ARM_PMU_BF_RETIRED 0x0104 /*!< Branch future instruction architecturally executed and condition code check pass */ +#define ARM_PMU_BF_SPEC 0x0105 /*!< Branch future instruction speculatively executed and condition code check pass */ +#define ARM_PMU_LE_CANCEL 0x0108 /*!< Loop end instruction not taken */ +#define ARM_PMU_BF_CANCEL 0x0109 /*!< Branch future instruction not taken */ +#define ARM_PMU_SE_CALL_S 0x0114 /*!< Call to secure function, resulting in Security state change */ +#define ARM_PMU_SE_CALL_NS 0x0115 /*!< Call to non-secure function, resulting in Security state change */ +#define ARM_PMU_DWT_CMPMATCH0 0x0118 /*!< DWT comparator 0 match */ +#define ARM_PMU_DWT_CMPMATCH1 0x0119 /*!< DWT comparator 1 match */ +#define ARM_PMU_DWT_CMPMATCH2 0x011A /*!< DWT comparator 2 match */ +#define ARM_PMU_DWT_CMPMATCH3 0x011B /*!< DWT comparator 3 match */ +#define ARM_PMU_MVE_INST_RETIRED 0x0200 /*!< MVE instruction architecturally executed */ +#define ARM_PMU_MVE_INST_SPEC 0x0201 /*!< MVE instruction speculatively executed */ +#define ARM_PMU_MVE_FP_RETIRED 0x0204 /*!< MVE floating-point instruction architecturally executed */ +#define ARM_PMU_MVE_FP_SPEC 0x0205 /*!< MVE floating-point instruction speculatively executed */ +#define ARM_PMU_MVE_FP_HP_RETIRED 0x0208 /*!< MVE half-precision floating-point instruction architecturally executed */ +#define ARM_PMU_MVE_FP_HP_SPEC 0x0209 /*!< MVE half-precision floating-point instruction speculatively executed */ +#define ARM_PMU_MVE_FP_SP_RETIRED 0x020C /*!< MVE single-precision floating-point instruction architecturally executed */ +#define ARM_PMU_MVE_FP_SP_SPEC 0x020D /*!< MVE single-precision floating-point instruction speculatively executed */ +#define ARM_PMU_MVE_FP_MAC_RETIRED 0x0214 /*!< MVE floating-point multiply or multiply-accumulate instruction architecturally executed */ +#define ARM_PMU_MVE_FP_MAC_SPEC 0x0215 /*!< MVE floating-point multiply or multiply-accumulate instruction speculatively executed */ +#define ARM_PMU_MVE_INT_RETIRED 0x0224 /*!< MVE integer instruction architecturally executed */ +#define ARM_PMU_MVE_INT_SPEC 0x0225 /*!< MVE integer instruction speculatively executed */ +#define ARM_PMU_MVE_INT_MAC_RETIRED 0x0228 /*!< MVE multiply or multiply-accumulate instruction architecturally executed */ +#define ARM_PMU_MVE_INT_MAC_SPEC 0x0229 /*!< MVE multiply or multiply-accumulate instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_RETIRED 0x0238 /*!< MVE load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_SPEC 0x0239 /*!< MVE load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_RETIRED 0x023C /*!< MVE load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_SPEC 0x023D /*!< MVE load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_RETIRED 0x0240 /*!< MVE store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_SPEC 0x0241 /*!< MVE store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_CONTIG_RETIRED 0x0244 /*!< MVE contiguous load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_CONTIG_SPEC 0x0245 /*!< MVE contiguous load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_CONTIG_RETIRED 0x0248 /*!< MVE contiguous load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_CONTIG_SPEC 0x0249 /*!< MVE contiguous load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_CONTIG_RETIRED 0x024C /*!< MVE contiguous store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_CONTIG_SPEC 0x024D /*!< MVE contiguous store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_NONCONTIG_RETIRED 0x0250 /*!< MVE non-contiguous load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_NONCONTIG_SPEC 0x0251 /*!< MVE non-contiguous load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_NONCONTIG_RETIRED 0x0254 /*!< MVE non-contiguous load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_NONCONTIG_SPEC 0x0255 /*!< MVE non-contiguous load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_NONCONTIG_RETIRED 0x0258 /*!< MVE non-contiguous store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_NONCONTIG_SPEC 0x0259 /*!< MVE non-contiguous store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_MULTI_RETIRED 0x025C /*!< MVE memory instruction targeting multiple registers architecturally executed */ +#define ARM_PMU_MVE_LDST_MULTI_SPEC 0x025D /*!< MVE memory instruction targeting multiple registers speculatively executed */ +#define ARM_PMU_MVE_LD_MULTI_RETIRED 0x0260 /*!< MVE memory load instruction targeting multiple registers architecturally executed */ +#define ARM_PMU_MVE_LD_MULTI_SPEC 0x0261 /*!< MVE memory load instruction targeting multiple registers speculatively executed */ +#define ARM_PMU_MVE_ST_MULTI_RETIRED 0x0261 /*!< MVE memory store instruction targeting multiple registers architecturally executed */ +#define ARM_PMU_MVE_ST_MULTI_SPEC 0x0265 /*!< MVE memory store instruction targeting multiple registers speculatively executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_RETIRED 0x028C /*!< MVE unaligned memory load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_SPEC 0x028D /*!< MVE unaligned memory load or store instruction speculatively executed */ +#define ARM_PMU_MVE_LD_UNALIGNED_RETIRED 0x0290 /*!< MVE unaligned load instruction architecturally executed */ +#define ARM_PMU_MVE_LD_UNALIGNED_SPEC 0x0291 /*!< MVE unaligned load instruction speculatively executed */ +#define ARM_PMU_MVE_ST_UNALIGNED_RETIRED 0x0294 /*!< MVE unaligned store instruction architecturally executed */ +#define ARM_PMU_MVE_ST_UNALIGNED_SPEC 0x0295 /*!< MVE unaligned store instruction speculatively executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_NONCONTIG_RETIRED 0x0298 /*!< MVE unaligned noncontiguous load or store instruction architecturally executed */ +#define ARM_PMU_MVE_LDST_UNALIGNED_NONCONTIG_SPEC 0x0299 /*!< MVE unaligned noncontiguous load or store instruction speculatively executed */ +#define ARM_PMU_MVE_VREDUCE_RETIRED 0x02A0 /*!< MVE vector reduction instruction architecturally executed */ +#define ARM_PMU_MVE_VREDUCE_SPEC 0x02A1 /*!< MVE vector reduction instruction speculatively executed */ +#define ARM_PMU_MVE_VREDUCE_FP_RETIRED 0x02A4 /*!< MVE floating-point vector reduction instruction architecturally executed */ +#define ARM_PMU_MVE_VREDUCE_FP_SPEC 0x02A5 /*!< MVE floating-point vector reduction instruction speculatively executed */ +#define ARM_PMU_MVE_VREDUCE_INT_RETIRED 0x02A8 /*!< MVE integer vector reduction instruction architecturally executed */ +#define ARM_PMU_MVE_VREDUCE_INT_SPEC 0x02A9 /*!< MVE integer vector reduction instruction speculatively executed */ +#define ARM_PMU_MVE_PRED 0x02B8 /*!< Cycles where one or more predicated beats architecturally executed */ +#define ARM_PMU_MVE_STALL 0x02CC /*!< Stall cycles caused by an MVE instruction */ +#define ARM_PMU_MVE_STALL_RESOURCE 0x02CD /*!< Stall cycles caused by an MVE instruction because of resource conflicts */ +#define ARM_PMU_MVE_STALL_RESOURCE_MEM 0x02CE /*!< Stall cycles caused by an MVE instruction because of memory resource conflicts */ +#define ARM_PMU_MVE_STALL_RESOURCE_FP 0x02CF /*!< Stall cycles caused by an MVE instruction because of floating-point resource conflicts */ +#define ARM_PMU_MVE_STALL_RESOURCE_INT 0x02D0 /*!< Stall cycles caused by an MVE instruction because of integer resource conflicts */ +#define ARM_PMU_MVE_STALL_BREAK 0x02D3 /*!< Stall cycles caused by an MVE chain break */ +#define ARM_PMU_MVE_STALL_DEPENDENCY 0x02D4 /*!< Stall cycles caused by MVE register dependency */ +#define ARM_PMU_ITCM_ACCESS 0x4007 /*!< Instruction TCM access */ +#define ARM_PMU_DTCM_ACCESS 0x4008 /*!< Data TCM access */ +#define ARM_PMU_TRCEXTOUT0 0x4010 /*!< ETM external output 0 */ +#define ARM_PMU_TRCEXTOUT1 0x4011 /*!< ETM external output 1 */ +#define ARM_PMU_TRCEXTOUT2 0x4012 /*!< ETM external output 2 */ +#define ARM_PMU_TRCEXTOUT3 0x4013 /*!< ETM external output 3 */ +#define ARM_PMU_CTI_TRIGOUT4 0x4018 /*!< Cross-trigger Interface output trigger 4 */ +#define ARM_PMU_CTI_TRIGOUT5 0x4019 /*!< Cross-trigger Interface output trigger 5 */ +#define ARM_PMU_CTI_TRIGOUT6 0x401A /*!< Cross-trigger Interface output trigger 6 */ +#define ARM_PMU_CTI_TRIGOUT7 0x401B /*!< Cross-trigger Interface output trigger 7 */ + +/** \brief PMU Functions */ + +__STATIC_INLINE void ARM_PMU_Enable(void); +__STATIC_INLINE void ARM_PMU_Disable(void); + +__STATIC_INLINE void ARM_PMU_Set_EVTYPER(uint32_t num, uint32_t type); + +__STATIC_INLINE void ARM_PMU_CYCCNT_Reset(void); +__STATIC_INLINE void ARM_PMU_EVCNTR_ALL_Reset(void); + +__STATIC_INLINE void ARM_PMU_CNTR_Enable(uint32_t mask); +__STATIC_INLINE void ARM_PMU_CNTR_Disable(uint32_t mask); + +__STATIC_INLINE uint32_t ARM_PMU_Get_CCNTR(void); +__STATIC_INLINE uint32_t ARM_PMU_Get_EVCNTR(uint32_t num); + +__STATIC_INLINE uint32_t ARM_PMU_Get_CNTR_OVS(void); +__STATIC_INLINE void ARM_PMU_Set_CNTR_OVS(uint32_t mask); + +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Enable(uint32_t mask); +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Disable(uint32_t mask); + +__STATIC_INLINE void ARM_PMU_CNTR_Increment(uint32_t mask); + +/** + \brief Enable the PMU +*/ +__STATIC_INLINE void ARM_PMU_Enable(void) +{ + PMU->CTRL |= PMU_CTRL_ENABLE_Msk; +} + +/** + \brief Disable the PMU +*/ +__STATIC_INLINE void ARM_PMU_Disable(void) +{ + PMU->CTRL &= ~PMU_CTRL_ENABLE_Msk; +} + +/** + \brief Set event to count for PMU eventer counter + \param [in] num Event counter (0-30) to configure + \param [in] type Event to count +*/ +__STATIC_INLINE void ARM_PMU_Set_EVTYPER(uint32_t num, uint32_t type) +{ + PMU->EVTYPER[num] = type; +} + +/** + \brief Reset cycle counter +*/ +__STATIC_INLINE void ARM_PMU_CYCCNT_Reset(void) +{ + PMU->CTRL |= PMU_CTRL_CYCCNT_RESET_Msk; +} + +/** + \brief Reset all event counters +*/ +__STATIC_INLINE void ARM_PMU_EVCNTR_ALL_Reset(void) +{ + PMU->CTRL |= PMU_CTRL_EVENTCNT_RESET_Msk; +} + +/** + \brief Enable counters + \param [in] mask Counters to enable + \note Enables one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_CNTR_Enable(uint32_t mask) +{ + PMU->CNTENSET = mask; +} + +/** + \brief Disable counters + \param [in] mask Counters to enable + \note Disables one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_CNTR_Disable(uint32_t mask) +{ + PMU->CNTENCLR = mask; +} + +/** + \brief Read cycle counter + \return Cycle count +*/ +__STATIC_INLINE uint32_t ARM_PMU_Get_CCNTR(void) +{ + return PMU->CCNTR; +} + +/** + \brief Read event counter + \param [in] num Event counter (0-30) to read + \return Event count +*/ +__STATIC_INLINE uint32_t ARM_PMU_Get_EVCNTR(uint32_t num) +{ + return PMU_EVCNTR_CNT_Msk & PMU->EVCNTR[num]; +} + +/** + \brief Read counter overflow status + \return Counter overflow status bits for the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE uint32_t ARM_PMU_Get_CNTR_OVS(void) +{ + return PMU->OVSSET; +} + +/** + \brief Clear counter overflow status + \param [in] mask Counter overflow status bits to clear + \note Clears overflow status bits for one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_Set_CNTR_OVS(uint32_t mask) +{ + PMU->OVSCLR = mask; +} + +/** + \brief Enable counter overflow interrupt request + \param [in] mask Counter overflow interrupt request bits to set + \note Sets overflow interrupt request bits for one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Enable(uint32_t mask) +{ + PMU->INTENSET = mask; +} + +/** + \brief Disable counter overflow interrupt request + \param [in] mask Counter overflow interrupt request bits to clear + \note Clears overflow interrupt request bits for one or more of the following: + - event counters (0-30) + - cycle counter +*/ +__STATIC_INLINE void ARM_PMU_Set_CNTR_IRQ_Disable(uint32_t mask) +{ + PMU->INTENCLR = mask; +} + +/** + \brief Software increment event counter + \param [in] mask Counters to increment + \note Software increment bits for one or more event counters (0-30) +*/ +__STATIC_INLINE void ARM_PMU_CNTR_Increment(uint32_t mask) +{ + PMU->SWINC = mask; +} + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h new file mode 100644 index 0000000000..facc2c9a47 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/CMSIS/Core/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/LICENSE.txt b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/LICENSE.txt new file mode 100644 index 0000000000..8dada3edaf --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/arm/CMSIS_5/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board.h b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board.h new file mode 100644 index 0000000000..0cb9c5299b --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board.h @@ -0,0 +1,63 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARDS + * @defgroup BOARD_RA8D1_EK for the RA8D1-EK board + * @brief BSP for the RA8D1-EK Board + * + * The RA8D1_EK is a development kit for the Renesas R7FA8D1BHECBD microcontroller in a BGA224 package. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_H +#define BOARD_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP Board Specific Includes. */ +#include "board_init.h" +#include "board_sdram.h" +#include "board_leds.h" +#include "board_ethernet_phy.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BOARD_RA8D1_EK + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end defgroup BOARD_RA8D1_EK) */ + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_ethernet_phy.h b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_ethernet_phy.h new file mode 100644 index 0000000000..878191bce8 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_ethernet_phy.h @@ -0,0 +1,61 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RA8D1_EK + * @defgroup BOARD_RA8D1_EK_ETHERNET_PHY Board Ethernet Phy + * @brief Ethernet Phy information for this board. + * + * This is code specific to the RA8D1_EK board. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_ETHERNET_PHY_H +#define BSP_ETHERNET_PHY_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define ETHER_PHY_CFG_TARGET_ICS1894_ENABLE (1) +#define ETHER_PHY_LSI_TYPE_KIT_COMPONENT ETHER_PHY_LSI_TYPE_ICS1894 +#define BOARD_PHY_REF_CLK (1) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Public Functions + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/** @} (end defgroup BOARD_RA8D1_EK_ETHERNET_PHY) */ diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.c b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.c new file mode 100644 index 0000000000..0db3823208 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.c @@ -0,0 +1,62 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA8D1_EK + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if defined(BOARD_RA8D1_EK) + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @brief Performs any initialization specific to this BSP. + * + * @param[in] p_args Pointer to arguments of the user's choice. + **********************************************************************************************************************/ +void bsp_init (void * p_args) +{ + FSP_PARAMETER_NOT_USED(p_args); +} + +#endif + +/** @} (end addtogroup BOARD_RA8D1_EK) */ diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.h b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.h new file mode 100644 index 0000000000..0c452a9a01 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_init.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA8D1_EK + * @brief Board specific code for the RA8D1-EK Board + * + * This include file is specific to the RA8D1-EK board. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_INIT_H +#define BOARD_INIT_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +void bsp_init(void * p_args); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/** @} (end addtogroup BOARD_RA8D1_EK) */ diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.c b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.c new file mode 100644 index 0000000000..747ac3c7a0 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.c @@ -0,0 +1,71 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RA8D1_EK_LEDS + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#if defined(BOARD_RA8D1_EK) + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** Array of LED IOPORT pins. */ +static const uint16_t g_bsp_prv_leds[] = +{ + (uint16_t) BSP_IO_PORT_06_PIN_00, ///< LED1 + (uint16_t) BSP_IO_PORT_04_PIN_14, ///< LED2 + (uint16_t) BSP_IO_PORT_01_PIN_07, ///< LED3 +}; + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/** Structure with LED information for this board. */ + +const bsp_leds_t g_bsp_leds = +{ + .led_count = (uint16_t) ((sizeof(g_bsp_prv_leds) / sizeof(g_bsp_prv_leds[0]))), + .p_leds = &g_bsp_prv_leds[0] +}; + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +#endif + +/** @} (end addtogroup BOARD_RA8D1_EK_LEDS) */ diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.h b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.h new file mode 100644 index 0000000000..603e6fec46 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_leds.h @@ -0,0 +1,75 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RA8D1_EK + * @defgroup BOARD_RA8D1_EK_LEDS Board LEDs + * @brief LED information for this board. + * + * This is code specific to the EK board. It includes info on the number of LEDs and which pins are they + * are on. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_LEDS_H +#define BOARD_LEDS_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Information on how many LEDs and what pins they are on. */ +typedef struct st_bsp_leds +{ + uint16_t led_count; ///< The number of LEDs on this board + uint16_t const * p_leds; ///< Pointer to an array of IOPORT pins for controlling LEDs +} bsp_leds_t; + +/** Available user-controllable LEDs on this board. These enums can be can be used to index into the array of LED pins + * found in the bsp_leds_t structure. */ +typedef enum e_bsp_led +{ + BSP_LED_LED1, ///< LED1 + BSP_LED_LED2, ///< LED2 + BSP_LED_LED3, ///< LED3 +} bsp_led_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Public Functions + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/** @} (end defgroup BOARD_RA8D1_EK_LEDS) */ diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.c b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.c new file mode 100644 index 0000000000..07652f2bcc --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.c @@ -0,0 +1,246 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +#include "r_ioport.h" +#include "bsp_cfg.h" +#include "bsp_pin_cfg.h" + +#include "board_sdram.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* SDRAM size, in bytes */ +#define SDRAM_SIZE (64 * 1024 * 1024) + +/* + * Set ACTIVE-to-PRECHARGE command (tRAS) timing + * e.g. tRAS = 42ns -> 6cycles are needed at SDCLK 120MHz + * tRAS = 37ns -> 5cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRAS (6U) + +/* + * Set ACTIVE-to-READ or WRITE delay tRCD (tRCD) timing + * e.g. tRCD = 18ns -> 3cycles are needed at SDCLK 120MHz + * tRCD = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRCD (3U) + +/* + * Set PRECHARGE command period (tRP) timing + * e.g. tRP = 18ns -> 3cycles are needed at SDCLK 120MHz + * tRP = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRP (3U) + +/* + * Set WRITE recovery time (tWR) timing + * e.g. tWR = 1CLK + 6ns -> 2cycles are needed at SDCLK 120MHz + * tWR = 1CLK + 7ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TWR (2U) + +/* + * Set CAS (READ) latency (CL) timing + * e.g. CL = 18ns -> 3cycles are needed at SDCLK 120MHz + * e.g. CL = 15ns -> 2cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_CL (3U) + +/* + * Set AUTO REFRESH period (tRFC) timing + * e.g. tRFC = 60nS -> 8cycles are needed at SDCLK 120MHz + * tRFC = 66nS -> 8cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_TRFC (8U) + +/* + * Set Average Refresh period + * e.g. tREF = 64ms/8192rows -> 7.8125us/each row. 937cycles are needed at SDCLK 120MHz + */ +#define BSP_PRV_SDRAM_REF_CMD_INTERVAL (937U) + +/* + * Set Auto-Refresh issue times in initialization sequence needed for SDRAM device + * Typical SDR SDRAM device needs twice of Auto-Refresh command issue + */ +#define BSP_PRV_SDRAM_SDIR_REF_TIMES (2U) + +/* + * Set RAW address offset + * Available settings are + * 8 : 8-bit + * 9 : 9-bit + * 10 : 10-bit + * 11 : 11-bit + */ +#define BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET (10U) + +/* + * Select endian mode for SDRAM address space + * 0 : Endian of SDRAM address space is the same as the endian of operating mode + * 1 : Endian of SDRAM address space is not the endian of operating mode + */ +#define BSP_PRV_SDRAM_ENDIAN_MODE (0U) + +/* + * Select access mode + * Typically Continuous access should be enabled to get better SDRAM bandwidth + * 0: Continuous access is disabled + * 1: Continuous access is enabled + */ +#define BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE (1U) + +/* + * Select bus width + * 0: 16-bit + * 1: 32-bit + * 2: 8-bit + */ +#define BSP_PRV_SDRAM_BUS_WIDTH (0U) + +#if ((BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 8U) && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 9U) \ + && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET != 10U) && (BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET > 11U)) + #error "BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET must be either of 8,9,10 or 11" +#endif + +#if ((BSP_PRV_SDRAM_BUS_WIDTH != 0) && (BSP_PRV_SDRAM_BUS_WIDTH != 1U) && (BSP_PRV_SDRAM_BUS_WIDTH != 2U)) + #error "BSP_PRV_SDRAM_BUS_WIDTH must be either of 0(16-bit) or 1(32-bit) or 2(8-bit)" +#endif + +#if ((BSP_PRV_SDRAM_ENDIAN_MODE != 0) && (BSP_PRV_SDRAM_ENDIAN_MODE != 1)) + #error \ + "BSP_PRV_SDRAM_ENDIAN_MODE must be either of 0(same endian as operating mode) or 2(another endian against operating mode)" +#endif + +#if ((BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE != 0) && (BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE != 1)) + #error \ + "BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE must be either of 0(continuous access is disabled) or 1(continuous access is enabled)" +#endif + +#define BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC (1U) /* MR.M9 : Single Location Access */ +#define BSP_PRV_SDRAM_MR_OP_MODE (0U) /* MR.M8:M7 : Standard Operation */ +#define BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL (0U) /* MR.M3 Burst Type : Sequential */ +#define BSP_PRV_SDRAM_MR_BURST_LENGTH (0U) /* MR.M2:M0 Burst Length: 0(1 burst) */ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +void bsp_sdram_init (void) +{ + /** Setting for SDRAM initialization sequence */ +#if (BSP_PRV_SDRAM_TRP < 3) + R_BUS->SDRAM.SDIR_b.PRC = 3U; +#else + R_BUS->SDRAM.SDIR_b.PRC = BSP_PRV_SDRAM_TRP - 3U; +#endif + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */ + } + + R_BUS->SDRAM.SDIR_b.ARFC = BSP_PRV_SDRAM_SDIR_REF_TIMES; + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDIR modification. */ + } + +#if (BSP_PRV_SDRAM_TRFC < 3) + R_BUS->SDRAM.SDIR_b.ARFI = 0U; +#else + R_BUS->SDRAM.SDIR_b.ARFI = BSP_PRV_SDRAM_TRFC - 3U; +#endif + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDICR modification. */ + } + + /** Start SDRAM initialization sequence. + * Following operation is automatically done when set SDICR.INIRQ bit. + * Perform a PRECHARGE ALL command and wait at least tRP time. + * Issue an AUTO REFRESH command and wait at least tRFC time. + * Issue an AUTO REFRESH command and wait at least tRFC time. + */ + R_BUS->SDRAM.SDICR_b.INIRQ = 1U; + while (R_BUS->SDRAM.SDSR_b.INIST) + { + /* Wait the end of initialization sequence. */ + } + + /** Setting for SDRAM controller */ + R_BUS->SDRAM.SDCCR_b.BSIZE = BSP_PRV_SDRAM_BUS_WIDTH; /* set SDRAM bus width */ + R_BUS->SDRAM.SDAMOD_b.BE = BSP_PRV_SDRAM_CONTINUOUS_ACCESSMODE; /* enable continuous access */ + R_BUS->SDRAM.SDCMOD_b.EMODE = BSP_PRV_SDRAM_ENDIAN_MODE; /* set endian mode for SDRAM address space */ + + while (R_BUS->SDRAM.SDSR) + { + /* According to h/w maual, need to confirm that all the status bits in SDSR are 0 before SDMOD modification. */ + } + + /** Using LMR command, program the mode register */ + R_BUS->SDRAM.SDMOD = ((((uint16_t) (BSP_PRV_SDRAM_MR_WB_SINGLE_LOC_ACC << 9) | + (uint16_t) (BSP_PRV_SDRAM_MR_OP_MODE << 7)) | + (uint16_t) (BSP_PRV_SDRAM_CL << 4)) | + (uint16_t) (BSP_PRV_SDRAM_MR_BT_SEQUENCTIAL << 3)) | + (uint16_t) (BSP_PRV_SDRAM_MR_BURST_LENGTH << 0); + + /** wait at least tMRD time */ + while (R_BUS->SDRAM.SDSR_b.MRSST) + { + /* Wait until Mode Register setting done. */ + } + + /** Set timing parameters for SDRAM */ + R_BUS->SDRAM.SDTR_b.RAS = BSP_PRV_SDRAM_TRAS - 1U; /* set ACTIVE-to-PRECHARGE command cycles*/ + R_BUS->SDRAM.SDTR_b.RCD = BSP_PRV_SDRAM_TRCD - 1U; /* set ACTIVE to READ/WRITE delay cycles */ + R_BUS->SDRAM.SDTR_b.RP = BSP_PRV_SDRAM_TRP - 1U; /* set PRECHARGE command period cycles */ + R_BUS->SDRAM.SDTR_b.WR = BSP_PRV_SDRAM_TWR - 1U; /* set write recovery cycles */ + R_BUS->SDRAM.SDTR_b.CL = BSP_PRV_SDRAM_CL; /* set SDRAM column latency cycles */ + + /** Set row address offset for target SDRAM */ + R_BUS->SDRAM.SDADR_b.MXC = BSP_PRV_SDRAM_SDADR_ROW_ADDR_OFFSET - 8U; + + R_BUS->SDRAM.SDRFCR_b.REFW = (uint16_t) (BSP_PRV_SDRAM_TRFC - 1U); /* set Auto-Refresh issuing cycle */ + R_BUS->SDRAM.SDRFCR_b.RFC = BSP_PRV_SDRAM_REF_CMD_INTERVAL - 1U; /* set Auto-Refresh period */ + + /** Start Auto-refresh */ + R_BUS->SDRAM.SDRFEN_b.RFEN = 1U; + + /** Enable SDRAM access */ + R_BUS->SDRAM.SDCCR_b.EXENB = 1U; +} diff --git a/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.h b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.h new file mode 100644 index 0000000000..5b7ad3fc41 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/board/ra8d1_ek/board_sdram.h @@ -0,0 +1,46 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BOARD_SDRAM_H +#define BOARD_SDRAM_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +void bsp_sdram_init(void); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/bsp_api.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/bsp_api.h new file mode 100644 index 0000000000..1b3472a354 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/bsp_api.h @@ -0,0 +1,111 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_API_H +#define BSP_API_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* FSP Common Includes. */ +#include "fsp_common_api.h" + +/* Gets MCU configuration information. */ +#include "bsp_cfg.h" + +#if defined(__GNUC__) && !defined(__ARMCC_VERSION) + +/* Store warning settings for 'conversion' and 'sign-conversion' to as specified on command line. */ + #pragma GCC diagnostic push + +/* CMSIS-CORE currently generates 2 warnings when compiling with GCC. One in core_cmInstr.h and one in core_cm4_simd.h. + * We are not modifying these files so we will ignore these warnings temporarily. */ + #pragma GCC diagnostic ignored "-Wconversion" + #pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + +/* Vector information for this project. This is generated by the tooling. */ +#include "../../src/bsp/mcu/all/bsp_exceptions.h" +#include "vector_data.h" + +/* CMSIS-CORE Renesas Device Files. Must come after bsp_feature.h, which is included in bsp_cfg.h. */ +#include "../../src/bsp/cmsis/Device/RENESAS/Include/renesas.h" +#include "../../src/bsp/cmsis/Device/RENESAS/Include/system.h" + +#if defined(__GNUC__) && !defined(__ARMCC_VERSION) + +/* Restore warning settings for 'conversion' and 'sign-conversion' to as specified on command line. */ + #pragma GCC diagnostic pop +#endif + +#if defined(BSP_API_OVERRIDE) + #include BSP_API_OVERRIDE +#else + +/* BSP Common Includes. */ + #include "../../src/bsp/mcu/all/bsp_common.h" + +/* BSP MCU Specific Includes. */ + #include "../../src/bsp/mcu/all/bsp_register_protection.h" + #include "../../src/bsp/mcu/all/bsp_irq.h" + #include "../../src/bsp/mcu/all/bsp_io.h" + #include "../../src/bsp/mcu/all/bsp_group_irq.h" + #include "../../src/bsp/mcu/all/bsp_clocks.h" + #include "../../src/bsp/mcu/all/bsp_module_stop.h" + #include "../../src/bsp/mcu/all/bsp_security.h" + +/* Factory MCU information. */ + #include "../../inc/fsp_features.h" + +/* BSP Common Includes (Other than bsp_common.h) */ + #include "../../src/bsp/mcu/all/bsp_delay.h" + #include "../../src/bsp/mcu/all/bsp_mcu_api.h" + +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +fsp_err_t R_FSP_VersionGet(fsp_pack_version_t * const p_version); + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/fsp_common_api.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/fsp_common_api.h new file mode 100644 index 0000000000..0ab2ece3be --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/fsp_common_api.h @@ -0,0 +1,387 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef FSP_COMMON_API_H +#define FSP_COMMON_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include +#include + +/* Includes FSP version macros. */ +#include "fsp_version.h" + +/*******************************************************************************************************************//** + * @ingroup RENESAS_COMMON + * @defgroup RENESAS_ERROR_CODES Common Error Codes + * All FSP modules share these common error codes. + * @{ + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** This macro is used to suppress compiler messages about a parameter not being used in a function. The nice thing + * about using this implementation is that it does not take any extra RAM or ROM. */ + +#define FSP_PARAMETER_NOT_USED(p) (void) ((p)) + +/** Determine if a C++ compiler is being used. + * If so, ensure that standard C is used to process the API information. */ +#if defined(__cplusplus) + #define FSP_CPP_HEADER extern "C" { + #define FSP_CPP_FOOTER } +#else + #define FSP_CPP_HEADER + #define FSP_CPP_FOOTER +#endif + +/** FSP Header and Footer definitions */ +#define FSP_HEADER FSP_CPP_HEADER +#define FSP_FOOTER FSP_CPP_FOOTER + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/** Macro to be used when argument to function is ignored since function call is NSC and the parameter is statically + * defined on the Secure side. */ +#define FSP_SECURE_ARGUMENT (NULL) + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Common error codes */ +typedef enum e_fsp_err +{ + FSP_SUCCESS = 0, + + FSP_ERR_ASSERTION = 1, ///< A critical assertion has failed + FSP_ERR_INVALID_POINTER = 2, ///< Pointer points to invalid memory location + FSP_ERR_INVALID_ARGUMENT = 3, ///< Invalid input parameter + FSP_ERR_INVALID_CHANNEL = 4, ///< Selected channel does not exist + FSP_ERR_INVALID_MODE = 5, ///< Unsupported or incorrect mode + FSP_ERR_UNSUPPORTED = 6, ///< Selected mode not supported by this API + FSP_ERR_NOT_OPEN = 7, ///< Requested channel is not configured or API not open + FSP_ERR_IN_USE = 8, ///< Channel/peripheral is running/busy + FSP_ERR_OUT_OF_MEMORY = 9, ///< Allocate more memory in the driver's cfg.h + FSP_ERR_HW_LOCKED = 10, ///< Hardware is locked + FSP_ERR_IRQ_BSP_DISABLED = 11, ///< IRQ not enabled in BSP + FSP_ERR_OVERFLOW = 12, ///< Hardware overflow + FSP_ERR_UNDERFLOW = 13, ///< Hardware underflow + FSP_ERR_ALREADY_OPEN = 14, ///< Requested channel is already open in a different configuration + FSP_ERR_APPROXIMATION = 15, ///< Could not set value to exact result + FSP_ERR_CLAMPED = 16, ///< Value had to be limited for some reason + FSP_ERR_INVALID_RATE = 17, ///< Selected rate could not be met + FSP_ERR_ABORTED = 18, ///< An operation was aborted + FSP_ERR_NOT_ENABLED = 19, ///< Requested operation is not enabled + FSP_ERR_TIMEOUT = 20, ///< Timeout error + FSP_ERR_INVALID_BLOCKS = 21, ///< Invalid number of blocks supplied + FSP_ERR_INVALID_ADDRESS = 22, ///< Invalid address supplied + FSP_ERR_INVALID_SIZE = 23, ///< Invalid size/length supplied for operation + FSP_ERR_WRITE_FAILED = 24, ///< Write operation failed + FSP_ERR_ERASE_FAILED = 25, ///< Erase operation failed + FSP_ERR_INVALID_CALL = 26, ///< Invalid function call is made + FSP_ERR_INVALID_HW_CONDITION = 27, ///< Detected hardware is in invalid condition + FSP_ERR_INVALID_FACTORY_FLASH = 28, ///< Factory flash is not available on this MCU + FSP_ERR_INVALID_STATE = 30, ///< API or command not valid in the current state + FSP_ERR_NOT_ERASED = 31, ///< Erase verification failed + FSP_ERR_SECTOR_RELEASE_FAILED = 32, ///< Sector release failed + FSP_ERR_NOT_INITIALIZED = 33, ///< Required initialization not complete + FSP_ERR_NOT_FOUND = 34, ///< The requested item could not be found + FSP_ERR_NO_CALLBACK_MEMORY = 35, ///< Non-secure callback memory not provided for non-secure callback + FSP_ERR_BUFFER_EMPTY = 36, ///< No data available in buffer + FSP_ERR_INVALID_DATA = 37, ///< Accuracy of data is not guaranteed + + /* Start of RTOS only error codes */ + FSP_ERR_INTERNAL = 100, ///< Internal error + FSP_ERR_WAIT_ABORTED = 101, ///< Wait aborted + + /* Start of UART specific */ + FSP_ERR_FRAMING = 200, ///< Framing error occurs + FSP_ERR_BREAK_DETECT = 201, ///< Break signal detects + FSP_ERR_PARITY = 202, ///< Parity error occurs + FSP_ERR_RXBUF_OVERFLOW = 203, ///< Receive queue overflow + FSP_ERR_QUEUE_UNAVAILABLE = 204, ///< Can't open s/w queue + FSP_ERR_INSUFFICIENT_SPACE = 205, ///< Not enough space in transmission circular buffer + FSP_ERR_INSUFFICIENT_DATA = 206, ///< Not enough data in receive circular buffer + + /* Start of SPI specific */ + FSP_ERR_TRANSFER_ABORTED = 300, ///< The data transfer was aborted. + FSP_ERR_MODE_FAULT = 301, ///< Mode fault error. + FSP_ERR_READ_OVERFLOW = 302, ///< Read overflow. + FSP_ERR_SPI_PARITY = 303, ///< Parity error. + FSP_ERR_OVERRUN = 304, ///< Overrun error. + + /* Start of CGC Specific */ + FSP_ERR_CLOCK_INACTIVE = 400, ///< Inactive clock specified as system clock. + FSP_ERR_CLOCK_ACTIVE = 401, ///< Active clock source cannot be modified without stopping first. + FSP_ERR_NOT_STABILIZED = 403, ///< Clock has not stabilized after its been turned on/off + FSP_ERR_PLL_SRC_INACTIVE = 404, ///< PLL initialization attempted when PLL source is turned off + FSP_ERR_OSC_STOP_DET_ENABLED = 405, ///< Illegal attempt to stop LOCO when Oscillation stop is enabled + FSP_ERR_OSC_STOP_DETECTED = 406, ///< The Oscillation stop detection status flag is set + FSP_ERR_OSC_STOP_CLOCK_ACTIVE = 407, ///< Attempt to clear Oscillation Stop Detect Status with PLL/MAIN_OSC active + FSP_ERR_CLKOUT_EXCEEDED = 408, ///< Output on target output clock pin exceeds maximum supported limit + FSP_ERR_USB_MODULE_ENABLED = 409, ///< USB clock configure request with USB Module enabled + FSP_ERR_HARDWARE_TIMEOUT = 410, ///< A register read or write timed out + FSP_ERR_LOW_VOLTAGE_MODE = 411, ///< Invalid clock setting attempted in low voltage mode + + /* Start of FLASH Specific */ + FSP_ERR_PE_FAILURE = 500, ///< Unable to enter Programming mode. + FSP_ERR_CMD_LOCKED = 501, ///< Peripheral in command locked state + FSP_ERR_FCLK = 502, ///< FCLK must be >= 4 MHz + FSP_ERR_INVALID_LINKED_ADDRESS = 503, ///< Function or data are linked at an invalid region of memory + FSP_ERR_BLANK_CHECK_FAILED = 504, ///< Blank check operation failed + + /* Start of CAC Specific */ + FSP_ERR_INVALID_CAC_REF_CLOCK = 600, ///< Measured clock rate < reference clock rate + + /* Start of IIRFA Specific */ + FSP_ERR_INVALID_RESULT = 700, ///< The result of one or more calculations was +/- infinity. + + /* Start of GLCD Specific */ + FSP_ERR_CLOCK_GENERATION = 1000, ///< Clock cannot be specified as system clock + FSP_ERR_INVALID_TIMING_SETTING = 1001, ///< Invalid timing parameter + FSP_ERR_INVALID_LAYER_SETTING = 1002, ///< Invalid layer parameter + FSP_ERR_INVALID_ALIGNMENT = 1003, ///< Invalid memory alignment found + FSP_ERR_INVALID_GAMMA_SETTING = 1004, ///< Invalid gamma correction parameter + FSP_ERR_INVALID_LAYER_FORMAT = 1005, ///< Invalid color format in layer + FSP_ERR_INVALID_UPDATE_TIMING = 1006, ///< Invalid timing for register update + FSP_ERR_INVALID_CLUT_ACCESS = 1007, ///< Invalid access to CLUT entry + FSP_ERR_INVALID_FADE_SETTING = 1008, ///< Invalid fade-in/fade-out setting + FSP_ERR_INVALID_BRIGHTNESS_SETTING = 1009, ///< Invalid gamma correction parameter + + /* Start of JPEG Specific */ + FSP_ERR_JPEG_ERR = 1100, ///< JPEG error + FSP_ERR_JPEG_SOI_NOT_DETECTED = 1101, ///< SOI not detected until EOI detected. + FSP_ERR_JPEG_SOF1_TO_SOFF_DETECTED = 1102, ///< SOF1 to SOFF detected. + FSP_ERR_JPEG_UNSUPPORTED_PIXEL_FORMAT = 1103, ///< Unprovided pixel format detected. + FSP_ERR_JPEG_SOF_ACCURACY_ERROR = 1104, ///< SOF accuracy error: other than 8 detected. + FSP_ERR_JPEG_DQT_ACCURACY_ERROR = 1105, ///< DQT accuracy error: other than 0 detected. + FSP_ERR_JPEG_COMPONENT_ERROR1 = 1106, ///< Component error 1: the number of SOF0 header components detected is other than 1, 3, or 4. + FSP_ERR_JPEG_COMPONENT_ERROR2 = 1107, ///< Component error 2: the number of components differs between SOF0 header and SOS. + FSP_ERR_JPEG_SOF0_DQT_DHT_NOT_DETECTED = 1108, ///< SOF0, DQT, and DHT not detected when SOS detected. + FSP_ERR_JPEG_SOS_NOT_DETECTED = 1109, ///< SOS not detected: SOS not detected until EOI detected. + FSP_ERR_JPEG_EOI_NOT_DETECTED = 1110, ///< EOI not detected (default) + FSP_ERR_JPEG_RESTART_INTERVAL_DATA_NUMBER_ERROR = 1111, ///< Restart interval data number error detected. + FSP_ERR_JPEG_IMAGE_SIZE_ERROR = 1112, ///< Image size error detected. + FSP_ERR_JPEG_LAST_MCU_DATA_NUMBER_ERROR = 1113, ///< Last MCU data number error detected. + FSP_ERR_JPEG_BLOCK_DATA_NUMBER_ERROR = 1114, ///< Block data number error detected. + FSP_ERR_JPEG_BUFFERSIZE_NOT_ENOUGH = 1115, ///< User provided buffer size not enough + FSP_ERR_JPEG_UNSUPPORTED_IMAGE_SIZE = 1116, ///< JPEG Image size is not aligned with MCU + + /* Start of touch panel framework specific */ + FSP_ERR_CALIBRATE_FAILED = 1200, ///< Calibration failed + + /* Start of IIRFA specific */ + FSP_ERR_IIRFA_ECC_1BIT = 1300, ///< 1-bit ECC error detected + FSP_ERR_IIRFA_ECC_2BIT = 1301, ///< 2-bit ECC error detected + + /* Start of IP specific */ + FSP_ERR_IP_HARDWARE_NOT_PRESENT = 1400, ///< Requested IP does not exist on this device + FSP_ERR_IP_UNIT_NOT_PRESENT = 1401, ///< Requested unit does not exist on this device + FSP_ERR_IP_CHANNEL_NOT_PRESENT = 1402, ///< Requested channel does not exist on this device + + /* Start of USB specific */ + FSP_ERR_USB_FAILED = 1500, + FSP_ERR_USB_BUSY = 1501, + FSP_ERR_USB_SIZE_SHORT = 1502, + FSP_ERR_USB_SIZE_OVER = 1503, + FSP_ERR_USB_NOT_OPEN = 1504, + FSP_ERR_USB_NOT_SUSPEND = 1505, + FSP_ERR_USB_PARAMETER = 1506, + + /* Start of Message framework specific */ + FSP_ERR_NO_MORE_BUFFER = 2000, ///< No more buffer found in the memory block pool + FSP_ERR_ILLEGAL_BUFFER_ADDRESS = 2001, ///< Buffer address is out of block memory pool + FSP_ERR_INVALID_WORKBUFFER_SIZE = 2002, ///< Work buffer size is invalid + FSP_ERR_INVALID_MSG_BUFFER_SIZE = 2003, ///< Message buffer size is invalid + FSP_ERR_TOO_MANY_BUFFERS = 2004, ///< Number of buffer is too many + FSP_ERR_NO_SUBSCRIBER_FOUND = 2005, ///< No message subscriber found + FSP_ERR_MESSAGE_QUEUE_EMPTY = 2006, ///< No message found in the message queue + FSP_ERR_MESSAGE_QUEUE_FULL = 2007, ///< No room for new message in the message queue + FSP_ERR_ILLEGAL_SUBSCRIBER_LISTS = 2008, ///< Message subscriber lists is illegal + FSP_ERR_BUFFER_RELEASED = 2009, ///< Buffer has been released + + /* Start of 2DG Driver specific */ + FSP_ERR_D2D_ERROR_INIT = 3000, ///< D/AVE 2D has an error in the initialization + FSP_ERR_D2D_ERROR_DEINIT = 3001, ///< D/AVE 2D has an error in the initialization + FSP_ERR_D2D_ERROR_RENDERING = 3002, ///< D/AVE 2D has an error in the rendering + FSP_ERR_D2D_ERROR_SIZE = 3003, ///< D/AVE 2D has an error in the rendering + + /* Start of ETHER Driver specific */ + FSP_ERR_ETHER_ERROR_NO_DATA = 4000, ///< No Data in Receive buffer. + FSP_ERR_ETHER_ERROR_LINK = 4001, ///< ETHERC/EDMAC has an error in the Auto-negotiation + FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE = 4002, ///< As a Magic Packet is being detected, and transmission/reception is not enabled + FSP_ERR_ETHER_ERROR_TRANSMIT_BUFFER_FULL = 4003, ///< Transmit buffer is not empty + FSP_ERR_ETHER_ERROR_FILTERING = 4004, ///< Detect multicast frame when multicast frame filtering enable + FSP_ERR_ETHER_ERROR_PHY_COMMUNICATION = 4005, ///< ETHERC/EDMAC has an error in the phy communication + FSP_ERR_ETHER_RECEIVE_BUFFER_ACTIVE = 4006, ///< Receive buffer is active. + + /* Start of ETHER_PHY Driver specific */ + FSP_ERR_ETHER_PHY_ERROR_LINK = 5000, ///< PHY is not link up. + FSP_ERR_ETHER_PHY_NOT_READY = 5001, ///< PHY has an error in the Auto-negotiation + + /* Start of BYTEQ library specific */ + FSP_ERR_QUEUE_FULL = 10000, ///< Queue is full, cannot queue another data + FSP_ERR_QUEUE_EMPTY = 10001, ///< Queue is empty, no data to dequeue + + /* Start of CTSU Driver specific */ + FSP_ERR_CTSU_SCANNING = 6000, ///< Scanning. + FSP_ERR_CTSU_NOT_GET_DATA = 6001, ///< Not processed previous scan data. + FSP_ERR_CTSU_INCOMPLETE_TUNING = 6002, ///< Incomplete initial offset tuning. + FSP_ERR_CTSU_DIAG_NOT_YET = 6003, ///< Diagnosis of data collected no yet. + FSP_ERR_CTSU_DIAG_LDO_OVER_VOLTAGE = 6004, ///< Diagnosis of LDO over voltage failed. + FSP_ERR_CTSU_DIAG_CCO_HIGH = 6005, ///< Diagnosis of CCO into 19.2uA failed. + FSP_ERR_CTSU_DIAG_CCO_LOW = 6006, ///< Diagnosis of CCO into 2.4uA failed. + FSP_ERR_CTSU_DIAG_SSCG = 6007, ///< Diagnosis of SSCG frequency failed. + FSP_ERR_CTSU_DIAG_DAC = 6008, ///< Diagnosis of non-touch count value failed. + FSP_ERR_CTSU_DIAG_OUTPUT_VOLTAGE = 6009, ///< Diagnosis of LDO output voltage failed. + FSP_ERR_CTSU_DIAG_OVER_VOLTAGE = 6010, ///< Diagnosis of over voltage detection circuit failed. + FSP_ERR_CTSU_DIAG_OVER_CURRENT = 6011, ///< Diagnosis of over current detection circuit failed. + FSP_ERR_CTSU_DIAG_LOAD_RESISTANCE = 6012, ///< Diagnosis of LDO internal resistance value failed. + FSP_ERR_CTSU_DIAG_CURRENT_SOURCE = 6013, ///< Diagnosis of Current source value failed. + FSP_ERR_CTSU_DIAG_SENSCLK_GAIN = 6014, ///< Diagnosis of SENSCLK frequency gain failed. + FSP_ERR_CTSU_DIAG_SUCLK_GAIN = 6015, ///< Diagnosis of SUCLK frequency gain failed. + FSP_ERR_CTSU_DIAG_CLOCK_RECOVERY = 6016, ///< Diagnosis of SUCLK clock recovery function failed. + FSP_ERR_CTSU_DIAG_CFC_GAIN = 6017, ///< Diagnosis of CFC oscillator gain failed. + + /* Start of SDMMC specific */ + FSP_ERR_CARD_INIT_FAILED = 40000, ///< SD card or eMMC device failed to initialize. + FSP_ERR_CARD_NOT_INSERTED = 40001, ///< SD card not installed. + FSP_ERR_DEVICE_BUSY = 40002, ///< Device is holding DAT0 low or another operation is ongoing. + FSP_ERR_CARD_NOT_INITIALIZED = 40004, ///< SD card was removed. + FSP_ERR_CARD_WRITE_PROTECTED = 40005, ///< Media is write protected. + FSP_ERR_TRANSFER_BUSY = 40006, ///< Transfer in progress. + FSP_ERR_RESPONSE = 40007, ///< Card did not respond or responded with an error. + + /* Start of FX_IO specific */ + FSP_ERR_MEDIA_FORMAT_FAILED = 50000, ///< Media format failed. + FSP_ERR_MEDIA_OPEN_FAILED = 50001, ///< Media open failed. + + /* Start of CAN specific */ + FSP_ERR_CAN_DATA_UNAVAILABLE = 60000, ///< No data available. + FSP_ERR_CAN_MODE_SWITCH_FAILED = 60001, ///< Switching operation modes failed. + FSP_ERR_CAN_INIT_FAILED = 60002, ///< Hardware initialization failed. + FSP_ERR_CAN_TRANSMIT_NOT_READY = 60003, ///< Transmit in progress. + FSP_ERR_CAN_RECEIVE_MAILBOX = 60004, ///< Mailbox is setup as a receive mailbox. + FSP_ERR_CAN_TRANSMIT_MAILBOX = 60005, ///< Mailbox is setup as a transmit mailbox. + FSP_ERR_CAN_MESSAGE_LOST = 60006, ///< Receive message has been overwritten or overrun. + FSP_ERR_CAN_TRANSMIT_FIFO_FULL = 60007, ///< Transmit FIFO is full. + + /* Start of SF_WIFI Specific */ + FSP_ERR_WIFI_CONFIG_FAILED = 70000, ///< WiFi module Configuration failed. + FSP_ERR_WIFI_INIT_FAILED = 70001, ///< WiFi module initialization failed. + FSP_ERR_WIFI_TRANSMIT_FAILED = 70002, ///< Transmission failed + FSP_ERR_WIFI_INVALID_MODE = 70003, ///< API called when provisioned in client mode + FSP_ERR_WIFI_FAILED = 70004, ///< WiFi Failed. + FSP_ERR_WIFI_SCAN_COMPLETE = 70005, ///< Wifi scan has completed. + FSP_ERR_WIFI_AP_NOT_CONNECTED = 70006, ///< WiFi module is not connected to access point + FSP_ERR_WIFI_UNKNOWN_AT_CMD = 70007, ///< DA16200 Unknown AT command Error + FSP_ERR_WIFI_INSUF_PARAM = 70008, ///< DA16200 Insufficient parameter + FSP_ERR_WIFI_TOO_MANY_PARAMS = 70009, ///< DA16200 Too many parameters + FSP_ERR_WIFI_INV_PARAM_VAL = 70010, ///< DA16200 Wrong parameter value + FSP_ERR_WIFI_NO_RESULT = 70011, ///< DA16200 No result + FSP_ERR_WIFI_RSP_BUF_OVFLW = 70012, ///< DA16200 Response buffer overflow + FSP_ERR_WIFI_FUNC_NOT_CONFIG = 70013, ///< DA16200 Function is not configured + FSP_ERR_WIFI_NVRAM_WR_FAIL = 70014, ///< DA16200 NVRAM write failure + FSP_ERR_WIFI_RET_MEM_WR_FAIL = 70015, ///< DA16200 Retention memory write failure + FSP_ERR_WIFI_UNKNOWN_ERR = 70016, ///< DA16200 unknown error + + /* Start of SF_CELLULAR Specific */ + FSP_ERR_CELLULAR_CONFIG_FAILED = 80000, ///< Cellular module Configuration failed. + FSP_ERR_CELLULAR_INIT_FAILED = 80001, ///< Cellular module initialization failed. + FSP_ERR_CELLULAR_TRANSMIT_FAILED = 80002, ///< Transmission failed + FSP_ERR_CELLULAR_FW_UPTODATE = 80003, ///< Firmware is uptodate + FSP_ERR_CELLULAR_FW_UPGRADE_FAILED = 80004, ///< Firmware upgrade failed + FSP_ERR_CELLULAR_FAILED = 80005, ///< Cellular Failed. + FSP_ERR_CELLULAR_INVALID_STATE = 80006, ///< API Called in invalid state. + FSP_ERR_CELLULAR_REGISTRATION_FAILED = 80007, ///< Cellular Network registration failed + + /* Start of SF_BLE specific */ + FSP_ERR_BLE_FAILED = 90001, ///< BLE operation failed + FSP_ERR_BLE_INIT_FAILED = 90002, ///< BLE device initialization failed + FSP_ERR_BLE_CONFIG_FAILED = 90003, ///< BLE device configuration failed + FSP_ERR_BLE_PRF_ALREADY_ENABLED = 90004, ///< BLE device Profile already enabled + FSP_ERR_BLE_PRF_NOT_ENABLED = 90005, ///< BLE device not enabled + + /* Start of SF_BLE_ABS specific */ + FSP_ERR_BLE_ABS_INVALID_OPERATION = 91001, ///< Invalid operation is executed. + FSP_ERR_BLE_ABS_NOT_FOUND = 91002, ///< Valid data or free space is not found. + + /* Start of Crypto specific (0x10000) @note Refer to sf_cryoto_err.h for Crypto error code. */ + FSP_ERR_CRYPTO_CONTINUE = 0x10000, ///< Continue executing function + FSP_ERR_CRYPTO_SCE_RESOURCE_CONFLICT = 0x10001, ///< Hardware resource busy + FSP_ERR_CRYPTO_SCE_FAIL = 0x10002, ///< Internal I/O buffer is not empty + FSP_ERR_CRYPTO_SCE_HRK_INVALID_INDEX = 0x10003, ///< Invalid index + FSP_ERR_CRYPTO_SCE_RETRY = 0x10004, ///< Retry + FSP_ERR_CRYPTO_SCE_VERIFY_FAIL = 0x10005, ///< Verify is failed + FSP_ERR_CRYPTO_SCE_ALREADY_OPEN = 0x10006, ///< HW SCE module is already opened + FSP_ERR_CRYPTO_NOT_OPEN = 0x10007, ///< Hardware module is not initialized + FSP_ERR_CRYPTO_UNKNOWN = 0x10008, ///< Some unknown error occurred + FSP_ERR_CRYPTO_NULL_POINTER = 0x10009, ///< Null pointer input as a parameter + FSP_ERR_CRYPTO_NOT_IMPLEMENTED = 0x1000a, ///< Algorithm/size not implemented + FSP_ERR_CRYPTO_RNG_INVALID_PARAM = 0x1000b, ///< An invalid parameter is specified + FSP_ERR_CRYPTO_RNG_FATAL_ERROR = 0x1000c, ///< A fatal error occurred + FSP_ERR_CRYPTO_INVALID_SIZE = 0x1000d, ///< Size specified is invalid + FSP_ERR_CRYPTO_INVALID_STATE = 0x1000e, ///< Function used in an valid state + FSP_ERR_CRYPTO_ALREADY_OPEN = 0x1000f, ///< control block is already opened + FSP_ERR_CRYPTO_INSTALL_KEY_FAILED = 0x10010, ///< Specified input key is invalid. + FSP_ERR_CRYPTO_AUTHENTICATION_FAILED = 0x10011, ///< Authentication failed + FSP_ERR_CRYPTO_SCE_KEY_SET_FAIL = 0x10012, ///< Failure to Init Cipher + FSP_ERR_CRYPTO_SCE_AUTHENTICATION = 0x10013, ///< Authentication failed + FSP_ERR_CRYPTO_SCE_PARAMETER = 0x10014, ///< Input date is illegal. + FSP_ERR_CRYPTO_SCE_PROHIBIT_FUNCTION = 0x10015, ///< An invalid function call occurred. + + /* Start of SF_CRYPTO specific */ + FSP_ERR_CRYPTO_COMMON_NOT_OPENED = 0x20000, ///< Crypto Framework Common is not opened + FSP_ERR_CRYPTO_HAL_ERROR = 0x20001, ///< Cryoto HAL module returned an error + FSP_ERR_CRYPTO_KEY_BUF_NOT_ENOUGH = 0x20002, ///< Key buffer size is not enough to generate a key + FSP_ERR_CRYPTO_BUF_OVERFLOW = 0x20003, ///< Attempt to write data larger than what the buffer can hold + FSP_ERR_CRYPTO_INVALID_OPERATION_MODE = 0x20004, ///< Invalid operation mode. + FSP_ERR_MESSAGE_TOO_LONG = 0x20005, ///< Message for RSA encryption is too long. + FSP_ERR_RSA_DECRYPTION_ERROR = 0x20006, ///< RSA Decryption error. + + /** @note SF_CRYPTO APIs may return an error code starting from 0x10000 which is of Crypto module. + * Refer to sf_cryoto_err.h for Crypto error codes. + */ + + /* Start of Sensor specific */ + FSP_ERR_SENSOR_INVALID_DATA = 0x30000, ///< Data is invalid. + FSP_ERR_SENSOR_IN_STABILIZATION = 0x30001, ///< Sensor is stabilizing. + FSP_ERR_SENSOR_MEASUREMENT_NOT_FINISHED = 0x30002, ///< Measurement is not finished. + + /* Start of COMMS specific */ + FSP_ERR_COMMS_BUS_NOT_OPEN = 0x40000, ///< Bus is not open. +} fsp_err_t; + +/** @} */ + +/*********************************************************************************************************************** + * Function prototypes + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_ioport_api.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_ioport_api.h new file mode 100644 index 0000000000..ad9106e9e2 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_ioport_api.h @@ -0,0 +1,206 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup RENESAS_INTERFACES + * @defgroup IOPORT_API I/O Port Interface + * @brief Interface for accessing I/O ports and configuring I/O functionality. + * + * @section IOPORT_API_SUMMARY Summary + * The IOPort shared interface provides the ability to access the IOPorts of a device at both bit and port level. + * Port and pin direction can be changed. + * + * + * @{ + **********************************************************************************************************************/ + +#ifndef R_IOPORT_API_H +#define R_IOPORT_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Common error codes and definitions. */ +#include "bsp_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +#ifndef BSP_OVERRIDE_IOPORT_SIZE_T + +/** IO port type used with ports */ +typedef uint16_t ioport_size_t; ///< IO port size +#endif + +/** Pin identifier and pin configuration value */ +typedef struct st_ioport_pin_cfg +{ + uint32_t pin_cfg; ///< Pin configuration - Use ioport_cfg_options_t parameters to configure + bsp_io_port_pin_t pin; ///< Pin identifier +} ioport_pin_cfg_t; + +/** Multiple pin configuration data for loading into registers by R_IOPORT_Open() */ +typedef struct st_ioport_cfg +{ + uint16_t number_of_pins; ///< Number of pins for which there is configuration data + ioport_pin_cfg_t const * p_pin_cfg_data; ///< Pin configuration data + const void * p_extend; ///< Pointer to hardware extend configuration +} ioport_cfg_t; + +/** IOPORT control block. Allocate an instance specific control block to pass into the IOPORT API calls. + */ +typedef void ioport_ctrl_t; + +/** IOPort driver structure. IOPort functions implemented at the HAL layer will follow this API. */ +typedef struct st_ioport_api +{ + /** Initialize internal driver data and initial pin configurations. Called during startup. Do + * not call this API during runtime. Use @ref ioport_api_t::pinsCfg for runtime reconfiguration of + * multiple pins. + * + * @param[in] p_ctrl Pointer to control structure. Must be declared by user. Elements set here. + * @param[in] p_cfg Pointer to pin configuration data array. + */ + fsp_err_t (* open)(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); + + /** Close the API. + * + * @param[in] p_ctrl Pointer to control structure. + **/ + fsp_err_t (* close)(ioport_ctrl_t * const p_ctrl); + + /** Configure multiple pins. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] p_cfg Pointer to pin configuration data array. + */ + fsp_err_t (* pinsCfg)(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); + + /** Configure settings for an individual pin. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be read. + * @param[in] cfg Configuration options for the pin. + */ + fsp_err_t (* pinCfg)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg); + + /** Read the event input data of the specified pin and return the level. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be read. + * @param[in] p_pin_event Pointer to return the event data. + */ + fsp_err_t (* pinEventInputRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_event); + + /** Write pin event data. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin event data is to be written to. + * @param[in] pin_value Level to be written to pin output event. + */ + fsp_err_t (* pinEventOutputWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value); + + /** Read level of a pin. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be read. + * @param[in] p_pin_value Pointer to return the pin level. + */ + fsp_err_t (* pinRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_value); + + /** Write specified level to a pin. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] pin Pin to be written to. + * @param[in] level State to be written to the pin. + */ + fsp_err_t (* pinWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level); + + /** Set the direction of one or more pins on a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port being configured. + * @param[in] direction_values Value controlling direction of pins on port. + * @param[in] mask Mask controlling which pins on the port are to be configured. + */ + fsp_err_t (* portDirectionSet)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t direction_values, + ioport_size_t mask); + + /** Read captured event data for a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port to be read. + * @param[in] p_event_data Pointer to return the event data. + */ + fsp_err_t (* portEventInputRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_event_data); + + /** Write event output data for a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port event data will be written to. + * @param[in] event_data Data to be written as event data to specified port. + * @param[in] mask_value Each bit set to 1 in the mask corresponds to that bit's value in event data. + * being written to port. + */ + fsp_err_t (* portEventOutputWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t event_data, + ioport_size_t mask_value); + + /** Read states of pins on the specified port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port to be read. + * @param[in] p_port_value Pointer to return the port value. + */ + fsp_err_t (* portRead)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_port_value); + + /** Write to multiple pins on a port. + * + * @param[in] p_ctrl Pointer to control structure. + * @param[in] port Port to be written to. + * @param[in] value Value to be written to the port. + * @param[in] mask Mask controlling which pins on the port are written to. + */ + fsp_err_t (* portWrite)(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask); +} ioport_api_t; + +/** This structure encompasses everything that is needed to use an instance of this interface. */ +typedef struct st_ioport_instance +{ + ioport_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance + ioport_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance + ioport_api_t const * p_api; ///< Pointer to the API structure for this instance +} ioport_instance_t; + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/*******************************************************************************************************************//** + * @} (end defgroup IOPORT_API) + **********************************************************************************************************************/ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_transfer_api.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_transfer_api.h new file mode 100644 index 0000000000..020d0a3d67 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_transfer_api.h @@ -0,0 +1,381 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup RENESAS_INTERFACES + * @defgroup TRANSFER_API Transfer Interface + * + * @brief Interface for data transfer functions. + * + * @section TRANSFER_API_SUMMARY Summary + * The transfer interface supports background data transfer (no CPU intervention). + * + * + * @{ + **********************************************************************************************************************/ + +#ifndef R_TRANSFER_API_H +#define R_TRANSFER_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Common error codes and definitions. */ +#include "bsp_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +#define TRANSFER_SETTINGS_MODE_BITS (30U) +#define TRANSFER_SETTINGS_SIZE_BITS (28U) +#define TRANSFER_SETTINGS_SRC_ADDR_BITS (26U) +#define TRANSFER_SETTINGS_CHAIN_MODE_BITS (22U) +#define TRANSFER_SETTINGS_IRQ_BITS (21U) +#define TRANSFER_SETTINGS_REPEAT_AREA_BITS (20U) +#define TRANSFER_SETTINGS_DEST_ADDR_BITS (18U) + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Transfer control block. Allocate an instance specific control block to pass into the transfer API calls. + */ +typedef void transfer_ctrl_t; + +#ifndef BSP_OVERRIDE_TRANSFER_MODE_T + +/** Transfer mode describes what will happen when a transfer request occurs. */ +typedef enum e_transfer_mode +{ + /** In normal mode, each transfer request causes a transfer of @ref transfer_size_t from the source pointer to + * the destination pointer. The transfer length is decremented and the source and address pointers are + * updated according to @ref transfer_addr_mode_t. After the transfer length reaches 0, transfer requests + * will not cause any further transfers. */ + TRANSFER_MODE_NORMAL = 0, + + /** Repeat mode is like normal mode, except that when the transfer length reaches 0, the pointer to the + * repeat area and the transfer length will be reset to their initial values. If DMAC is used, the + * transfer repeats only transfer_info_t::num_blocks times. After the transfer repeats + * transfer_info_t::num_blocks times, transfer requests will not cause any further transfers. If DTC is + * used, the transfer repeats continuously (no limit to the number of repeat transfers). */ + TRANSFER_MODE_REPEAT = 1, + + /** In block mode, each transfer request causes transfer_info_t::length transfers of @ref transfer_size_t. + * After each individual transfer, the source and destination pointers are updated according to + * @ref transfer_addr_mode_t. After the block transfer is complete, transfer_info_t::num_blocks is + * decremented. After the transfer_info_t::num_blocks reaches 0, transfer requests will not cause any + * further transfers. */ + TRANSFER_MODE_BLOCK = 2, + + /** In addition to block mode features, repeat-block mode supports a ring buffer of blocks and offsets + * within a block (to split blocks into arrays of their first data, second data, etc.) */ + TRANSFER_MODE_REPEAT_BLOCK = 3 +} transfer_mode_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_SIZE_T + +/** Transfer size specifies the size of each individual transfer. + * Total transfer length = transfer_size_t * transfer_length_t + */ +typedef enum e_transfer_size +{ + TRANSFER_SIZE_1_BYTE = 0, ///< Each transfer transfers a 8-bit value + TRANSFER_SIZE_2_BYTE = 1, ///< Each transfer transfers a 16-bit value + TRANSFER_SIZE_4_BYTE = 2 ///< Each transfer transfers a 32-bit value +} transfer_size_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_ADDR_MODE_T + +/** Address mode specifies whether to modify (increment or decrement) pointer after each transfer. */ +typedef enum e_transfer_addr_mode +{ + /** Address pointer remains fixed after each transfer. */ + TRANSFER_ADDR_MODE_FIXED = 0, + + /** Offset is added to the address pointer after each transfer. */ + TRANSFER_ADDR_MODE_OFFSET = 1, + + /** Address pointer is incremented by associated @ref transfer_size_t after each transfer. */ + TRANSFER_ADDR_MODE_INCREMENTED = 2, + + /** Address pointer is decremented by associated @ref transfer_size_t after each transfer. */ + TRANSFER_ADDR_MODE_DECREMENTED = 3 +} transfer_addr_mode_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_REPEAT_AREA_T + +/** Repeat area options (source or destination). In @ref TRANSFER_MODE_REPEAT, the selected pointer returns to its + * original value after transfer_info_t::length transfers. In @ref TRANSFER_MODE_BLOCK and @ref TRANSFER_MODE_REPEAT_BLOCK, + * the selected pointer returns to its original value after each transfer. */ +typedef enum e_transfer_repeat_area +{ + /** Destination area repeated in @ref TRANSFER_MODE_REPEAT or @ref TRANSFER_MODE_BLOCK or @ref TRANSFER_MODE_REPEAT_BLOCK. */ + TRANSFER_REPEAT_AREA_DESTINATION = 0, + + /** Source area repeated in @ref TRANSFER_MODE_REPEAT or @ref TRANSFER_MODE_BLOCK or @ref TRANSFER_MODE_REPEAT_BLOCK. */ + TRANSFER_REPEAT_AREA_SOURCE = 1 +} transfer_repeat_area_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_CHAIN_MODE_T + +/** Chain transfer mode options. + * @note Only applies for DTC. */ +typedef enum e_transfer_chain_mode +{ + /** Chain mode not used. */ + TRANSFER_CHAIN_MODE_DISABLED = 0, + + /** Switch to next transfer after a single transfer from this @ref transfer_info_t. */ + TRANSFER_CHAIN_MODE_EACH = 2, + + /** Complete the entire transfer defined in this @ref transfer_info_t before chaining to next transfer. */ + TRANSFER_CHAIN_MODE_END = 3 +} transfer_chain_mode_t; + +#endif + +#ifndef BSP_OVERRIDE_TRANSFER_IRQ_T + +/** Interrupt options. */ +typedef enum e_transfer_irq +{ + /** Interrupt occurs only after last transfer. If this transfer is chained to a subsequent transfer, + * the interrupt will occur only after subsequent chained transfer(s) are complete. + * @warning DTC triggers the interrupt of the activation source. Choosing TRANSFER_IRQ_END with DTC will + * prevent activation source interrupts until the transfer is complete. */ + TRANSFER_IRQ_END = 0, + + /** Interrupt occurs after each transfer. + * @note Not available in all HAL drivers. See HAL driver for details. */ + TRANSFER_IRQ_EACH = 1 +} transfer_irq_t; + +#endif + +/** Driver specific information. */ +typedef struct st_transfer_properties +{ + uint32_t block_count_max; ///< Maximum number of blocks + uint32_t block_count_remaining; ///< Number of blocks remaining + uint32_t transfer_length_max; ///< Maximum number of transfers + uint32_t transfer_length_remaining; ///< Number of transfers remaining +} transfer_properties_t; + +#ifndef BSP_OVERRIDE_TRANSFER_INFO_T + +/** This structure specifies the properties of the transfer. + * @warning When using DTC, this structure corresponds to the descriptor block registers required by the DTC. + * The following components may be modified by the driver: p_src, p_dest, num_blocks, and length. + * @warning When using DTC, do NOT reuse this structure to configure multiple transfers. Each transfer must + * have a unique transfer_info_t. + * @warning When using DTC, this structure must not be allocated in a temporary location. Any instance of this + * structure must remain in scope until the transfer it is used for is closed. + * @note When using DTC, consider placing instances of this structure in a protected section of memory. */ +typedef struct st_transfer_info +{ + union + { + struct + { + uint32_t : 16; + uint32_t : 2; + + /** Select what happens to destination pointer after each transfer. */ + transfer_addr_mode_t dest_addr_mode : 2; + + /** Select to repeat source or destination area, unused in @ref TRANSFER_MODE_NORMAL. */ + transfer_repeat_area_t repeat_area : 1; + + /** Select if interrupts should occur after each individual transfer or after the completion of all planned + * transfers. */ + transfer_irq_t irq : 1; + + /** Select when the chain transfer ends. */ + transfer_chain_mode_t chain_mode : 2; + + uint32_t : 2; + + /** Select what happens to source pointer after each transfer. */ + transfer_addr_mode_t src_addr_mode : 2; + + /** Select number of bytes to transfer at once. @see transfer_info_t::length. */ + transfer_size_t size : 2; + + /** Select mode from @ref transfer_mode_t. */ + transfer_mode_t mode : 2; + } transfer_settings_word_b; + + uint32_t transfer_settings_word; + }; + + void const * volatile p_src; ///< Source pointer + void * volatile p_dest; ///< Destination pointer + + /** Number of blocks to transfer when using @ref TRANSFER_MODE_BLOCK (both DTC an DMAC) or + * @ref TRANSFER_MODE_REPEAT (DMAC only) or + * @ref TRANSFER_MODE_REPEAT_BLOCK (DMAC only), unused in other modes. */ + volatile uint16_t num_blocks; + + /** Length of each transfer. Range limited for @ref TRANSFER_MODE_BLOCK, @ref TRANSFER_MODE_REPEAT, + * and @ref TRANSFER_MODE_REPEAT_BLOCK + * see HAL driver for details. */ + volatile uint16_t length; +} transfer_info_t; + +#endif + +/** Driver configuration set in @ref transfer_api_t::open. All elements except p_extend are required and must be + * initialized. */ +typedef struct st_transfer_cfg +{ + /** Pointer to transfer configuration options. If using chain transfer (DTC only), this can be a pointer to + * an array of chained transfers that will be completed in order. */ + transfer_info_t * p_info; + + void const * p_extend; ///< Extension parameter for hardware specific settings. +} transfer_cfg_t; + +/** Select whether to start single or repeated transfer with software start. */ +typedef enum e_transfer_start_mode +{ + TRANSFER_START_MODE_SINGLE = 0, ///< Software start triggers single transfer. + TRANSFER_START_MODE_REPEAT = 1 ///< Software start transfer continues until transfer is complete. +} transfer_start_mode_t; + +/** Transfer functions implemented at the HAL layer will follow this API. */ +typedef struct st_transfer_api +{ + /** Initial configuration. + * + * @param[in,out] p_ctrl Pointer to control block. Must be declared by user. Elements set here. + * @param[in] p_cfg Pointer to configuration structure. All elements of this structure + * must be set by user. + */ + fsp_err_t (* open)(transfer_ctrl_t * const p_ctrl, transfer_cfg_t const * const p_cfg); + + /** Reconfigure the transfer. + * Enable the transfer if p_info is valid. + * + * @param[in,out] p_ctrl Pointer to control block. Must be declared by user. Elements set here. + * @param[in] p_info Pointer to a new transfer info structure. + */ + fsp_err_t (* reconfigure)(transfer_ctrl_t * const p_ctrl, transfer_info_t * p_info); + + /** Reset source address pointer, destination address pointer, and/or length, keeping all other settings the same. + * Enable the transfer if p_src, p_dest, and length are valid. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] p_src Pointer to source. Set to NULL if source pointer should not change. + * @param[in] p_dest Pointer to destination. Set to NULL if destination pointer should not change. + * @param[in] num_transfers Transfer length in normal mode or number of blocks in block mode. In DMAC only, + * resets number of repeats (initially stored in transfer_info_t::num_blocks) in + * repeat mode. Not used in repeat mode for DTC. + */ + fsp_err_t (* reset)(transfer_ctrl_t * const p_ctrl, void const * p_src, void * p_dest, + uint16_t const num_transfers); + + /** Enable transfer. Transfers occur after the activation source event (or when + * @ref transfer_api_t::softwareStart is called if no peripheral event is chosen as activation source). + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* enable)(transfer_ctrl_t * const p_ctrl); + + /** Disable transfer. Transfers do not occur after the activation source event (or when + * @ref transfer_api_t::softwareStart is called if no peripheral event is chosen as the DMAC activation source). + * @note If a transfer is in progress, it will be completed. Subsequent transfer requests do not cause a + * transfer. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* disable)(transfer_ctrl_t * const p_ctrl); + + /** Start transfer in software. + * @warning Only works if no peripheral event is chosen as the DMAC activation source. + * @note Not supported for DTC. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] mode Select mode from @ref transfer_start_mode_t. + */ + fsp_err_t (* softwareStart)(transfer_ctrl_t * const p_ctrl, transfer_start_mode_t mode); + + /** Stop transfer in software. The transfer will stop after completion of the current transfer. + * @note Not supported for DTC. + * @note Only applies for transfers started with TRANSFER_START_MODE_REPEAT. + * @warning Only works if no peripheral event is chosen as the DMAC activation source. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* softwareStop)(transfer_ctrl_t * const p_ctrl); + + /** Provides information about this transfer. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[out] p_properties Driver specific information. + */ + fsp_err_t (* infoGet)(transfer_ctrl_t * const p_ctrl, transfer_properties_t * const p_properties); + + /** Releases hardware lock. This allows a transfer to be reconfigured using @ref transfer_api_t::open. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + */ + fsp_err_t (* close)(transfer_ctrl_t * const p_ctrl); + + /** To update next transfer information without interruption during transfer. + * Allow further transfer continuation. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] p_src Pointer to source. Set to NULL if source pointer should not change. + * @param[in] p_dest Pointer to destination. Set to NULL if destination pointer should not change. + * @param[in] num_transfers Transfer length in normal mode or block mode. + */ + fsp_err_t (* reload)(transfer_ctrl_t * const p_ctrl, void const * p_src, void * p_dest, + uint32_t const num_transfers); +} transfer_api_t; + +/** This structure encompasses everything that is needed to use an instance of this interface. */ +typedef struct st_transfer_instance +{ + transfer_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance + transfer_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance + transfer_api_t const * p_api; ///< Pointer to the API structure for this instance +} transfer_instance_t; + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif + +/*******************************************************************************************************************//** + * @} (end defgroup TRANSFER_API) + **********************************************************************************************************************/ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_uart_api.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_uart_api.h new file mode 100644 index 0000000000..818d99f7ff --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/api/r_uart_api.h @@ -0,0 +1,267 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup RENESAS_INTERFACES + * @defgroup UART_API UART Interface + * @brief Interface for UART communications. + * + * @section UART_INTERFACE_SUMMARY Summary + * The UART interface provides common APIs for UART HAL drivers. The UART interface supports the following features: + * - Full-duplex UART communication + * - Interrupt driven transmit/receive processing + * - Callback function with returned event code + * - Runtime baud-rate change + * - Hardware resource locking during a transaction + * - CTS/RTS hardware flow control support (with an associated IOPORT pin) + * + * + * @{ + **********************************************************************************************************************/ + +#ifndef R_UART_API_H +#define R_UART_API_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Includes board and MCU related header files. */ +#include "bsp_api.h" +#include "r_transfer_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** UART Event codes */ +#ifndef BSP_OVERRIDE_UART_EVENT_T +typedef enum e_sf_event +{ + UART_EVENT_RX_COMPLETE = (1UL << 0), ///< Receive complete event + UART_EVENT_TX_COMPLETE = (1UL << 1), ///< Transmit complete event + UART_EVENT_RX_CHAR = (1UL << 2), ///< Character received + UART_EVENT_ERR_PARITY = (1UL << 3), ///< Parity error event + UART_EVENT_ERR_FRAMING = (1UL << 4), ///< Mode fault error event + UART_EVENT_ERR_OVERFLOW = (1UL << 5), ///< FIFO Overflow error event + UART_EVENT_BREAK_DETECT = (1UL << 6), ///< Break detect error event + UART_EVENT_TX_DATA_EMPTY = (1UL << 7), ///< Last byte is transmitting, ready for more data +} uart_event_t; +#endif +#ifndef BSP_OVERRIDE_UART_DATA_BITS_T + +/** UART Data bit length definition */ +typedef enum e_uart_data_bits +{ + UART_DATA_BITS_9 = 0U, ///< Data bits 9-bit + UART_DATA_BITS_8 = 2U, ///< Data bits 8-bit + UART_DATA_BITS_7 = 3U, ///< Data bits 7-bit +} uart_data_bits_t; +#endif +#ifndef BSP_OVERRIDE_UART_PARITY_T + +/** UART Parity definition */ +typedef enum e_uart_parity +{ + UART_PARITY_OFF = 0U, ///< No parity + UART_PARITY_EVEN = 2U, ///< Even parity + UART_PARITY_ODD = 3U, ///< Odd parity +} uart_parity_t; +#endif + +/** UART Stop bits definition */ +typedef enum e_uart_stop_bits +{ + UART_STOP_BITS_1 = 0U, ///< Stop bit 1-bit + UART_STOP_BITS_2 = 1U, ///< Stop bits 2-bit +} uart_stop_bits_t; + +/** UART transaction definition */ +typedef enum e_uart_dir +{ + UART_DIR_RX_TX = 3U, ///< Both RX and TX + UART_DIR_RX = 1U, ///< Only RX + UART_DIR_TX = 2U, ///< Only TX +} uart_dir_t; + +/** UART driver specific information */ +typedef struct st_uart_info +{ + /** Maximum bytes that can be written at this time. Only applies if uart_cfg_t::p_transfer_tx is not NULL. */ + uint32_t write_bytes_max; + + /** Maximum bytes that are available to read at one time. Only applies if uart_cfg_t::p_transfer_rx is not NULL. */ + uint32_t read_bytes_max; +} uart_info_t; + +/** UART Callback parameter definition */ +typedef struct st_uart_callback_arg +{ + uint32_t channel; ///< Device channel number + uart_event_t event; ///< Event code + + /** Contains the next character received for the events UART_EVENT_RX_CHAR, UART_EVENT_ERR_PARITY, + * UART_EVENT_ERR_FRAMING, or UART_EVENT_ERR_OVERFLOW. Otherwise unused. */ + uint32_t data; + void const * p_context; ///< Context provided to user during callback +} uart_callback_args_t; + +/** UART Configuration */ +typedef struct st_uart_cfg +{ + /* UART generic configuration */ + uint8_t channel; ///< Select a channel corresponding to the channel number of the hardware. + uart_data_bits_t data_bits; ///< Data bit length (8 or 7 or 9) + uart_parity_t parity; ///< Parity type (none or odd or even) + uart_stop_bits_t stop_bits; ///< Stop bit length (1 or 2) + uint8_t rxi_ipl; ///< Receive interrupt priority + IRQn_Type rxi_irq; ///< Receive interrupt IRQ number + uint8_t txi_ipl; ///< Transmit interrupt priority + IRQn_Type txi_irq; ///< Transmit interrupt IRQ number + uint8_t tei_ipl; ///< Transmit end interrupt priority + IRQn_Type tei_irq; ///< Transmit end interrupt IRQ number + uint8_t eri_ipl; ///< Error interrupt priority + IRQn_Type eri_irq; ///< Error interrupt IRQ number + + /** Optional transfer instance used to receive multiple bytes without interrupts. Set to NULL if unused. + * If NULL, the number of bytes allowed in the read API is limited to one byte at a time. */ + transfer_instance_t const * p_transfer_rx; + + /** Optional transfer instance used to send multiple bytes without interrupts. Set to NULL if unused. + * If NULL, the number of bytes allowed in the write APIs is limited to one byte at a time. */ + transfer_instance_t const * p_transfer_tx; + + /* Configuration for UART Event processing */ + void (* p_callback)(uart_callback_args_t * p_args); ///< Pointer to callback function + void const * p_context; ///< User defined context passed into callback function + + /* Pointer to UART peripheral specific configuration */ + void const * p_extend; ///< UART hardware dependent configuration +} uart_cfg_t; + +/** UART control block. Allocate an instance specific control block to pass into the UART API calls. + */ +typedef void uart_ctrl_t; + +/** Shared Interface definition for UART */ +typedef struct st_uart_api +{ + /** Open UART device. + * + * @param[in,out] p_ctrl Pointer to the UART control block. Must be declared by user. Value set here. + * @param[in] uart_cfg_t Pointer to UART configuration structure. All elements of this structure must be set by + * user. + */ + fsp_err_t (* open)(uart_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + + /** Read from UART device. The read buffer is used until the read is complete. When a transfer is complete, the + * callback is called with event UART_EVENT_RX_COMPLETE. Bytes received outside an active transfer are received in + * the callback function with event UART_EVENT_RX_CHAR. + * The maximum transfer size is reported by infoGet(). + * + * @param[in] p_ctrl Pointer to the UART control block for the channel. + * @param[in] p_dest Destination address to read data from. + * @param[in] bytes Read data length. + */ + fsp_err_t (* read)(uart_ctrl_t * const p_ctrl, uint8_t * const p_dest, uint32_t const bytes); + + /** Write to UART device. The write buffer is used until write is complete. Do not overwrite write buffer + * contents until the write is finished. When the write is complete (all bytes are fully transmitted on the wire), + * the callback called with event UART_EVENT_TX_COMPLETE. + * The maximum transfer size is reported by infoGet(). + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] p_src Source address to write data to. + * @param[in] bytes Write data length. + */ + fsp_err_t (* write)(uart_ctrl_t * const p_ctrl, uint8_t const * const p_src, uint32_t const bytes); + + /** Change baud rate. + * @warning Calling this API aborts any in-progress transmission and disables reception until the new baud + * settings have been applied. + * + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] p_baudrate_info Pointer to module specific information for configuring baud rate. + */ + fsp_err_t (* baudSet)(uart_ctrl_t * const p_ctrl, void const * const p_baudrate_info); + + /** Get the driver specific information. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] baudrate Baud rate in bps. + */ + fsp_err_t (* infoGet)(uart_ctrl_t * const p_ctrl, uart_info_t * const p_info); + + /** + * Abort ongoing transfer. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] communication_to_abort Type of abort request. + */ + fsp_err_t (* communicationAbort)(uart_ctrl_t * const p_ctrl, uart_dir_t communication_to_abort); + + /** + * Specify callback function and optional context pointer and working memory pointer. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in] p_callback Callback function + * @param[in] p_context Pointer to send to callback function + * @param[in] p_working_memory Pointer to volatile memory where callback structure can be allocated. + * Callback arguments allocated here are only valid during the callback. + */ + fsp_err_t (* callbackSet)(uart_ctrl_t * const p_ctrl, void (* p_callback)(uart_callback_args_t *), + void const * const p_context, uart_callback_args_t * const p_callback_memory); + + /** Close UART device. + * + * @param[in] p_ctrl Pointer to the UART control block. + */ + fsp_err_t (* close)(uart_ctrl_t * const p_ctrl); + + /** Stop ongoing read and return the number of bytes remaining in the read. + * + * @param[in] p_ctrl Pointer to the UART control block. + * @param[in,out] remaining_bytes Pointer to location to store remaining bytes for read. + */ + fsp_err_t (* readStop)(uart_ctrl_t * const p_ctrl, uint32_t * remaining_bytes); +} uart_api_t; + +/** This structure encompasses everything that is needed to use an instance of this interface. */ +typedef struct st_uart_instance +{ + uart_ctrl_t * p_ctrl; ///< Pointer to the control structure for this instance + uart_cfg_t const * p_cfg; ///< Pointer to the configuration structure for this instance + uart_api_t const * p_api; ///< Pointer to the API structure for this instance +} uart_instance_t; + +/** @} (end defgroup UART_API) */ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_features.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_features.h new file mode 100644 index 0000000000..0d1a6d27da --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_features.h @@ -0,0 +1,304 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef FSP_FEATURES_H +#define FSP_FEATURES_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* C99 includes. */ +#include +#include +#include +#include + +/* Different compiler support. */ +#include "fsp_common_api.h" +#include "../../fsp/src/bsp/mcu/all/bsp_compiler_support.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Available modules. */ +typedef enum e_fsp_ip +{ + FSP_IP_CFLASH = 0, ///< Code Flash + FSP_IP_DFLASH = 1, ///< Data Flash + FSP_IP_RAM = 2, ///< RAM + FSP_IP_LVD = 3, ///< Low Voltage Detection + FSP_IP_CGC = 3, ///< Clock Generation Circuit + FSP_IP_LPM = 3, ///< Low Power Modes + FSP_IP_FCU = 4, ///< Flash Control Unit + FSP_IP_ICU = 6, ///< Interrupt Control Unit + FSP_IP_DMAC = 7, ///< DMA Controller + FSP_IP_DTC = 8, ///< Data Transfer Controller + FSP_IP_IOPORT = 9, ///< I/O Ports + FSP_IP_PFS = 10, ///< Pin Function Select + FSP_IP_ELC = 11, ///< Event Link Controller + FSP_IP_MPU = 13, ///< Memory Protection Unit + FSP_IP_MSTP = 14, ///< Module Stop + FSP_IP_MMF = 15, ///< Memory Mirror Function + FSP_IP_KEY = 16, ///< Key Interrupt Function + FSP_IP_CAC = 17, ///< Clock Frequency Accuracy Measurement Circuit + FSP_IP_DOC = 18, ///< Data Operation Circuit + FSP_IP_CRC = 19, ///< Cyclic Redundancy Check Calculator + FSP_IP_SCI = 20, ///< Serial Communications Interface + FSP_IP_IIC = 21, ///< I2C Bus Interface + FSP_IP_SPI = 22, ///< Serial Peripheral Interface + FSP_IP_CTSU = 23, ///< Capacitive Touch Sensing Unit + FSP_IP_SCE = 24, ///< Secure Cryptographic Engine + FSP_IP_SLCDC = 25, ///< Segment LCD Controller + FSP_IP_AES = 26, ///< Advanced Encryption Standard + FSP_IP_TRNG = 27, ///< True Random Number Generator + FSP_IP_FCACHE = 30, ///< Flash Cache + FSP_IP_SRAM = 31, ///< SRAM + FSP_IP_ADC = 32, ///< A/D Converter + FSP_IP_DAC = 33, ///< 12-Bit D/A Converter + FSP_IP_TSN = 34, ///< Temperature Sensor + FSP_IP_DAAD = 35, ///< D/A A/D Synchronous Unit + FSP_IP_ACMPHS = 36, ///< High Speed Analog Comparator + FSP_IP_ACMPLP = 37, ///< Low Power Analog Comparator + FSP_IP_OPAMP = 38, ///< Operational Amplifier + FSP_IP_SDADC = 39, ///< Sigma Delta A/D Converter + FSP_IP_RTC = 40, ///< Real Time Clock + FSP_IP_WDT = 41, ///< Watch Dog Timer + FSP_IP_IWDT = 42, ///< Independent Watch Dog Timer + FSP_IP_GPT = 43, ///< General PWM Timer + FSP_IP_POEG = 44, ///< Port Output Enable for GPT + FSP_IP_OPS = 45, ///< Output Phase Switch + FSP_IP_AGT = 47, ///< Asynchronous General-Purpose Timer + FSP_IP_CAN = 48, ///< Controller Area Network + FSP_IP_IRDA = 49, ///< Infrared Data Association + FSP_IP_QSPI = 50, ///< Quad Serial Peripheral Interface + FSP_IP_USBFS = 51, ///< USB Full Speed + FSP_IP_SDHI = 52, ///< SD/MMC Host Interface + FSP_IP_SRC = 53, ///< Sampling Rate Converter + FSP_IP_SSI = 54, ///< Serial Sound Interface + FSP_IP_DALI = 55, ///< Digital Addressable Lighting Interface + FSP_IP_ETHER = 64, ///< Ethernet MAC Controller + FSP_IP_EDMAC = 64, ///< Ethernet DMA Controller + FSP_IP_EPTPC = 65, ///< Ethernet PTP Controller + FSP_IP_PDC = 66, ///< Parallel Data Capture Unit + FSP_IP_GLCDC = 67, ///< Graphics LCD Controller + FSP_IP_DRW = 68, ///< 2D Drawing Engine + FSP_IP_JPEG = 69, ///< JPEG + FSP_IP_DAC8 = 70, ///< 8-Bit D/A Converter + FSP_IP_USBHS = 71, ///< USB High Speed + FSP_IP_OSPI = 72, ///< Octa Serial Peripheral Interface + FSP_IP_CEC = 73, ///< HDMI CEC + FSP_IP_TFU = 74, ///< Trigonometric Function Unit + FSP_IP_IIRFA = 75, ///< IIR Filter Accelerator + FSP_IP_CANFD = 76, ///< CAN-FD + FSP_IP_ULPT = 77, ///< Ultra Low Power Timer ULPT +} fsp_ip_t; + +/** Signals that can be mapped to an interrupt. */ +typedef enum e_fsp_signal +{ + FSP_SIGNAL_ADC_COMPARE_MATCH = 0, ///< ADC COMPARE MATCH + FSP_SIGNAL_ADC_COMPARE_MISMATCH, ///< ADC COMPARE MISMATCH + FSP_SIGNAL_ADC_SCAN_END, ///< ADC SCAN END + FSP_SIGNAL_ADC_SCAN_END_B, ///< ADC SCAN END B + FSP_SIGNAL_ADC_WINDOW_A, ///< ADC WINDOW A + FSP_SIGNAL_ADC_WINDOW_B, ///< ADC WINDOW B + FSP_SIGNAL_AES_RDREQ = 0, ///< AES RDREQ + FSP_SIGNAL_AES_WRREQ, ///< AES WRREQ + FSP_SIGNAL_AGT_COMPARE_A = 0, ///< AGT COMPARE A + FSP_SIGNAL_AGT_COMPARE_B, ///< AGT COMPARE B + FSP_SIGNAL_AGT_INT, ///< AGT INT + FSP_SIGNAL_CAC_FREQUENCY_ERROR = 0, ///< CAC FREQUENCY ERROR + FSP_SIGNAL_CAC_MEASUREMENT_END, ///< CAC MEASUREMENT END + FSP_SIGNAL_CAC_OVERFLOW, ///< CAC OVERFLOW + FSP_SIGNAL_CAN_ERROR = 0, ///< CAN ERROR + FSP_SIGNAL_CAN_FIFO_RX, ///< CAN FIFO RX + FSP_SIGNAL_CAN_FIFO_TX, ///< CAN FIFO TX + FSP_SIGNAL_CAN_MAILBOX_RX, ///< CAN MAILBOX RX + FSP_SIGNAL_CAN_MAILBOX_TX, ///< CAN MAILBOX TX + FSP_SIGNAL_CGC_MOSC_STOP = 0, ///< CGC MOSC STOP + FSP_SIGNAL_LPM_SNOOZE_REQUEST, ///< LPM SNOOZE REQUEST + FSP_SIGNAL_LVD_LVD1, ///< LVD LVD1 + FSP_SIGNAL_LVD_LVD2, ///< LVD LVD2 + FSP_SIGNAL_VBATT_LVD, ///< VBATT LVD + FSP_SIGNAL_LVD_VBATT = FSP_SIGNAL_VBATT_LVD, ///< LVD VBATT + FSP_SIGNAL_ACMPHS_INT = 0, ///< ACMPHS INT + FSP_SIGNAL_ACMPLP_INT = 0, ///< ACMPLP INT + FSP_SIGNAL_CTSU_END = 0, ///< CTSU END + FSP_SIGNAL_CTSU_READ, ///< CTSU READ + FSP_SIGNAL_CTSU_WRITE, ///< CTSU WRITE + FSP_SIGNAL_DALI_DEI = 0, ///< DALI DEI + FSP_SIGNAL_DALI_CLI, ///< DALI CLI + FSP_SIGNAL_DALI_SDI, ///< DALI SDI + FSP_SIGNAL_DALI_BPI, ///< DALI BPI + FSP_SIGNAL_DALI_FEI, ///< DALI FEI + FSP_SIGNAL_DALI_SDI_OR_BPI, ///< DALI SDI OR BPI + FSP_SIGNAL_DMAC_INT = 0, ///< DMAC INT + FSP_SIGNAL_DOC_INT = 0, ///< DOC INT + FSP_SIGNAL_DRW_INT = 0, ///< DRW INT + FSP_SIGNAL_DTC_COMPLETE = 0, ///< DTC COMPLETE + FSP_SIGNAL_DTC_END, ///< DTC END + FSP_SIGNAL_EDMAC_EINT = 0, ///< EDMAC EINT + FSP_SIGNAL_ELC_SOFTWARE_EVENT_0 = 0, ///< ELC SOFTWARE EVENT 0 + FSP_SIGNAL_ELC_SOFTWARE_EVENT_1, ///< ELC SOFTWARE EVENT 1 + FSP_SIGNAL_EPTPC_IPLS = 0, ///< EPTPC IPLS + FSP_SIGNAL_EPTPC_MINT, ///< EPTPC MINT + FSP_SIGNAL_EPTPC_PINT, ///< EPTPC PINT + FSP_SIGNAL_EPTPC_TIMER0_FALL, ///< EPTPC TIMER0 FALL + FSP_SIGNAL_EPTPC_TIMER0_RISE, ///< EPTPC TIMER0 RISE + FSP_SIGNAL_EPTPC_TIMER1_FALL, ///< EPTPC TIMER1 FALL + FSP_SIGNAL_EPTPC_TIMER1_RISE, ///< EPTPC TIMER1 RISE + FSP_SIGNAL_EPTPC_TIMER2_FALL, ///< EPTPC TIMER2 FALL + FSP_SIGNAL_EPTPC_TIMER2_RISE, ///< EPTPC TIMER2 RISE + FSP_SIGNAL_EPTPC_TIMER3_FALL, ///< EPTPC TIMER3 FALL + FSP_SIGNAL_EPTPC_TIMER3_RISE, ///< EPTPC TIMER3 RISE + FSP_SIGNAL_EPTPC_TIMER4_FALL, ///< EPTPC TIMER4 FALL + FSP_SIGNAL_EPTPC_TIMER4_RISE, ///< EPTPC TIMER4 RISE + FSP_SIGNAL_EPTPC_TIMER5_FALL, ///< EPTPC TIMER5 FALL + FSP_SIGNAL_EPTPC_TIMER5_RISE, ///< EPTPC TIMER5 RISE + FSP_SIGNAL_FCU_FIFERR = 0, ///< FCU FIFERR + FSP_SIGNAL_FCU_FRDYI, ///< FCU FRDYI + FSP_SIGNAL_GLCDC_LINE_DETECT = 0, ///< GLCDC LINE DETECT + FSP_SIGNAL_GLCDC_UNDERFLOW_1, ///< GLCDC UNDERFLOW 1 + FSP_SIGNAL_GLCDC_UNDERFLOW_2, ///< GLCDC UNDERFLOW 2 + FSP_SIGNAL_GPT_CAPTURE_COMPARE_A = 0, ///< GPT CAPTURE COMPARE A + FSP_SIGNAL_GPT_CAPTURE_COMPARE_B, ///< GPT CAPTURE COMPARE B + FSP_SIGNAL_GPT_COMPARE_C, ///< GPT COMPARE C + FSP_SIGNAL_GPT_COMPARE_D, ///< GPT COMPARE D + FSP_SIGNAL_GPT_COMPARE_E, ///< GPT COMPARE E + FSP_SIGNAL_GPT_COMPARE_F, ///< GPT COMPARE F + FSP_SIGNAL_GPT_COUNTER_OVERFLOW, ///< GPT COUNTER OVERFLOW + FSP_SIGNAL_GPT_COUNTER_UNDERFLOW, ///< GPT COUNTER UNDERFLOW + FSP_SIGNAL_GPT_AD_TRIG_A, ///< GPT AD TRIG A + FSP_SIGNAL_GPT_AD_TRIG_B, ///< GPT AD TRIG B + FSP_SIGNAL_OPS_UVW_EDGE, ///< OPS UVW EDGE + FSP_SIGNAL_ICU_IRQ0 = 0, ///< ICU IRQ0 + FSP_SIGNAL_ICU_IRQ1, ///< ICU IRQ1 + FSP_SIGNAL_ICU_IRQ2, ///< ICU IRQ2 + FSP_SIGNAL_ICU_IRQ3, ///< ICU IRQ3 + FSP_SIGNAL_ICU_IRQ4, ///< ICU IRQ4 + FSP_SIGNAL_ICU_IRQ5, ///< ICU IRQ5 + FSP_SIGNAL_ICU_IRQ6, ///< ICU IRQ6 + FSP_SIGNAL_ICU_IRQ7, ///< ICU IRQ7 + FSP_SIGNAL_ICU_IRQ8, ///< ICU IRQ8 + FSP_SIGNAL_ICU_IRQ9, ///< ICU IRQ9 + FSP_SIGNAL_ICU_IRQ10, ///< ICU IRQ10 + FSP_SIGNAL_ICU_IRQ11, ///< ICU IRQ11 + FSP_SIGNAL_ICU_IRQ12, ///< ICU IRQ12 + FSP_SIGNAL_ICU_IRQ13, ///< ICU IRQ13 + FSP_SIGNAL_ICU_IRQ14, ///< ICU IRQ14 + FSP_SIGNAL_ICU_IRQ15, ///< ICU IRQ15 + FSP_SIGNAL_ICU_SNOOZE_CANCEL, ///< ICU SNOOZE CANCEL + FSP_SIGNAL_IIC_ERI = 0, ///< IIC ERI + FSP_SIGNAL_IIC_RXI, ///< IIC RXI + FSP_SIGNAL_IIC_TEI, ///< IIC TEI + FSP_SIGNAL_IIC_TXI, ///< IIC TXI + FSP_SIGNAL_IIC_WUI, ///< IIC WUI + FSP_SIGNAL_IOPORT_EVENT_1 = 0, ///< IOPORT EVENT 1 + FSP_SIGNAL_IOPORT_EVENT_2, ///< IOPORT EVENT 2 + FSP_SIGNAL_IOPORT_EVENT_3, ///< IOPORT EVENT 3 + FSP_SIGNAL_IOPORT_EVENT_4, ///< IOPORT EVENT 4 + FSP_SIGNAL_IOPORT_EVENT_B = 0, ///< IOPORT EVENT B + FSP_SIGNAL_IOPORT_EVENT_C, ///< IOPORT EVENT C + FSP_SIGNAL_IOPORT_EVENT_D, ///< IOPORT EVENT D + FSP_SIGNAL_IOPORT_EVENT_E, ///< IOPORT EVENT E + FSP_SIGNAL_IWDT_UNDERFLOW = 0, ///< IWDT UNDERFLOW + FSP_SIGNAL_JPEG_JDTI = 0, ///< JPEG JDTI + FSP_SIGNAL_JPEG_JEDI, ///< JPEG JEDI + FSP_SIGNAL_KEY_INT = 0, ///< KEY INT + FSP_SIGNAL_PDC_FRAME_END = 0, ///< PDC FRAME END + FSP_SIGNAL_PDC_INT, ///< PDC INT + FSP_SIGNAL_PDC_RECEIVE_DATA_READY, ///< PDC RECEIVE DATA READY + FSP_SIGNAL_POEG_EVENT = 0, ///< POEG EVENT + FSP_SIGNAL_QSPI_INT = 0, ///< QSPI INT + FSP_SIGNAL_RTC_ALARM = 0, ///< RTC ALARM + FSP_SIGNAL_RTC_PERIOD, ///< RTC PERIOD + FSP_SIGNAL_RTC_CARRY, ///< RTC CARRY + FSP_SIGNAL_SCE_INTEGRATE_RDRDY = 0, ///< SCE INTEGRATE RDRDY + FSP_SIGNAL_SCE_INTEGRATE_WRRDY, ///< SCE INTEGRATE WRRDY + FSP_SIGNAL_SCE_LONG_PLG, ///< SCE LONG PLG + FSP_SIGNAL_SCE_PROC_BUSY, ///< SCE PROC BUSY + FSP_SIGNAL_SCE_RDRDY_0, ///< SCE RDRDY 0 + FSP_SIGNAL_SCE_RDRDY_1, ///< SCE RDRDY 1 + FSP_SIGNAL_SCE_ROMOK, ///< SCE ROMOK + FSP_SIGNAL_SCE_TEST_BUSY, ///< SCE TEST BUSY + FSP_SIGNAL_SCE_WRRDY_0, ///< SCE WRRDY 0 + FSP_SIGNAL_SCE_WRRDY_1, ///< SCE WRRDY 1 + FSP_SIGNAL_SCE_WRRDY_4, ///< SCE WRRDY 4 + FSP_SIGNAL_SCI_AM = 0, ///< SCI AM + FSP_SIGNAL_SCI_ERI, ///< SCI ERI + FSP_SIGNAL_SCI_RXI, ///< SCI RXI + FSP_SIGNAL_SCI_RXI_OR_ERI, ///< SCI RXI OR ERI + FSP_SIGNAL_SCI_TEI, ///< SCI TEI + FSP_SIGNAL_SCI_TXI, ///< SCI TXI + FSP_SIGNAL_SDADC_ADI = 0, ///< SDADC ADI + FSP_SIGNAL_SDADC_SCANEND, ///< SDADC SCANEND + FSP_SIGNAL_SDADC_CALIEND, ///< SDADC CALIEND + FSP_SIGNAL_SDHIMMC_ACCS = 0, ///< SDHIMMC ACCS + FSP_SIGNAL_SDHIMMC_CARD, ///< SDHIMMC CARD + FSP_SIGNAL_SDHIMMC_DMA_REQ, ///< SDHIMMC DMA REQ + FSP_SIGNAL_SDHIMMC_SDIO, ///< SDHIMMC SDIO + FSP_SIGNAL_SPI_ERI = 0, ///< SPI ERI + FSP_SIGNAL_SPI_IDLE, ///< SPI IDLE + FSP_SIGNAL_SPI_RXI, ///< SPI RXI + FSP_SIGNAL_SPI_TEI, ///< SPI TEI + FSP_SIGNAL_SPI_TXI, ///< SPI TXI + FSP_SIGNAL_SRC_CONVERSION_END = 0, ///< SRC CONVERSION END + FSP_SIGNAL_SRC_INPUT_FIFO_EMPTY, ///< SRC INPUT FIFO EMPTY + FSP_SIGNAL_SRC_OUTPUT_FIFO_FULL, ///< SRC OUTPUT FIFO FULL + FSP_SIGNAL_SRC_OUTPUT_FIFO_OVERFLOW, ///< SRC OUTPUT FIFO OVERFLOW + FSP_SIGNAL_SRC_OUTPUT_FIFO_UNDERFLOW, ///< SRC OUTPUT FIFO UNDERFLOW + FSP_SIGNAL_SSI_INT = 0, ///< SSI INT + FSP_SIGNAL_SSI_RXI, ///< SSI RXI + FSP_SIGNAL_SSI_TXI, ///< SSI TXI + FSP_SIGNAL_SSI_TXI_RXI, ///< SSI TXI RXI + FSP_SIGNAL_TRNG_RDREQ = 0, ///< TRNG RDREQ + FSP_SIGNAL_USB_FIFO_0 = 0, ///< USB FIFO 0 + FSP_SIGNAL_USB_FIFO_1, ///< USB FIFO 1 + FSP_SIGNAL_USB_INT, ///< USB INT + FSP_SIGNAL_USB_RESUME, ///< USB RESUME + FSP_SIGNAL_USB_USB_INT_RESUME, ///< USB USB INT RESUME + FSP_SIGNAL_WDT_UNDERFLOW = 0, ///< WDT UNDERFLOW + FSP_SIGNAL_ULPT_COMPARE_A = 0, ///< ULPT COMPARE A + FSP_SIGNAL_ULPT_COMPARE_B, ///< ULPT COMPARE B + FSP_SIGNAL_ULPT_INT, ///< ULPT INT +} fsp_signal_t; + +typedef void (* fsp_vector_t)(void); + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_version.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_version.h new file mode 100644 index 0000000000..bc8a16a80d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/fsp_version.h @@ -0,0 +1,90 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef FSP_VERSION_H + #define FSP_VERSION_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ + +/* Includes board and MCU related header files. */ + #include "bsp_api.h" + +/*******************************************************************************************************************//** + * @addtogroup RENESAS_COMMON + * @{ + **********************************************************************************************************************/ + + #ifdef __cplusplus +extern "C" { + #endif + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** FSP pack major version. */ + #define FSP_VERSION_MAJOR (5U) + +/** FSP pack minor version. */ + #define FSP_VERSION_MINOR (1U) + +/** FSP pack patch version. */ + #define FSP_VERSION_PATCH (0U) + +/** FSP pack version build number (currently unused). */ + #define FSP_VERSION_BUILD (0U) + +/** Public FSP version name. */ + #define FSP_VERSION_STRING ("5.1.0") + +/** Unique FSP version ID. */ + #define FSP_VERSION_BUILD_STRING ("Built with Renesas Advanced Flexible Software Package version 5.1.0") + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** FSP Pack version structure */ +typedef union st_fsp_pack_version +{ + /** Version id */ + uint32_t version_id; + + /** + * Code version parameters, little endian order. + */ + struct version_id_b_s + { + uint8_t build; ///< Build version of FSP Pack + uint8_t patch; ///< Patch version of FSP Pack + uint8_t minor; ///< Minor version of FSP Pack + uint8_t major; ///< Major version of FSP Pack + } version_id_b; +} fsp_pack_version_t; + +/** @} */ + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_ioport.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_ioport.h new file mode 100644 index 0000000000..99fa57daab --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_ioport.h @@ -0,0 +1,527 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup IOPORT + * @{ + **********************************************************************************************************************/ + +#ifndef R_IOPORT_H +#define R_IOPORT_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#include "r_ioport_api.h" +#if __has_include("r_ioport_cfg.h") + #include "r_ioport_cfg.h" +#endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Private definition to set enumeration values. */ +#define IOPORT_PRV_PFS_PSEL_OFFSET (24) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** IOPORT private control block. DO NOT MODIFY. Initialization occurs when R_IOPORT_Open() is called. */ +typedef struct st_ioport_instance_ctrl +{ + uint32_t open; + void const * p_context; +} ioport_instance_ctrl_t; + +/* This typedef is here temporarily. See SWFLEX-144 for details. */ +/** Superset list of all possible IO port pins. */ +typedef enum e_ioport_port_pin_t +{ + IOPORT_PORT_00_PIN_00 = 0x0000, ///< IO port 0 pin 0 + IOPORT_PORT_00_PIN_01 = 0x0001, ///< IO port 0 pin 1 + IOPORT_PORT_00_PIN_02 = 0x0002, ///< IO port 0 pin 2 + IOPORT_PORT_00_PIN_03 = 0x0003, ///< IO port 0 pin 3 + IOPORT_PORT_00_PIN_04 = 0x0004, ///< IO port 0 pin 4 + IOPORT_PORT_00_PIN_05 = 0x0005, ///< IO port 0 pin 5 + IOPORT_PORT_00_PIN_06 = 0x0006, ///< IO port 0 pin 6 + IOPORT_PORT_00_PIN_07 = 0x0007, ///< IO port 0 pin 7 + IOPORT_PORT_00_PIN_08 = 0x0008, ///< IO port 0 pin 8 + IOPORT_PORT_00_PIN_09 = 0x0009, ///< IO port 0 pin 9 + IOPORT_PORT_00_PIN_10 = 0x000A, ///< IO port 0 pin 10 + IOPORT_PORT_00_PIN_11 = 0x000B, ///< IO port 0 pin 11 + IOPORT_PORT_00_PIN_12 = 0x000C, ///< IO port 0 pin 12 + IOPORT_PORT_00_PIN_13 = 0x000D, ///< IO port 0 pin 13 + IOPORT_PORT_00_PIN_14 = 0x000E, ///< IO port 0 pin 14 + IOPORT_PORT_00_PIN_15 = 0x000F, ///< IO port 0 pin 15 + + IOPORT_PORT_01_PIN_00 = 0x0100, ///< IO port 1 pin 0 + IOPORT_PORT_01_PIN_01 = 0x0101, ///< IO port 1 pin 1 + IOPORT_PORT_01_PIN_02 = 0x0102, ///< IO port 1 pin 2 + IOPORT_PORT_01_PIN_03 = 0x0103, ///< IO port 1 pin 3 + IOPORT_PORT_01_PIN_04 = 0x0104, ///< IO port 1 pin 4 + IOPORT_PORT_01_PIN_05 = 0x0105, ///< IO port 1 pin 5 + IOPORT_PORT_01_PIN_06 = 0x0106, ///< IO port 1 pin 6 + IOPORT_PORT_01_PIN_07 = 0x0107, ///< IO port 1 pin 7 + IOPORT_PORT_01_PIN_08 = 0x0108, ///< IO port 1 pin 8 + IOPORT_PORT_01_PIN_09 = 0x0109, ///< IO port 1 pin 9 + IOPORT_PORT_01_PIN_10 = 0x010A, ///< IO port 1 pin 10 + IOPORT_PORT_01_PIN_11 = 0x010B, ///< IO port 1 pin 11 + IOPORT_PORT_01_PIN_12 = 0x010C, ///< IO port 1 pin 12 + IOPORT_PORT_01_PIN_13 = 0x010D, ///< IO port 1 pin 13 + IOPORT_PORT_01_PIN_14 = 0x010E, ///< IO port 1 pin 14 + IOPORT_PORT_01_PIN_15 = 0x010F, ///< IO port 1 pin 15 + + IOPORT_PORT_02_PIN_00 = 0x0200, ///< IO port 2 pin 0 + IOPORT_PORT_02_PIN_01 = 0x0201, ///< IO port 2 pin 1 + IOPORT_PORT_02_PIN_02 = 0x0202, ///< IO port 2 pin 2 + IOPORT_PORT_02_PIN_03 = 0x0203, ///< IO port 2 pin 3 + IOPORT_PORT_02_PIN_04 = 0x0204, ///< IO port 2 pin 4 + IOPORT_PORT_02_PIN_05 = 0x0205, ///< IO port 2 pin 5 + IOPORT_PORT_02_PIN_06 = 0x0206, ///< IO port 2 pin 6 + IOPORT_PORT_02_PIN_07 = 0x0207, ///< IO port 2 pin 7 + IOPORT_PORT_02_PIN_08 = 0x0208, ///< IO port 2 pin 8 + IOPORT_PORT_02_PIN_09 = 0x0209, ///< IO port 2 pin 9 + IOPORT_PORT_02_PIN_10 = 0x020A, ///< IO port 2 pin 10 + IOPORT_PORT_02_PIN_11 = 0x020B, ///< IO port 2 pin 11 + IOPORT_PORT_02_PIN_12 = 0x020C, ///< IO port 2 pin 12 + IOPORT_PORT_02_PIN_13 = 0x020D, ///< IO port 2 pin 13 + IOPORT_PORT_02_PIN_14 = 0x020E, ///< IO port 2 pin 14 + IOPORT_PORT_02_PIN_15 = 0x020F, ///< IO port 2 pin 15 + + IOPORT_PORT_03_PIN_00 = 0x0300, ///< IO port 3 pin 0 + IOPORT_PORT_03_PIN_01 = 0x0301, ///< IO port 3 pin 1 + IOPORT_PORT_03_PIN_02 = 0x0302, ///< IO port 3 pin 2 + IOPORT_PORT_03_PIN_03 = 0x0303, ///< IO port 3 pin 3 + IOPORT_PORT_03_PIN_04 = 0x0304, ///< IO port 3 pin 4 + IOPORT_PORT_03_PIN_05 = 0x0305, ///< IO port 3 pin 5 + IOPORT_PORT_03_PIN_06 = 0x0306, ///< IO port 3 pin 6 + IOPORT_PORT_03_PIN_07 = 0x0307, ///< IO port 3 pin 7 + IOPORT_PORT_03_PIN_08 = 0x0308, ///< IO port 3 pin 8 + IOPORT_PORT_03_PIN_09 = 0x0309, ///< IO port 3 pin 9 + IOPORT_PORT_03_PIN_10 = 0x030A, ///< IO port 3 pin 10 + IOPORT_PORT_03_PIN_11 = 0x030B, ///< IO port 3 pin 11 + IOPORT_PORT_03_PIN_12 = 0x030C, ///< IO port 3 pin 12 + IOPORT_PORT_03_PIN_13 = 0x030D, ///< IO port 3 pin 13 + IOPORT_PORT_03_PIN_14 = 0x030E, ///< IO port 3 pin 14 + IOPORT_PORT_03_PIN_15 = 0x030F, ///< IO port 3 pin 15 + + IOPORT_PORT_04_PIN_00 = 0x0400, ///< IO port 4 pin 0 + IOPORT_PORT_04_PIN_01 = 0x0401, ///< IO port 4 pin 1 + IOPORT_PORT_04_PIN_02 = 0x0402, ///< IO port 4 pin 2 + IOPORT_PORT_04_PIN_03 = 0x0403, ///< IO port 4 pin 3 + IOPORT_PORT_04_PIN_04 = 0x0404, ///< IO port 4 pin 4 + IOPORT_PORT_04_PIN_05 = 0x0405, ///< IO port 4 pin 5 + IOPORT_PORT_04_PIN_06 = 0x0406, ///< IO port 4 pin 6 + IOPORT_PORT_04_PIN_07 = 0x0407, ///< IO port 4 pin 7 + IOPORT_PORT_04_PIN_08 = 0x0408, ///< IO port 4 pin 8 + IOPORT_PORT_04_PIN_09 = 0x0409, ///< IO port 4 pin 9 + IOPORT_PORT_04_PIN_10 = 0x040A, ///< IO port 4 pin 10 + IOPORT_PORT_04_PIN_11 = 0x040B, ///< IO port 4 pin 11 + IOPORT_PORT_04_PIN_12 = 0x040C, ///< IO port 4 pin 12 + IOPORT_PORT_04_PIN_13 = 0x040D, ///< IO port 4 pin 13 + IOPORT_PORT_04_PIN_14 = 0x040E, ///< IO port 4 pin 14 + IOPORT_PORT_04_PIN_15 = 0x040F, ///< IO port 4 pin 15 + + IOPORT_PORT_05_PIN_00 = 0x0500, ///< IO port 5 pin 0 + IOPORT_PORT_05_PIN_01 = 0x0501, ///< IO port 5 pin 1 + IOPORT_PORT_05_PIN_02 = 0x0502, ///< IO port 5 pin 2 + IOPORT_PORT_05_PIN_03 = 0x0503, ///< IO port 5 pin 3 + IOPORT_PORT_05_PIN_04 = 0x0504, ///< IO port 5 pin 4 + IOPORT_PORT_05_PIN_05 = 0x0505, ///< IO port 5 pin 5 + IOPORT_PORT_05_PIN_06 = 0x0506, ///< IO port 5 pin 6 + IOPORT_PORT_05_PIN_07 = 0x0507, ///< IO port 5 pin 7 + IOPORT_PORT_05_PIN_08 = 0x0508, ///< IO port 5 pin 8 + IOPORT_PORT_05_PIN_09 = 0x0509, ///< IO port 5 pin 9 + IOPORT_PORT_05_PIN_10 = 0x050A, ///< IO port 5 pin 10 + IOPORT_PORT_05_PIN_11 = 0x050B, ///< IO port 5 pin 11 + IOPORT_PORT_05_PIN_12 = 0x050C, ///< IO port 5 pin 12 + IOPORT_PORT_05_PIN_13 = 0x050D, ///< IO port 5 pin 13 + IOPORT_PORT_05_PIN_14 = 0x050E, ///< IO port 5 pin 14 + IOPORT_PORT_05_PIN_15 = 0x050F, ///< IO port 5 pin 15 + + IOPORT_PORT_06_PIN_00 = 0x0600, ///< IO port 6 pin 0 + IOPORT_PORT_06_PIN_01 = 0x0601, ///< IO port 6 pin 1 + IOPORT_PORT_06_PIN_02 = 0x0602, ///< IO port 6 pin 2 + IOPORT_PORT_06_PIN_03 = 0x0603, ///< IO port 6 pin 3 + IOPORT_PORT_06_PIN_04 = 0x0604, ///< IO port 6 pin 4 + IOPORT_PORT_06_PIN_05 = 0x0605, ///< IO port 6 pin 5 + IOPORT_PORT_06_PIN_06 = 0x0606, ///< IO port 6 pin 6 + IOPORT_PORT_06_PIN_07 = 0x0607, ///< IO port 6 pin 7 + IOPORT_PORT_06_PIN_08 = 0x0608, ///< IO port 6 pin 8 + IOPORT_PORT_06_PIN_09 = 0x0609, ///< IO port 6 pin 9 + IOPORT_PORT_06_PIN_10 = 0x060A, ///< IO port 6 pin 10 + IOPORT_PORT_06_PIN_11 = 0x060B, ///< IO port 6 pin 11 + IOPORT_PORT_06_PIN_12 = 0x060C, ///< IO port 6 pin 12 + IOPORT_PORT_06_PIN_13 = 0x060D, ///< IO port 6 pin 13 + IOPORT_PORT_06_PIN_14 = 0x060E, ///< IO port 6 pin 14 + IOPORT_PORT_06_PIN_15 = 0x060F, ///< IO port 6 pin 15 + + IOPORT_PORT_07_PIN_00 = 0x0700, ///< IO port 7 pin 0 + IOPORT_PORT_07_PIN_01 = 0x0701, ///< IO port 7 pin 1 + IOPORT_PORT_07_PIN_02 = 0x0702, ///< IO port 7 pin 2 + IOPORT_PORT_07_PIN_03 = 0x0703, ///< IO port 7 pin 3 + IOPORT_PORT_07_PIN_04 = 0x0704, ///< IO port 7 pin 4 + IOPORT_PORT_07_PIN_05 = 0x0705, ///< IO port 7 pin 5 + IOPORT_PORT_07_PIN_06 = 0x0706, ///< IO port 7 pin 6 + IOPORT_PORT_07_PIN_07 = 0x0707, ///< IO port 7 pin 7 + IOPORT_PORT_07_PIN_08 = 0x0708, ///< IO port 7 pin 8 + IOPORT_PORT_07_PIN_09 = 0x0709, ///< IO port 7 pin 9 + IOPORT_PORT_07_PIN_10 = 0x070A, ///< IO port 7 pin 10 + IOPORT_PORT_07_PIN_11 = 0x070B, ///< IO port 7 pin 11 + IOPORT_PORT_07_PIN_12 = 0x070C, ///< IO port 7 pin 12 + IOPORT_PORT_07_PIN_13 = 0x070D, ///< IO port 7 pin 13 + IOPORT_PORT_07_PIN_14 = 0x070E, ///< IO port 7 pin 14 + IOPORT_PORT_07_PIN_15 = 0x070F, ///< IO port 7 pin 15 + + IOPORT_PORT_08_PIN_00 = 0x0800, ///< IO port 8 pin 0 + IOPORT_PORT_08_PIN_01 = 0x0801, ///< IO port 8 pin 1 + IOPORT_PORT_08_PIN_02 = 0x0802, ///< IO port 8 pin 2 + IOPORT_PORT_08_PIN_03 = 0x0803, ///< IO port 8 pin 3 + IOPORT_PORT_08_PIN_04 = 0x0804, ///< IO port 8 pin 4 + IOPORT_PORT_08_PIN_05 = 0x0805, ///< IO port 8 pin 5 + IOPORT_PORT_08_PIN_06 = 0x0806, ///< IO port 8 pin 6 + IOPORT_PORT_08_PIN_07 = 0x0807, ///< IO port 8 pin 7 + IOPORT_PORT_08_PIN_08 = 0x0808, ///< IO port 8 pin 8 + IOPORT_PORT_08_PIN_09 = 0x0809, ///< IO port 8 pin 9 + IOPORT_PORT_08_PIN_10 = 0x080A, ///< IO port 8 pin 10 + IOPORT_PORT_08_PIN_11 = 0x080B, ///< IO port 8 pin 11 + IOPORT_PORT_08_PIN_12 = 0x080C, ///< IO port 8 pin 12 + IOPORT_PORT_08_PIN_13 = 0x080D, ///< IO port 8 pin 13 + IOPORT_PORT_08_PIN_14 = 0x080E, ///< IO port 8 pin 14 + IOPORT_PORT_08_PIN_15 = 0x080F, ///< IO port 8 pin 15 + + IOPORT_PORT_09_PIN_00 = 0x0900, ///< IO port 9 pin 0 + IOPORT_PORT_09_PIN_01 = 0x0901, ///< IO port 9 pin 1 + IOPORT_PORT_09_PIN_02 = 0x0902, ///< IO port 9 pin 2 + IOPORT_PORT_09_PIN_03 = 0x0903, ///< IO port 9 pin 3 + IOPORT_PORT_09_PIN_04 = 0x0904, ///< IO port 9 pin 4 + IOPORT_PORT_09_PIN_05 = 0x0905, ///< IO port 9 pin 5 + IOPORT_PORT_09_PIN_06 = 0x0906, ///< IO port 9 pin 6 + IOPORT_PORT_09_PIN_07 = 0x0907, ///< IO port 9 pin 7 + IOPORT_PORT_09_PIN_08 = 0x0908, ///< IO port 9 pin 8 + IOPORT_PORT_09_PIN_09 = 0x0909, ///< IO port 9 pin 9 + IOPORT_PORT_09_PIN_10 = 0x090A, ///< IO port 9 pin 10 + IOPORT_PORT_09_PIN_11 = 0x090B, ///< IO port 9 pin 11 + IOPORT_PORT_09_PIN_12 = 0x090C, ///< IO port 9 pin 12 + IOPORT_PORT_09_PIN_13 = 0x090D, ///< IO port 9 pin 13 + IOPORT_PORT_09_PIN_14 = 0x090E, ///< IO port 9 pin 14 + IOPORT_PORT_09_PIN_15 = 0x090F, ///< IO port 9 pin 15 + + IOPORT_PORT_10_PIN_00 = 0x0A00, ///< IO port 10 pin 0 + IOPORT_PORT_10_PIN_01 = 0x0A01, ///< IO port 10 pin 1 + IOPORT_PORT_10_PIN_02 = 0x0A02, ///< IO port 10 pin 2 + IOPORT_PORT_10_PIN_03 = 0x0A03, ///< IO port 10 pin 3 + IOPORT_PORT_10_PIN_04 = 0x0A04, ///< IO port 10 pin 4 + IOPORT_PORT_10_PIN_05 = 0x0A05, ///< IO port 10 pin 5 + IOPORT_PORT_10_PIN_06 = 0x0A06, ///< IO port 10 pin 6 + IOPORT_PORT_10_PIN_07 = 0x0A07, ///< IO port 10 pin 7 + IOPORT_PORT_10_PIN_08 = 0x0A08, ///< IO port 10 pin 8 + IOPORT_PORT_10_PIN_09 = 0x0A09, ///< IO port 10 pin 9 + IOPORT_PORT_10_PIN_10 = 0x0A0A, ///< IO port 10 pin 10 + IOPORT_PORT_10_PIN_11 = 0x0A0B, ///< IO port 10 pin 11 + IOPORT_PORT_10_PIN_12 = 0x0A0C, ///< IO port 10 pin 12 + IOPORT_PORT_10_PIN_13 = 0x0A0D, ///< IO port 10 pin 13 + IOPORT_PORT_10_PIN_14 = 0x0A0E, ///< IO port 10 pin 14 + IOPORT_PORT_10_PIN_15 = 0x0A0F, ///< IO port 10 pin 15 + + IOPORT_PORT_11_PIN_00 = 0x0B00, ///< IO port 11 pin 0 + IOPORT_PORT_11_PIN_01 = 0x0B01, ///< IO port 11 pin 1 + IOPORT_PORT_11_PIN_02 = 0x0B02, ///< IO port 11 pin 2 + IOPORT_PORT_11_PIN_03 = 0x0B03, ///< IO port 11 pin 3 + IOPORT_PORT_11_PIN_04 = 0x0B04, ///< IO port 11 pin 4 + IOPORT_PORT_11_PIN_05 = 0x0B05, ///< IO port 11 pin 5 + IOPORT_PORT_11_PIN_06 = 0x0B06, ///< IO port 11 pin 6 + IOPORT_PORT_11_PIN_07 = 0x0B07, ///< IO port 11 pin 7 + IOPORT_PORT_11_PIN_08 = 0x0B08, ///< IO port 11 pin 8 + IOPORT_PORT_11_PIN_09 = 0x0B09, ///< IO port 11 pin 9 + IOPORT_PORT_11_PIN_10 = 0x0B0A, ///< IO port 11 pin 10 + IOPORT_PORT_11_PIN_11 = 0x0B0B, ///< IO port 11 pin 11 + IOPORT_PORT_11_PIN_12 = 0x0B0C, ///< IO port 11 pin 12 + IOPORT_PORT_11_PIN_13 = 0x0B0D, ///< IO port 11 pin 13 + IOPORT_PORT_11_PIN_14 = 0x0B0E, ///< IO port 11 pin 14 + IOPORT_PORT_11_PIN_15 = 0x0B0F, ///< IO port 11 pin 15 + + IOPORT_PORT_12_PIN_00 = 0x0C00, ///< IO port 12 pin 0 + IOPORT_PORT_12_PIN_01 = 0x0C01, ///< IO port 12 pin 1 + IOPORT_PORT_12_PIN_02 = 0x0C02, ///< IO port 12 pin 2 + IOPORT_PORT_12_PIN_03 = 0x0C03, ///< IO port 12 pin 3 + IOPORT_PORT_12_PIN_04 = 0x0C04, ///< IO port 12 pin 4 + IOPORT_PORT_12_PIN_05 = 0x0C05, ///< IO port 12 pin 5 + IOPORT_PORT_12_PIN_06 = 0x0C06, ///< IO port 12 pin 6 + IOPORT_PORT_12_PIN_07 = 0x0C07, ///< IO port 12 pin 7 + IOPORT_PORT_12_PIN_08 = 0x0C08, ///< IO port 12 pin 8 + IOPORT_PORT_12_PIN_09 = 0x0C09, ///< IO port 12 pin 9 + IOPORT_PORT_12_PIN_10 = 0x0C0A, ///< IO port 12 pin 10 + IOPORT_PORT_12_PIN_11 = 0x0C0B, ///< IO port 12 pin 11 + IOPORT_PORT_12_PIN_12 = 0x0C0C, ///< IO port 12 pin 12 + IOPORT_PORT_12_PIN_13 = 0x0C0D, ///< IO port 12 pin 13 + IOPORT_PORT_12_PIN_14 = 0x0C0E, ///< IO port 12 pin 14 + IOPORT_PORT_12_PIN_15 = 0x0C0F, ///< IO port 12 pin 15 + + IOPORT_PORT_13_PIN_00 = 0x0D00, ///< IO port 13 pin 0 + IOPORT_PORT_13_PIN_01 = 0x0D01, ///< IO port 13 pin 1 + IOPORT_PORT_13_PIN_02 = 0x0D02, ///< IO port 13 pin 2 + IOPORT_PORT_13_PIN_03 = 0x0D03, ///< IO port 13 pin 3 + IOPORT_PORT_13_PIN_04 = 0x0D04, ///< IO port 13 pin 4 + IOPORT_PORT_13_PIN_05 = 0x0D05, ///< IO port 13 pin 5 + IOPORT_PORT_13_PIN_06 = 0x0D06, ///< IO port 13 pin 6 + IOPORT_PORT_13_PIN_07 = 0x0D07, ///< IO port 13 pin 7 + IOPORT_PORT_13_PIN_08 = 0x0D08, ///< IO port 13 pin 8 + IOPORT_PORT_13_PIN_09 = 0x0D09, ///< IO port 13 pin 9 + IOPORT_PORT_13_PIN_10 = 0x0D0A, ///< IO port 13 pin 10 + IOPORT_PORT_13_PIN_11 = 0x0D0B, ///< IO port 13 pin 11 + IOPORT_PORT_13_PIN_12 = 0x0D0C, ///< IO port 13 pin 12 + IOPORT_PORT_13_PIN_13 = 0x0D0D, ///< IO port 13 pin 13 + IOPORT_PORT_13_PIN_14 = 0x0D0E, ///< IO port 13 pin 14 + IOPORT_PORT_13_PIN_15 = 0x0D0F, ///< IO port 13 pin 15 + + IOPORT_PORT_14_PIN_00 = 0x0E00, ///< IO port 14 pin 0 + IOPORT_PORT_14_PIN_01 = 0x0E01, ///< IO port 14 pin 1 + IOPORT_PORT_14_PIN_02 = 0x0E02, ///< IO port 14 pin 2 + IOPORT_PORT_14_PIN_03 = 0x0E03, ///< IO port 14 pin 3 + IOPORT_PORT_14_PIN_04 = 0x0E04, ///< IO port 14 pin 4 + IOPORT_PORT_14_PIN_05 = 0x0E05, ///< IO port 14 pin 5 + IOPORT_PORT_14_PIN_06 = 0x0E06, ///< IO port 14 pin 6 + IOPORT_PORT_14_PIN_07 = 0x0E07, ///< IO port 14 pin 7 + IOPORT_PORT_14_PIN_08 = 0x0E08, ///< IO port 14 pin 8 + IOPORT_PORT_14_PIN_09 = 0x0E09, ///< IO port 14 pin 9 + IOPORT_PORT_14_PIN_10 = 0x0E0A, ///< IO port 14 pin 10 + IOPORT_PORT_14_PIN_11 = 0x0E0B, ///< IO port 14 pin 11 + IOPORT_PORT_14_PIN_12 = 0x0E0C, ///< IO port 14 pin 12 + IOPORT_PORT_14_PIN_13 = 0x0E0D, ///< IO port 14 pin 13 + IOPORT_PORT_14_PIN_14 = 0x0E0E, ///< IO port 14 pin 14 + IOPORT_PORT_14_PIN_15 = 0x0E0F, ///< IO port 14 pin 15 +} ioport_port_pin_t; + +/** Superset of all peripheral functions. */ +typedef enum e_ioport_peripheral +{ + /** Pin will functions as an IO pin */ + IOPORT_PERIPHERAL_IO = 0x00, + + /** Pin will function as a DEBUG pin */ + IOPORT_PERIPHERAL_DEBUG = (0x00UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an AGT peripheral pin */ + IOPORT_PERIPHERAL_AGT = (0x01UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an AGT peripheral pin */ + IOPORT_PERIPHERAL_AGTW = (0x01UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an AGT peripheral pin */ + IOPORT_PERIPHERAL_AGT1 = (0x18UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT0 = (0x02UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT1 = (0x03UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI peripheral pin */ + IOPORT_PERIPHERAL_SCI0_2_4_6_8 = (0x04UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI peripheral pin */ + IOPORT_PERIPHERAL_SCI1_3_5_7_9 = (0x05UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a SPI peripheral pin */ + IOPORT_PERIPHERAL_SPI = (0x06UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a IIC peripheral pin */ + IOPORT_PERIPHERAL_IIC = (0x07UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a KEY peripheral pin */ + IOPORT_PERIPHERAL_KEY = (0x08UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a clock/comparator/RTC peripheral pin */ + IOPORT_PERIPHERAL_CLKOUT_COMP_RTC = (0x09UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CAC/ADC peripheral pin */ + IOPORT_PERIPHERAL_CAC_AD = (0x0AUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a BUS peripheral pin */ + IOPORT_PERIPHERAL_BUS = (0x0BUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CTSU peripheral pin */ + IOPORT_PERIPHERAL_CTSU = (0x0CUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CMPHS peripheral pin */ + IOPORT_PERIPHERAL_ACMPHS = (0x0CUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a segment LCD peripheral pin */ + IOPORT_PERIPHERAL_LCDC = (0x0DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + +#if BSP_FEATURE_SCI_UART_DE_IS_INVERTED + + /** Pin will function as an SCI peripheral DEn pin */ + IOPORT_PERIPHERAL_DE_SCI1_3_5_7_9 = (0x0DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI DEn peripheral pin */ + IOPORT_PERIPHERAL_DE_SCI0_2_4_6_8 = (0x0EUL << IOPORT_PRV_PFS_PSEL_OFFSET), +#else + + /** Pin will function as an SCI peripheral DEn pin */ + IOPORT_PERIPHERAL_DE_SCI0_2_4_6_8 = (0x0DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SCI DEn peripheral pin */ + IOPORT_PERIPHERAL_DE_SCI1_3_5_7_9 = (0x0EUL << IOPORT_PRV_PFS_PSEL_OFFSET), +#endif + + /** Pin will function as a DALI peripheral pin */ + IOPORT_PERIPHERAL_DALI = (0x0EUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CEU peripheral pin */ + IOPORT_PERIPHERAL_CEU = (0x0FUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CAN peripheral pin */ + IOPORT_PERIPHERAL_CAN = (0x10UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a QSPI peripheral pin */ + IOPORT_PERIPHERAL_QSPI = (0x11UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SSI peripheral pin */ + IOPORT_PERIPHERAL_SSI = (0x12UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a USB full speed peripheral pin */ + IOPORT_PERIPHERAL_USB_FS = (0x13UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a USB high speed peripheral pin */ + IOPORT_PERIPHERAL_USB_HS = (0x14UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT2 = (0x14UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an SD/MMC peripheral pin */ + IOPORT_PERIPHERAL_SDHI_MMC = (0x15UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT3 = (0x15UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an Ethernet MMI peripheral pin */ + IOPORT_PERIPHERAL_ETHER_MII = (0x16UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a GPT peripheral pin */ + IOPORT_PERIPHERAL_GPT4 = (0x16UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as an Ethernet RMMI peripheral pin */ + IOPORT_PERIPHERAL_ETHER_RMII = (0x17UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a PDC peripheral pin */ + IOPORT_PERIPHERAL_PDC = (0x18UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a graphics LCD peripheral pin */ + IOPORT_PERIPHERAL_LCD_GRAPHICS = (0x19UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CAC peripheral pin */ + IOPORT_PERIPHERAL_CAC = (0x19UL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a debug trace peripheral pin */ + IOPORT_PERIPHERAL_TRACE = (0x1AUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a OSPI peripheral pin */ + IOPORT_PERIPHERAL_OSPI = (0x1CUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a CEC peripheral pin */ + IOPORT_PERIPHERAL_CEC = (0x1DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a PGAOUT peripheral pin */ + IOPORT_PERIPHERAL_PGAOUT0 = (0x1DUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a PGAOUT peripheral pin */ + IOPORT_PERIPHERAL_PGAOUT1 = (0x1EUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a ULPT peripheral pin */ + IOPORT_PERIPHERAL_ULPT = (0x1EUL << IOPORT_PRV_PFS_PSEL_OFFSET), + + /** Pin will function as a MIPI DSI peripheral pin */ + IOPORT_PERIPHERAL_MIPI = (0x1FUL << IOPORT_PRV_PFS_PSEL_OFFSET), +} ioport_peripheral_t; + +/** Options to configure pin functions */ +typedef enum e_ioport_cfg_options +{ + IOPORT_CFG_PORT_DIRECTION_INPUT = 0x00000000, ///< Sets the pin direction to input (default) + IOPORT_CFG_PORT_DIRECTION_OUTPUT = 0x00000004, ///< Sets the pin direction to output + IOPORT_CFG_PORT_OUTPUT_LOW = 0x00000000, ///< Sets the pin level to low + IOPORT_CFG_PORT_OUTPUT_HIGH = 0x00000001, ///< Sets the pin level to high + IOPORT_CFG_PULLUP_ENABLE = 0x00000010, ///< Enables the pin's internal pull-up + IOPORT_CFG_PIM_TTL = 0x00000020, ///< Enables the pin's input mode + IOPORT_CFG_NMOS_ENABLE = 0x00000040, ///< Enables the pin's NMOS open-drain output + IOPORT_CFG_PMOS_ENABLE = 0x00000080, ///< Enables the pin's PMOS open-drain ouput + IOPORT_CFG_DRIVE_MID = 0x00000400, ///< Sets pin drive output to medium + IOPORT_CFG_DRIVE_HS_HIGH = 0x00000800, ///< Sets pin drive output to high along with supporting high speed + IOPORT_CFG_DRIVE_MID_IIC = 0x00000C00, ///< Sets pin to drive output needed for IIC on a 20mA port + IOPORT_CFG_DRIVE_HIGH = 0x00000C00, ///< Sets pin drive output to high + IOPORT_CFG_EVENT_RISING_EDGE = 0x00001000, ///< Sets pin event trigger to rising edge + IOPORT_CFG_EVENT_FALLING_EDGE = 0x00002000, ///< Sets pin event trigger to falling edge + IOPORT_CFG_EVENT_BOTH_EDGES = 0x00003000, ///< Sets pin event trigger to both edges + IOPORT_CFG_IRQ_ENABLE = 0x00004000, ///< Sets pin as an IRQ pin + IOPORT_CFG_ANALOG_ENABLE = 0x00008000, ///< Enables pin to operate as an analog pin + IOPORT_CFG_PERIPHERAL_PIN = 0x00010000 ///< Enables pin to operate as a peripheral pin +} ioport_cfg_options_t; + +/********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/** @cond INC_HEADER_DEFS_SEC */ +/** Filled in Interface API structure for this Instance. */ +extern const ioport_api_t g_ioport_on_ioport; + +/** @endcond */ + +/*********************************************************************************************************************** + * Public APIs + **********************************************************************************************************************/ + +fsp_err_t R_IOPORT_Open(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); +fsp_err_t R_IOPORT_Close(ioport_ctrl_t * const p_ctrl); +fsp_err_t R_IOPORT_PinsCfg(ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg); +fsp_err_t R_IOPORT_PinCfg(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg); +fsp_err_t R_IOPORT_PinEventInputRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_event); +fsp_err_t R_IOPORT_PinEventOutputWrite(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value); +fsp_err_t R_IOPORT_PinRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_value); +fsp_err_t R_IOPORT_PinWrite(ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level); +fsp_err_t R_IOPORT_PortDirectionSet(ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t direction_values, + ioport_size_t mask); +fsp_err_t R_IOPORT_PortEventInputRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * event_data); +fsp_err_t R_IOPORT_PortEventOutputWrite(ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t event_data, + ioport_size_t mask_value); +fsp_err_t R_IOPORT_PortRead(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_port_value); +fsp_err_t R_IOPORT_PortWrite(ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask); + +/*******************************************************************************************************************//** + * @} (end defgroup IOPORT) + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif // R_IOPORT_H diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_sci_b_uart.h b/bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_sci_b_uart.h new file mode 100644 index 0000000000..11529a4314 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/inc/instances/r_sci_b_uart.h @@ -0,0 +1,218 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef R_SCI_B_UART_H +#define R_SCI_B_UART_H + +/*******************************************************************************************************************//** + * @addtogroup SCI_B_UART + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_uart_api.h" +#include "r_sci_b_uart_cfg.h" + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Enumeration for SCI clock source */ +typedef enum e_sci_b_clk_src +{ + SCI_B_UART_CLOCK_INT, ///< Use internal clock for baud generation + SCI_B_UART_CLOCK_INT_WITH_BAUDRATE_OUTPUT, ///< Use internal clock for baud generation and output on SCK + SCI_B_UART_CLOCK_EXT8X, ///< Use external clock 8x baud rate + SCI_B_UART_CLOCK_EXT16X ///< Use external clock 16x baud rate +} sci_b_clk_src_t; + +/** UART flow control mode definition */ +typedef enum e_sci_b_uart_flow_control +{ + SCI_B_UART_FLOW_CONTROL_RTS = 0U, ///< Use CTSn_RTSn pin for RTS + SCI_B_UART_FLOW_CONTROL_CTS = 1U, ///< Use CTSn_RTSn pin for CTS + SCI_B_UART_FLOW_CONTROL_HARDWARE_CTSRTS = 3U, ///< Use CTSn pin for CTS, CTSn_RTSn pin for RTS + SCI_B_UART_FLOW_CONTROL_CTSRTS = 5U, ///< Use SCI pin for CTS, external pin for RTS +} sci_b_uart_flow_control_t; + +/** UART instance control block. */ +typedef struct st_sci_b_uart_instance_ctrl +{ + /* Parameters to control UART peripheral device */ + uint8_t fifo_depth; // FIFO depth of the UART channel + uint8_t rx_transfer_in_progress; // Set to 1 if a receive transfer is in progress, 0 otherwise + uint8_t data_bytes : 2; // 1 byte for 7 or 8 bit data, 2 bytes for 9 bit data + uint8_t bitrate_modulation : 1; // 1 if bit rate modulation is enabled, 0 otherwise + uint32_t open; // Used to determine if the channel is configured + + bsp_io_port_pin_t flow_pin; + + /* Source buffer pointer used to fill hardware FIFO from transmit ISR. */ + uint8_t const * p_tx_src; + + /* Size of source buffer pointer used to fill hardware FIFO from transmit ISR. */ + uint32_t tx_src_bytes; + + /* Destination buffer pointer used for receiving data. */ + uint8_t const * p_rx_dest; + + /* Size of destination buffer pointer used for receiving data. */ + uint32_t rx_dest_bytes; + + /* Pointer to the configuration block. */ + uart_cfg_t const * p_cfg; + + /* Base register for this channel */ + R_SCI_B0_Type * p_reg; + + void (* p_callback)(uart_callback_args_t *); // Pointer to callback that is called when a uart_event_t occurs. + uart_callback_args_t * p_callback_memory; // Pointer to non-secure memory that can be used to pass arguments to a callback in non-secure memory. + + /* Pointer to context to be passed into callback function */ + void const * p_context; +} sci_b_uart_instance_ctrl_t; + +/** Receive FIFO trigger configuration. */ +typedef enum e_sci_b_uart_rx_fifo_trigger +{ + SCI_B_UART_RX_FIFO_TRIGGER_1 = 0x1, ///< Callback after each byte is received without buffering + SCI_B_UART_RX_FIFO_TRIGGER_MAX = 0xF, ///< Callback when FIFO is full or after 15 bit times with no data (fewer interrupts) +} sci_b_uart_rx_fifo_trigger_t; + +/** Asynchronous Start Bit Edge Detection configuration. */ +typedef enum e_sci_b_uart_start_bit_detect +{ + SCI_B_UART_START_BIT_LOW_LEVEL = 0x0, ///< Detect low level on RXDn pin as start bit + SCI_B_UART_START_BIT_FALLING_EDGE = 0x1, ///< Detect falling level on RXDn pin as start bit +} sci_b_uart_start_bit_detect_t; + +/** Noise cancellation configuration. */ +typedef enum e_sci_b_uart_noise_cancellation +{ + SCI_B_UART_NOISE_CANCELLATION_DISABLE = 0x0, ///< Disable noise cancellation + SCI_B_UART_NOISE_CANCELLATION_ENABLE = 0x1, ///< Enable noise cancellation +} sci_b_uart_noise_cancellation_t; + +/** RS-485 Enable/Disable. */ +typedef enum e_sci_b_uart_rs485_enable +{ + SCI_B_UART_RS485_DISABLE = 0, ///< RS-485 disabled. + SCI_B_UART_RS485_ENABLE = 1, ///< RS-485 enabled. +} sci_b_uart_rs485_enable_t; + +/** The polarity of the RS-485 DE signal. */ +typedef enum e_sci_b_uart_rs485_de_polarity +{ + SCI_B_UART_RS485_DE_POLARITY_HIGH = 0, ///< The DE signal is high when a write transfer is in progress. + SCI_B_UART_RS485_DE_POLARITY_LOW = 1, ///< The DE signal is low when a write transfer is in progress. +} sci_b_uart_rs485_de_polarity_t; + +/** Register settings to acheive a desired baud rate and modulation duty. */ +typedef struct st_sci_b_baud_setting_t +{ + union + { + uint32_t baudrate_bits; + + struct + { + uint32_t : 3; + uint32_t : 1; + uint32_t bgdm : 1; ///< Baud Rate Generator Double-Speed Mode Select + uint32_t abcs : 1; ///< Asynchronous Mode Base Clock Select + uint32_t abcse : 1; ///< Asynchronous Mode Extended Base Clock Select 1 + uint32_t : 1; + uint32_t brr : 8; ///< Bit Rate Register setting + uint32_t brme : 1; ///< Bit Rate Modulation Enable + uint32_t : 3; + uint32_t cks : 2; ///< CKS value to get divisor (CKS = N) + uint32_t : 2; + uint32_t mddr : 8; ///< Modulation Duty Register setting + } baudrate_bits_b; + }; +} sci_b_baud_setting_t; + +/** Configuration settings for controlling the DE signal for RS-485. */ +typedef struct st_sci_b_uart_rs485_setting +{ + sci_b_uart_rs485_enable_t enable; ///< Enable the DE signal. + sci_b_uart_rs485_de_polarity_t polarity; ///< DE signal polarity. + uint8_t assertion_time : 5; ///< Time in baseclock units after assertion of the DE signal and before the start of the write transfer. + uint8_t negation_time : 5; ///< Time in baseclock units after the end of a write transfer and before the DE signal is negated. +} sci_b_uart_rs485_setting_t; + +/** UART on SCI device Configuration */ +typedef struct st_sci_b_uart_extended_cfg +{ + sci_b_clk_src_t clock; ///< The source clock for the baud-rate generator. If internal optionally output baud rate on SCK + sci_b_uart_start_bit_detect_t rx_edge_start; ///< Start reception on falling edge + sci_b_uart_noise_cancellation_t noise_cancel; ///< Noise cancellation setting + sci_b_baud_setting_t * p_baud_setting; ///< Register settings for a desired baud rate. + sci_b_uart_rx_fifo_trigger_t rx_fifo_trigger; ///< Receive FIFO trigger level, unused if channel has no FIFO or if DTC is used. + bsp_io_port_pin_t flow_control_pin; ///< UART Driver Enable pin + sci_b_uart_flow_control_t flow_control; ///< CTS/RTS function of the SSn pin + sci_b_uart_rs485_setting_t rs485_setting; ///< RS-485 settings. +} sci_b_uart_extended_cfg_t; + +/********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/** @cond INC_HEADER_DEFS_SEC */ +/** Filled in Interface API structure for this Instance. */ +extern const uart_api_t g_uart_on_sci_b; + +/** @endcond */ + +fsp_err_t R_SCI_B_UART_Open(uart_ctrl_t * const p_api_ctrl, uart_cfg_t const * const p_cfg); +fsp_err_t R_SCI_B_UART_Read(uart_ctrl_t * const p_api_ctrl, uint8_t * const p_dest, uint32_t const bytes); +fsp_err_t R_SCI_B_UART_Write(uart_ctrl_t * const p_api_ctrl, uint8_t const * const p_src, uint32_t const bytes); +fsp_err_t R_SCI_B_UART_BaudSet(uart_ctrl_t * const p_api_ctrl, void const * const p_baud_setting); +fsp_err_t R_SCI_B_UART_InfoGet(uart_ctrl_t * const p_api_ctrl, uart_info_t * const p_info); +fsp_err_t R_SCI_B_UART_Close(uart_ctrl_t * const p_api_ctrl); +fsp_err_t R_SCI_B_UART_Abort(uart_ctrl_t * const p_api_ctrl, uart_dir_t communication_to_abort); +fsp_err_t R_SCI_B_UART_BaudCalculate(uint32_t baudrate, + bool bitrate_modulation, + uint32_t baud_rate_error_x_1000, + sci_b_baud_setting_t * const p_baud_setting); +fsp_err_t R_SCI_B_UART_CallbackSet(uart_ctrl_t * const p_api_ctrl, + void ( * p_callback)(uart_callback_args_t *), + void const * const p_context, + uart_callback_args_t * const p_callback_memory); +fsp_err_t R_SCI_B_UART_ReadStop(uart_ctrl_t * const p_api_ctrl, uint32_t * remaining_bytes); + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_B_UART) + **********************************************************************************************************************/ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h new file mode 100644 index 0000000000..252cb6862a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/R7FA8D1BH.h @@ -0,0 +1,43948 @@ +/* + * Copyright (c) 2009-2019 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @file ./out/R7FA8D1BH.h + * @brief CMSIS HeaderFile + * @version 1.2 + */ + +/** @addtogroup Renesas + * @{ + */ + +/** @addtogroup R7FA8D1BH + * @{ + */ + +#ifndef R7FA8D1BH_H + #define R7FA8D1BH_H + + #ifdef __cplusplus +extern "C" { + #endif + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ Processor and Core Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/* ========================== Configuration of the ARM Cortex-M85 Processor and Core Peripherals =========================== */ + #define __CM85_REV 0x0000U /*!< CM85 Core Revision */ + #define __NVIC_PRIO_BITS 4 /*!< Number of Bits used for Priority Levels */ + #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + #define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */ + #define __MPU_PRESENT 1 /*!< MPU present */ + #define __FPU_PRESENT 1 /*!< FPU present */ + #define __FPU_DP 0 /*!< Double Precision FPU */ + #define __DSP_PRESENT 1 /*!< DSP extension present */ + #define __ICACHE_PRESENT 1 /*!< Instruction Cache present */ + #define __DCACHE_PRESENT 1 /*!< Data Cache present */ + #define __SAUREGION_PRESENT 1 /*!< SAU region present */ + #define __PMU_PRESENT 0 /*!< PMU present */ + #define __PMU_NUM_EVENTCNT 0 /*!< PMU Event Counters */ + +/** @} */ /* End of group Configuration_of_CMSIS */ + + #include "core_cm85.h" /*!< ARM Cortex-M85 processor and core peripherals */ + #include "system.h" /*!< R7FA8D1BH System */ + + #ifndef __IM /*!< Fallback for older CMSIS versions */ + #define __IM __I + #endif + #ifndef __OM /*!< Fallback for older CMSIS versions */ + #define __OM __O + #endif + #ifndef __IOM /*!< Fallback for older CMSIS versions */ + #define __IOM __IO + #endif + +/* ======================================== Start of section using anonymous unions ======================================== */ + #if defined(__CC_ARM) + #pragma push + #pragma anon_unions + #elif defined(__ICCARM__) + #pragma language=extended + #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wc11-extensions" + #pragma clang diagnostic ignored "-Wreserved-id-macro" + #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" + #pragma clang diagnostic ignored "-Wnested-anon-types" + #elif defined(__GNUC__) + +/* anonymous unions are enabled by default */ + #elif defined(__TMS470__) + +/* anonymous unions are enabled by default */ + #elif defined(__TASKING__) + #pragma warning 586 + #elif defined(__CSMC__) + +/* anonymous unions are enabled by default */ + #else + #warning Not supported compiler type + #endif + +/* =========================================================================================================================== */ +/* ================ Device Specific Cluster Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_clusters + * @{ + */ + +/** + * @brief R_BUS_CSa [CSa] (CS Registers) + */ +typedef struct +{ + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t MOD; /*!< (@ 0x00000002) Mode Register */ + + struct + { + __IOM uint16_t WRMOD : 1; /*!< [0..0] Write Access Mode Select */ + uint16_t : 2; + __IOM uint16_t EWENB : 1; /*!< [3..3] External Wait Enable */ + uint16_t : 4; + __IOM uint16_t PRENB : 1; /*!< [8..8] Page Read Access Enable */ + __IOM uint16_t PWENB : 1; /*!< [9..9] Page Write Access Enable */ + uint16_t : 5; + __IOM uint16_t PRMOD : 1; /*!< [15..15] Page Read Access Mode Select */ + } MOD_b; + }; + + union + { + __IOM uint32_t WCR1; /*!< (@ 0x00000004) Wait Control Register 1 */ + + struct + { + __IOM uint32_t CSPWWAIT : 3; /*!< [2..0] Page Write Cycle Wait Select */ + uint32_t : 5; + __IOM uint32_t CSPRWAIT : 3; /*!< [10..8] Page Read Cycle Wait Select */ + uint32_t : 5; + __IOM uint32_t CSWWAIT : 5; /*!< [20..16] Normal Write Cycle Wait Select */ + uint32_t : 3; + __IOM uint32_t CSRWAIT : 5; /*!< [28..24] Normal Read Cycle Wait Select */ + uint32_t : 3; + } WCR1_b; + }; + + union + { + __IOM uint32_t WCR2; /*!< (@ 0x00000008) Wait Control Register 2 */ + + struct + { + __IOM uint32_t CSROFF : 3; /*!< [2..0] Read-Access CS Extension Cycle Select */ + uint32_t : 1; + __IOM uint32_t CSWOFF : 3; /*!< [6..4] Write-Access CS Extension Cycle Select */ + uint32_t : 1; + __IOM uint32_t WDOFF : 3; /*!< [10..8] Write Data Output Extension Cycle Select */ + uint32_t : 1; + __IOM uint32_t AWAIT : 2; /*!< [13..12] CS Assert Wait Select */ + uint32_t : 2; + __IOM uint32_t RDON : 3; /*!< [18..16] RD Assert Wait Select */ + uint32_t : 1; + __IOM uint32_t WRON : 3; /*!< [22..20] WR Assert Wait Select */ + uint32_t : 1; + __IOM uint32_t WDON : 3; /*!< [26..24] Write Data Output Wait Select */ + uint32_t : 1; + __IOM uint32_t CSON : 3; /*!< [30..28] CS Assert Wait Select */ + uint32_t : 1; + } WCR2_b; + }; + __IM uint32_t RESERVED1; +} R_BUS_CSa_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_CSb [CSb] (CS Registers) + */ +typedef struct +{ + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t CR; /*!< (@ 0x00000002) Control Register */ + + struct + { + __IOM uint16_t EXENB : 1; /*!< [0..0] Operation Enable */ + uint16_t : 3; + __IOM uint16_t BSIZE : 2; /*!< [5..4] External Bus Width Select */ + uint16_t : 2; + __IOM uint16_t EMODE : 1; /*!< [8..8] Endian Mode */ + uint16_t : 3; + __IOM uint16_t MPXEN : 1; /*!< [12..12] Address/Data Multiplexed I/O Interface Select */ + uint16_t : 3; + } CR_b; + }; + __IM uint16_t RESERVED1[3]; + + union + { + __IOM uint16_t REC; /*!< (@ 0x0000000A) Recovery Cycle Register */ + + struct + { + __IOM uint16_t RRCV : 4; /*!< [3..0] Read Recovery */ + uint16_t : 4; + __IOM uint16_t WRCV : 4; /*!< [11..8] Write Recovery */ + uint16_t : 4; + } REC_b; + }; + __IM uint16_t RESERVED2[2]; +} R_BUS_CSb_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_SDRAM [SDRAM] (SDRAM Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t SDCCR; /*!< (@ 0x00000000) SDC Control Register */ + + struct + { + __IOM uint8_t EXENB : 1; /*!< [0..0] Operation Enable */ + uint8_t : 3; + __IOM uint8_t BSIZE : 2; /*!< [5..4] SDRAM Bus Width Select */ + uint8_t : 2; + } SDCCR_b; + }; + + union + { + __IOM uint8_t SDCMOD; /*!< (@ 0x00000001) SDC Mode Register */ + + struct + { + __IOM uint8_t EMODE : 1; /*!< [0..0] Endian Mode */ + uint8_t : 7; + } SDCMOD_b; + }; + + union + { + __IOM uint8_t SDAMOD; /*!< (@ 0x00000002) SDRAM Access Mode Register */ + + struct + { + __IOM uint8_t BE : 1; /*!< [0..0] Continuous Access Enable */ + uint8_t : 7; + } SDAMOD_b; + }; + __IM uint8_t RESERVED; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint8_t SDSELF; /*!< (@ 0x00000010) SDRAM Self-Refresh Control Register */ + + struct + { + __IOM uint8_t SFEN : 1; /*!< [0..0] SDRAM Self-Refresh Enable */ + uint8_t : 7; + } SDSELF_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; + + union + { + __IOM uint16_t SDRFCR; /*!< (@ 0x00000014) SDRAM Refresh Control Register */ + + struct + { + __IOM uint16_t RFC : 12; /*!< [11..0] Auto-Refresh Request Interval Setting */ + __IOM uint16_t REFW : 4; /*!< [15..12] Auto-Refresh Cycle/ Self-Refresh Clearing Cycle Count + * Setting. ( REFW+1 Cycles ) */ + } SDRFCR_b; + }; + + union + { + __IOM uint8_t SDRFEN; /*!< (@ 0x00000016) SDRAM Auto-Refresh Control Register */ + + struct + { + __IOM uint8_t RFEN : 1; /*!< [0..0] Auto-Refresh Operation Enable */ + uint8_t : 7; + } SDRFEN_b; + }; + __IM uint8_t RESERVED4; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint8_t SDICR; /*!< (@ 0x00000020) SDRAM Initialization Sequence Control Register */ + + struct + { + __IOM uint8_t INIRQ : 1; /*!< [0..0] Initialization Sequence Start */ + uint8_t : 7; + } SDICR_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t SDIR; /*!< (@ 0x00000024) SDRAM Initialization Register */ + + struct + { + __IOM uint16_t ARFI : 4; /*!< [3..0] Initialization Auto-Refresh Interval ( PRF+3 cycles ) */ + __IOM uint16_t ARFC : 4; /*!< [7..4] Initialization Auto-Refresh Count */ + __IOM uint16_t PRC : 3; /*!< [10..8] Initialization Precharge Cycle Count ( PRF+3 cycles + * ) */ + uint16_t : 5; + } SDIR_b; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[6]; + + union + { + __IOM uint8_t SDADR; /*!< (@ 0x00000040) SDRAM Address Register */ + + struct + { + __IOM uint8_t MXC : 2; /*!< [1..0] Address Multiplex Select */ + uint8_t : 6; + } SDADR_b; + }; + __IM uint8_t RESERVED10; + __IM uint16_t RESERVED11; + + union + { + __IOM uint32_t SDTR; /*!< (@ 0x00000044) SDRAM Timing Register */ + + struct + { + __IOM uint32_t CL : 3; /*!< [2..0] SDRAMC Column Latency */ + uint32_t : 5; + __IOM uint32_t WR : 1; /*!< [8..8] Write Recovery Interval */ + __IOM uint32_t RP : 3; /*!< [11..9] Row Precharge Interval ( RP+1 cycles ) */ + __IOM uint32_t RCD : 2; /*!< [13..12] Row Column Latency ( RCD+1 cycles ) */ + uint32_t : 2; + __IOM uint32_t RAS : 3; /*!< [18..16] Row Active Interval */ + uint32_t : 13; + } SDTR_b; + }; + + union + { + __IOM uint16_t SDMOD; /*!< (@ 0x00000048) SDRAM Mode Register */ + + struct + { + __IOM uint16_t MR : 15; /*!< [14..0] Mode Register Setting */ + uint16_t : 1; + } SDMOD_b; + }; + __IM uint16_t RESERVED12; + __IM uint32_t RESERVED13; + + union + { + __IM uint8_t SDSR; /*!< (@ 0x00000050) SDRAM Status Register */ + + struct + { + __IM uint8_t MRSST : 1; /*!< [0..0] Mode Register Setting Status */ + uint8_t : 2; + __IM uint8_t INIST : 1; /*!< [3..3] Initialization Status */ + __IM uint8_t SRFST : 1; /*!< [4..4] Self-Refresh Transition/Recovery Status */ + uint8_t : 3; + } SDSR_b; + }; + __IM uint8_t RESERVED14; + __IM uint16_t RESERVED15; +} R_BUS_SDRAM_Type; /*!< Size = 84 (0x54) */ + +/** + * @brief R_BUS_BUSERRa [BUSERRa] (Bus Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ADD; /*!< (@ 0x00000000) Bus Error Address Register */ + + struct + { + __IM uint32_t BERAD : 32; /*!< [31..0] Bus Error Address */ + } ADD_b; + }; + + union + { + union + { + __IM uint8_t STAT; /*!< (@ 0x00000004) Bus Error Status Register */ + + struct + { + __IM uint8_t ACCSTAT : 1; /*!< [0..0] Error access status */ + uint8_t : 6; + __IM uint8_t ERRSTAT : 1; /*!< [7..7] Bus Error Status */ + } STAT_b; + }; + + union + { + __IM uint8_t RW; /*!< (@ 0x00000004) Bus Error Read Write */ + + struct + { + __IM uint8_t RWSTAT : 1; /*!< [0..0] Error access Read/Write Status */ + uint8_t : 7; + } RW_b; + }; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BUSERRa_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_BTZFERR [BTZFERR] (Bus TZF Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ADD; /*!< (@ 0x00000000) BUS TZF Error Address */ + + struct + { + __IM uint32_t BTZFERAD : 32; /*!< [31..0] Bus TrustZone Filter Error Address */ + } ADD_b; + }; + + union + { + __IM uint8_t RW; /*!< (@ 0x00000004) BUS TZF Error Read Write */ + + struct + { + __IM uint8_t TRWSTAT : 1; /*!< [0..0] TrustZone filter error access Read/Write Status */ + uint8_t : 7; + } RW_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BTZFERR_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_BUSERRb [BUSERRb] (Bus Error Registers) + */ +typedef struct +{ + union + { + __IM uint8_t STAT; /*!< (@ 0x00000000) Bus Error Status Register */ + + struct + { + __IM uint8_t SLERRSTAT : 1; /*!< [0..0] Slave Bus Error Status. */ + __IM uint8_t STERRSTAT : 1; /*!< [1..1] Slave TrustZone filter Error Status. */ + uint8_t : 1; + __IM uint8_t MMERRSTAT : 1; /*!< [3..3] Master MPU Error Status. */ + __IM uint8_t ILERRSTAT : 1; /*!< [4..4] Illegal Address Access Error Status. */ + __IM uint8_t MSERRSTAT : 1; /*!< [5..5] Master Security Attribution Unit Error Status. */ + uint8_t : 2; + } STAT_b; + }; + __IM uint8_t RESERVED[7]; + + union + { + __IOM uint8_t CLR; /*!< (@ 0x00000008) Bus Error Clear Register */ + + struct + { + __IOM uint8_t SLERRCLR : 1; /*!< [0..0] Slave Bus Error Clear. */ + __IOM uint8_t STERRCLR : 1; /*!< [1..1] Slave TrustZone filter Error Status. */ + uint8_t : 1; + __IOM uint8_t MMERRCLR : 1; /*!< [3..3] Master MPU Error Clear. */ + __IOM uint8_t ILERRCLR : 1; /*!< [4..4] Illegal Address Access Error Clear. */ + __IOM uint8_t MSERRCLR : 1; /*!< [5..5] Master Security Attribution Unit Error Clear. */ + uint8_t : 2; + } CLR_b; + }; + __IM uint8_t RESERVED1[7]; +} R_BUS_BUSERRb_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_DMACDTCERR [DMACDTCERR] (DMAC/DTC Error Registers) + */ +typedef struct +{ + __IM uint8_t RESERVED[36]; + + union + { + __IM uint8_t STAT; /*!< (@ 0x00000024) DMAC/DTC Error Status Register */ + + struct + { + __IM uint8_t MTERRSTAT : 1; /*!< [0..0] Master TrustZone Filter Error Status */ + uint8_t : 7; + } STAT_b; + }; + __IM uint8_t RESERVED1[7]; + + union + { + __IOM uint8_t CLR; /*!< (@ 0x0000002C) DMAC/DTC Error Clear Register */ + + struct + { + __IOM uint8_t MTERRCLR : 1; /*!< [0..0] Master TrustZone filter Error Clear */ + uint8_t : 7; + } CLR_b; + }; +} R_BUS_DMACDTCERR_Type; /*!< Size = 45 (0x2d) */ + +/** + * @brief R_BUS_BUSSABT0 [BUSSABT0] (Bus Slave Arbitration Control 0 Registers) + */ +typedef struct +{ + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t MRE0BI; /*!< (@ 0x00000008) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } MRE0BI_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t FLBI; /*!< (@ 0x00000010) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } FLBI_b; + }; + __IM uint32_t RESERVED2[3]; + + union + { + __IOM uint32_t S0BI; /*!< (@ 0x00000020) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S0BI_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t S1BI; /*!< (@ 0x00000028) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S1BI_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t S2BI; /*!< (@ 0x00000030) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S2BI_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t S3BI; /*!< (@ 0x00000038) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } S3BI_b; + }; + __IM uint32_t RESERVED6[3]; + + union + { + __IOM uint32_t STBYSBI; /*!< (@ 0x00000048) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } STBYSBI_b; + }; + __IM uint32_t RESERVED7; + + union + { + union + { + __IOM uint32_t ECBI; /*!< (@ 0x00000050) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } ECBI_b; + }; + + union + { + __IOM uint32_t SPI0BI; /*!< (@ 0x00000050) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } SPI0BI_b; + }; + }; + __IM uint32_t RESERVED8; + + union + { + union + { + __IOM uint32_t EOBI; /*!< (@ 0x00000058) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } EOBI_b; + }; + + union + { + __IOM uint32_t SPI1BI; /*!< (@ 0x00000058) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } SPI1BI_b; + }; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t PBBI; /*!< (@ 0x00000060) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PBBI_b; + }; + __IM uint32_t RESERVED10; + + union + { + union + { + __IOM uint32_t PABI; /*!< (@ 0x00000068) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PABI_b; + }; + + union + { + __IOM uint32_t CPU0SAHBI; /*!< (@ 0x00000068) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } CPU0SAHBI_b; + }; + }; + __IM uint32_t RESERVED11; + + union + { + union + { + __IOM uint32_t PIBI; /*!< (@ 0x00000070) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PIBI_b; + }; + + union + { + __IOM uint32_t CPU1TCMBI; /*!< (@ 0x00000070) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } CPU1TCMBI_b; + }; + }; + __IM uint32_t RESERVED12; + + union + { + __IOM uint32_t PSBI; /*!< (@ 0x00000078) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for slave. */ + uint32_t : 31; + } PSBI_b; + }; +} R_BUS_BUSSABT0_Type; /*!< Size = 124 (0x7c) */ + +/** + * @brief R_BUS_BUSSABT1 [BUSSABT1] (Bus Slave Arbitration Control 1 Registers) + */ +typedef struct +{ + union + { + union + { + __IOM uint32_t FHBI; /*!< (@ 0x00000000) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } FHBI_b; + }; + + union + { + __IOM uint32_t MRC0BI; /*!< (@ 0x00000000) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } MRC0BI_b; + }; + }; + __IM uint32_t RESERVED[5]; + + union + { + __IOM uint32_t S0BI; /*!< (@ 0x00000018) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } S0BI_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t S1BI; /*!< (@ 0x00000020) Bus Slave Arbitration Control Register */ + + struct + { + __IOM uint32_t ARBS : 2; /*!< [1..0] Arbitration Select for slave. */ + uint32_t : 30; + } S1BI_b; + }; +} R_BUS_BUSSABT1_Type; /*!< Size = 36 (0x24) */ + +/** + * @brief R_BUS_BMSAERR [BMSAERR] (Bus Master Security Attribution Unit Error Address and Read/Write Status registers.) + */ +typedef struct +{ + union + { + __IM uint32_t ADD; /*!< (@ 0x00000000) Bus Master Security Attribution Unit Error Address. */ + + struct + { + __IM uint32_t MSERAD : 32; /*!< [31..0] Bus Master Security Attribution Unit Error Address. */ + } ADD_b; + }; + + union + { + __IM uint8_t RW; /*!< (@ 0x00000004) BUS Master Security Attribution Unit Error Read + * Write. */ + + struct + { + __IM uint8_t MSARWSTAT : 1; /*!< [0..0] Master Security Attribution Unit error access Read/Write + * Status. */ + uint8_t : 7; + } RW_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[2]; +} R_BUS_BMSAERR_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_BUS_OAD [OAD] (Bus Operation After Detection Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t BUSOAD; /*!< (@ 0x00000000) Bus Operation After Detection Register */ + + struct + { + __IOM uint16_t ILERROAD : 1; /*!< [0..0] Illegal address access error operation after detection. */ + __IOM uint16_t SLERROAD : 1; /*!< [1..1] Slave bus error operation after detection. */ + __IOM uint16_t BWERROAD : 1; /*!< [2..2] Bufferable write error operation after detection. */ + uint16_t : 13; + } BUSOAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t BUSOADPT; /*!< (@ 0x00000004) BUS Operation After Detection Protect Register. */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of BUSOAD register. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key code */ + } BUSOADPT_b; + }; + __IM uint16_t RESERVED1[5]; + + union + { + __IOM uint16_t MSAOAD; /*!< (@ 0x00000010) Master Security Attribution Operation After Detection + * Register. */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Master Security Attribution operation after detection. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code. */ + } MSAOAD_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t MSAPT; /*!< (@ 0x00000014) Master Security Attribution Protect Register. */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of MSAOAD register. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key code */ + } MSAPT_b; + }; +} R_BUS_OAD_Type; /*!< Size = 22 (0x16) */ + +/** + * @brief R_BUS_MBWERR [MBWERR] (Master Bufferable Write Error Registers) + */ +typedef struct +{ + union + { + __IM uint32_t STAT; /*!< (@ 0x00000000) Bufferable Write Error Status Register */ + + struct + { + __IM uint32_t BWERR0 : 1; /*!< [0..0] Bufferable Write Error in 0. */ + __IM uint32_t BWERR1 : 1; /*!< [1..1] Bufferable Write Error in 1. */ + __IM uint32_t BWERR2 : 1; /*!< [2..2] Bufferable Write Error in 2. */ + __IM uint32_t BWERR3 : 1; /*!< [3..3] Bufferable Write Error in 3. */ + __IM uint32_t BWERR4 : 1; /*!< [4..4] Bufferable Write Error in 4. */ + __IM uint32_t BWERR5 : 1; /*!< [5..5] Bufferable Write Error in 5. */ + __IM uint32_t BWERR6 : 1; /*!< [6..6] Bufferable Write Error in 6. */ + __IM uint32_t BWERR7 : 1; /*!< [7..7] Bufferable Write Error in 7. */ + __IM uint32_t BWERR8 : 1; /*!< [8..8] Bufferable Write Error in 8. */ + __IM uint32_t BWERR9 : 1; /*!< [9..9] Bufferable Write Error in 9. */ + __IM uint32_t BWERR10 : 1; /*!< [10..10] Bufferable Write Error in 10. */ + __IM uint32_t BWERR11 : 1; /*!< [11..11] Bufferable Write Error in 11. */ + __IM uint32_t BWERR12 : 1; /*!< [12..12] Bufferable Write Error in 12. */ + __IM uint32_t BWERR13 : 1; /*!< [13..13] Bufferable Write Error in 13. */ + __IM uint32_t BWERR14 : 1; /*!< [14..14] Bufferable Write Error in 14. */ + __IM uint32_t BWERR15 : 1; /*!< [15..15] Bufferable Write Error in 15. */ + __IM uint32_t BWERR16 : 1; /*!< [16..16] Bufferable Write Error in 16. */ + __IM uint32_t BWERR17 : 1; /*!< [17..17] Bufferable Write Error in 17. */ + __IM uint32_t BWERR18 : 1; /*!< [18..18] Bufferable Write Error in 18. */ + __IM uint32_t BWERR19 : 1; /*!< [19..19] Bufferable Write Error in 19. */ + __IM uint32_t BWERR20 : 1; /*!< [20..20] Bufferable Write Error in 20. */ + __IM uint32_t BWERR21 : 1; /*!< [21..21] Bufferable Write Error in 21. */ + __IM uint32_t BWERR22 : 1; /*!< [22..22] Bufferable Write Error in 22. */ + __IM uint32_t BWERR23 : 1; /*!< [23..23] Bufferable Write Error in 23. */ + __IM uint32_t BWERR24 : 1; /*!< [24..24] Bufferable Write Error in 24. */ + __IM uint32_t BWERR25 : 1; /*!< [25..25] Bufferable Write Error in 25. */ + __IM uint32_t BWERR26 : 1; /*!< [26..26] Bufferable Write Error in 26. */ + __IM uint32_t BWERR27 : 1; /*!< [27..27] Bufferable Write Error in 27. */ + __IM uint32_t BWERR28 : 1; /*!< [28..28] Bufferable Write Error in 28. */ + __IM uint32_t BWERR29 : 1; /*!< [29..29] Bufferable Write Error in 29. */ + __IM uint32_t BWERR30 : 1; /*!< [30..30] Bufferable Write Error in 30. */ + __IM uint32_t BWERR31 : 1; /*!< [31..31] Bufferable Write Error in 31. */ + } STAT_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t CLR; /*!< (@ 0x00000008) Bufferable Write Error Clear Register. */ + + struct + { + __IOM uint32_t BWERR0 : 1; /*!< [0..0] Bufferable Write Error Clear for 0. */ + __IOM uint32_t BWERR1 : 1; /*!< [1..1] Bufferable Write Error Clear for 1. */ + __IOM uint32_t BWERR2 : 1; /*!< [2..2] Bufferable Write Error Clear for 2. */ + __IOM uint32_t BWERR3 : 1; /*!< [3..3] Bufferable Write Error Clear for 3. */ + __IOM uint32_t BWERR4 : 1; /*!< [4..4] Bufferable Write Error Clear for 4. */ + __IOM uint32_t BWERR5 : 1; /*!< [5..5] Bufferable Write Error Clear for 5. */ + __IOM uint32_t BWERR6 : 1; /*!< [6..6] Bufferable Write Error Clear for 6. */ + __IOM uint32_t BWERR7 : 1; /*!< [7..7] Bufferable Write Error Clear for 7. */ + __IOM uint32_t BWERR8 : 1; /*!< [8..8] Bufferable Write Error Clear for 8. */ + __IOM uint32_t BWERR9 : 1; /*!< [9..9] Bufferable Write Error Clear for 9. */ + __IOM uint32_t BWERR10 : 1; /*!< [10..10] Bufferable Write Error Clear for 10. */ + __IOM uint32_t BWERR11 : 1; /*!< [11..11] Bufferable Write Error Clear for 11. */ + __IOM uint32_t BWERR12 : 1; /*!< [12..12] Bufferable Write Error Clear for 12. */ + __IOM uint32_t BWERR13 : 1; /*!< [13..13] Bufferable Write Error Clear for 13. */ + __IOM uint32_t BWERR14 : 1; /*!< [14..14] Bufferable Write Error Clear for 14. */ + __IOM uint32_t BWERR15 : 1; /*!< [15..15] Bufferable Write Error Clear for 15. */ + __IOM uint32_t BWERR16 : 1; /*!< [16..16] Bufferable Write Error Clear for 16. */ + __IOM uint32_t BWERR17 : 1; /*!< [17..17] Bufferable Write Error Clear for 17. */ + __IOM uint32_t BWERR18 : 1; /*!< [18..18] Bufferable Write Error Clear for 18. */ + __IOM uint32_t BWERR19 : 1; /*!< [19..19] Bufferable Write Error Clear for 19. */ + __IOM uint32_t BWERR20 : 1; /*!< [20..20] Bufferable Write Error Clear for 20. */ + __IOM uint32_t BWERR21 : 1; /*!< [21..21] Bufferable Write Error Clear for 21. */ + __IOM uint32_t BWERR22 : 1; /*!< [22..22] Bufferable Write Error Clear for 22. */ + __IOM uint32_t BWERR23 : 1; /*!< [23..23] Bufferable Write Error Clear for 23. */ + __IOM uint32_t BWERR24 : 1; /*!< [24..24] Bufferable Write Error Clear for 24. */ + __IOM uint32_t BWERR25 : 1; /*!< [25..25] Bufferable Write Error Clear for 25. */ + __IOM uint32_t BWERR26 : 1; /*!< [26..26] Bufferable Write Error Clear for 26. */ + __IOM uint32_t BWERR27 : 1; /*!< [27..27] Bufferable Write Error Clear for 27. */ + __IOM uint32_t BWERR28 : 1; /*!< [28..28] Bufferable Write Error Clear for 28. */ + __IOM uint32_t BWERR29 : 1; /*!< [29..29] Bufferable Write Error Clear for 29. */ + __IOM uint32_t BWERR30 : 1; /*!< [30..30] Bufferable Write Error Clear for 30. */ + __IOM uint32_t BWERR31 : 1; /*!< [31..31] Bufferable Write Error Clear for 31. */ + } CLR_b; + }; +} R_BUS_MBWERR_Type; /*!< Size = 12 (0xc) */ + +/** + * @brief R_BUS_BUSM [BUSM] (Master Bus Control Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t CNT; /*!< (@ 0x00000000) Master Bus Control Register */ + + struct + { + uint16_t : 15; + __IOM uint16_t IERES : 1; /*!< [15..15] Ignore Error Responses */ + } CNT_b; + }; + __IM uint16_t RESERVED; +} R_BUS_BUSM_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_BUS_BUSS [BUSS] (Slave Bus Control Register Array) + */ +typedef struct +{ + union + { + __IOM uint16_t CNT; /*!< (@ 0x00000000) Slave Bus Control Register */ + + struct + { + __IOM uint16_t ARBS : 2; /*!< [1..0] Arbitration Select */ + uint16_t : 2; + __IOM uint16_t ARBMET : 2; /*!< [5..4] Arbitration Method */ + uint16_t : 10; + } CNT_b; + }; + __IM uint16_t RESERVED; +} R_BUS_BUSS_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_CANFD_CFDC [CFDC] (Channel Control/Status) + */ +typedef struct +{ + union + { + __IOM uint32_t NCFG; /*!< (@ 0x00000000) Channel Nominal Bitrate Configuration Register */ + + struct + { + __IOM uint32_t NBRP : 10; /*!< [9..0] Channel Nominal Baud Rate Prescaler */ + __IOM uint32_t NSJW : 7; /*!< [16..10] Resynchronization Jump Width */ + __IOM uint32_t NTSEG1 : 8; /*!< [24..17] Timing Segment 1 */ + __IOM uint32_t NTSEG2 : 7; /*!< [31..25] Timing Segment 2 */ + } NCFG_b; + }; + + union + { + __IOM uint32_t CTR; /*!< (@ 0x00000004) Channel Control Registers */ + + struct + { + __IOM uint32_t CHMDC : 2; /*!< [1..0] Channel Mode Control */ + __IOM uint32_t CSLPR : 1; /*!< [2..2] Channel Sleep Request */ + __IOM uint32_t RTBO : 1; /*!< [3..3] Return from Bus-Off */ + uint32_t : 4; + __IOM uint32_t BEIE : 1; /*!< [8..8] Bus Error Interrupt Enable */ + __IOM uint32_t EWIE : 1; /*!< [9..9] Error Warning Interrupt Enable */ + __IOM uint32_t EPIE : 1; /*!< [10..10] Error Passive Interrupt Enable */ + __IOM uint32_t BOEIE : 1; /*!< [11..11] Bus-Off Entry Interrupt Enable */ + __IOM uint32_t BORIE : 1; /*!< [12..12] Bus-Off Recovery Interrupt Enable */ + __IOM uint32_t OLIE : 1; /*!< [13..13] Overload Interrupt Enable */ + __IOM uint32_t BLIE : 1; /*!< [14..14] Bus Lock Interrupt Enable */ + __IOM uint32_t ALIE : 1; /*!< [15..15] Arbitration Lost Interrupt Enable */ + __IOM uint32_t TAIE : 1; /*!< [16..16] Transmission abort Interrupt Enable */ + __IOM uint32_t EOCOIE : 1; /*!< [17..17] Error occurrence counter overflow Interrupt enable */ + __IOM uint32_t SOCOIE : 1; /*!< [18..18] Successful Occurrence Counter Overflow Interrupt enable */ + __IOM uint32_t TDCVFIE : 1; /*!< [19..19] Transceiver Delay Compensation Violation Interrupt + * enable */ + uint32_t : 1; + __IOM uint32_t BOM : 2; /*!< [22..21] Channel Bus-Off Mode */ + __IOM uint32_t ERRD : 1; /*!< [23..23] Channel Error Display */ + __IOM uint32_t CTME : 1; /*!< [24..24] Channel Test Mode Enable */ + __IOM uint32_t CTMS : 2; /*!< [26..25] Channel Test Mode Select */ + uint32_t : 3; + __IOM uint32_t CRCT : 1; /*!< [30..30] CRC Error Test */ + __IOM uint32_t ROM : 1; /*!< [31..31] Restricted Operation Mode */ + } CTR_b; + }; + + union + { + __IOM uint32_t STS; /*!< (@ 0x00000008) Channel Status Registers */ + + struct + { + __IM uint32_t CRSTSTS : 1; /*!< [0..0] Channel RESET Status */ + __IM uint32_t CHLTSTS : 1; /*!< [1..1] Channel HALT Status */ + __IM uint32_t CSLPSTS : 1; /*!< [2..2] Channel SLEEP Status */ + __IM uint32_t EPSTS : 1; /*!< [3..3] Channel Error Passive Status */ + __IM uint32_t BOSTS : 1; /*!< [4..4] Channel Bus-Off Status */ + __IM uint32_t TRMSTS : 1; /*!< [5..5] Channel Transmit Status */ + __IM uint32_t RECSTS : 1; /*!< [6..6] Channel Receive Status */ + __IM uint32_t COMSTS : 1; /*!< [7..7] Channel Communication Status */ + __IOM uint32_t ESIF : 1; /*!< [8..8] Error State Indication Flag */ + uint32_t : 7; + __IM uint32_t REC : 8; /*!< [23..16] Reception Error Count */ + __IOM uint32_t TEC : 8; /*!< [31..24] Transmission Error Count */ + } STS_b; + }; + + union + { + __IOM uint32_t ERFL; /*!< (@ 0x0000000C) Channel Error Flag Registers */ + + struct + { + __IOM uint32_t BEF : 1; /*!< [0..0] Bus Error Flag */ + __IOM uint32_t EWF : 1; /*!< [1..1] Error Warning Flag */ + __IOM uint32_t EPF : 1; /*!< [2..2] Error Passive Flag */ + __IOM uint32_t BOEF : 1; /*!< [3..3] Bus-Off Entry Flag */ + __IOM uint32_t BORF : 1; /*!< [4..4] Bus-Off Recovery Flag */ + __IOM uint32_t OVLF : 1; /*!< [5..5] Overload Flag */ + __IOM uint32_t BLF : 1; /*!< [6..6] Bus Lock Flag */ + __IOM uint32_t ALF : 1; /*!< [7..7] Arbitration Lost Flag */ + __IOM uint32_t SERR : 1; /*!< [8..8] Stuff Error */ + __IOM uint32_t FERR : 1; /*!< [9..9] Form Error */ + __IOM uint32_t AERR : 1; /*!< [10..10] Acknowledge Error */ + __IOM uint32_t CERR : 1; /*!< [11..11] CRC Error */ + __IOM uint32_t B1ERR : 1; /*!< [12..12] Bit 1 Error */ + __IOM uint32_t B0ERR : 1; /*!< [13..13] Bit 0 Error */ + __IOM uint32_t ADERR : 1; /*!< [14..14] Acknowledge Delimiter Error */ + uint32_t : 1; + __IM uint32_t CRCREG : 15; /*!< [30..16] CRC Register value */ + uint32_t : 1; + } ERFL_b; + }; +} R_CANFD_CFDC_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFD_CFDC2 [CFDC2] (Channel Configuration Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t DCFG; /*!< (@ 0x00000000) Channel Data Bitrate Configuration Register */ + + struct + { + __IOM uint32_t DBRP : 8; /*!< [7..0] Channel Data Baud Rate Prescaler */ + __IOM uint32_t DTSEG1 : 5; /*!< [12..8] Timing Segment 1 */ + uint32_t : 3; + __IOM uint32_t DTSEG2 : 4; /*!< [19..16] Timing Segment 2 */ + uint32_t : 4; + __IOM uint32_t DSJW : 4; /*!< [27..24] Resynchronization Jump Width */ + uint32_t : 4; + } DCFG_b; + }; + + union + { + __IOM uint32_t FDCFG; /*!< (@ 0x00000004) Channel CAN-FD Configuration Register */ + + struct + { + __IOM uint32_t EOCCFG : 3; /*!< [2..0] Error Occurrence Counter Configuration */ + uint32_t : 5; + __IOM uint32_t TDCOC : 1; /*!< [8..8] Transceiver Delay Compensation Offset Configuration */ + __IOM uint32_t TDCE : 1; /*!< [9..9] Transceiver Delay Compensation Enable */ + __IOM uint32_t ESIC : 1; /*!< [10..10] Error State Indication Configuration */ + uint32_t : 5; + __IOM uint32_t TDCO : 8; /*!< [23..16] Transceiver Delay Compensation Offset */ + uint32_t : 4; + __IOM uint32_t FDOE : 1; /*!< [28..28] FD only enable */ + __IOM uint32_t REFE : 1; /*!< [29..29] RX edge filter enable */ + __IOM uint32_t CLOE : 1; /*!< [30..30] Classical CAN only enable */ + uint32_t : 1; + } FDCFG_b; + }; + + union + { + __IOM uint32_t FDCTR; /*!< (@ 0x00000008) Channel CAN-FD Control Register */ + + struct + { + __IOM uint32_t EOCCLR : 1; /*!< [0..0] Error Occurrence Counter Clear */ + __IOM uint32_t SOCCLR : 1; /*!< [1..1] Successful Occurrence Counter Clear */ + uint32_t : 30; + } FDCTR_b; + }; + + union + { + __IOM uint32_t FDSTS; /*!< (@ 0x0000000C) Channel CAN-FD Status Register */ + + struct + { + __IM uint32_t TDCR : 8; /*!< [7..0] Transceiver Delay Compensation Result */ + __IOM uint32_t EOCO : 1; /*!< [8..8] Error occurrence counter overflow */ + __IOM uint32_t SOCO : 1; /*!< [9..9] Successful occurrence counter overflow */ + uint32_t : 5; + __IOM uint32_t TDCVF : 1; /*!< [15..15] Transceiver Delay Compensation Violation Flag */ + __IM uint32_t EOC : 8; /*!< [23..16] Error occurrence counter register */ + __IM uint32_t SOC : 8; /*!< [31..24] Successful occurrence counter register */ + } FDSTS_b; + }; + + union + { + __IOM uint32_t FDCRC; /*!< (@ 0x00000010) Channel CAN-FD CRC Register */ + + struct + { + __IM uint32_t CRCREG : 21; /*!< [20..0] CRC Register value */ + uint32_t : 3; + __IM uint32_t SCNT : 4; /*!< [27..24] Stuff bit count */ + uint32_t : 4; + } FDCRC_b; + }; + __IM uint32_t RESERVED[3]; +} R_CANFD_CFDC2_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_CANFD_CFDGAFL [CFDGAFL] (Global Acceptance Filter List Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) Global Acceptance Filter List ID Registers */ + + struct + { + __IOM uint32_t GAFLID : 29; /*!< [28..0] Global Acceptance Filter List Entry ID Field */ + __IOM uint32_t GAFLLB : 1; /*!< [29..29] Global Acceptance Filter List Entry Loopback Configuration */ + __IOM uint32_t GAFLRTR : 1; /*!< [30..30] Global Acceptance Filter List Entry RTR Field */ + __IOM uint32_t GAFLIDE : 1; /*!< [31..31] Global Acceptance Filter List Entry IDE Field */ + } ID_b; + }; + + union + { + __IOM uint32_t M; /*!< (@ 0x00000004) Global Acceptance Filter List Mask Registers */ + + struct + { + __IOM uint32_t GAFLIDM : 29; /*!< [28..0] Global Acceptance Filter List ID Mask Field */ + __IOM uint32_t GAFLIFL1 : 1; /*!< [29..29] Global Acceptance Filter List Information Label 1 */ + __IOM uint32_t GAFLRTRM : 1; /*!< [30..30] Global Acceptance Filter List Entry RTR Mask */ + __IOM uint32_t GAFLIDEM : 1; /*!< [31..31] Global Acceptance Filter List IDE Mask */ + } M_b; + }; + + union + { + __IOM uint32_t P0; /*!< (@ 0x00000008) Global Acceptance Filter List Pointer 0 Registers */ + + struct + { + __IOM uint32_t GAFLDLC : 4; /*!< [3..0] Global Acceptance Filter List DLC Field */ + uint32_t : 3; + __IOM uint32_t GAFLIFL0 : 1; /*!< [7..7] Global Acceptance Filter List Information Label 0 */ + __IOM uint32_t GAFLRMDP : 5; /*!< [12..8] Global Acceptance Filter List RX Message Buffer Direction + * Pointer */ + uint32_t : 2; + __IOM uint32_t GAFLRMV : 1; /*!< [15..15] Global Acceptance Filter List RX Message Buffer Valid */ + __IOM uint32_t GAFLPTR : 16; /*!< [31..16] Global Acceptance Filter List Pointer Field */ + } P0_b; + }; + + union + { + __IOM uint32_t P1; /*!< (@ 0x0000000C) Global Acceptance Filter List Pointer 1 Registers */ + + struct + { + __IOM uint32_t GAFLFDP : 9; /*!< [8..0] Global Acceptance Filter List FIFO Direction Pointer */ + uint32_t : 23; + } P1_b; + }; +} R_CANFD_CFDGAFL_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFD_CFDTHL [CFDTHL] (Channel TX History List) + */ +typedef struct +{ + union + { + __IM uint32_t ACC0; /*!< (@ 0x00000000) Channel TX History List Access Registers 0 */ + + struct + { + __IM uint32_t BT : 3; /*!< [2..0] Buffer Type */ + __IM uint32_t BN : 7; /*!< [9..3] Buffer No. */ + uint32_t : 6; + __IM uint32_t TMTS : 16; /*!< [31..16] Transmit Timestamp */ + } ACC0_b; + }; + + union + { + __IOM uint32_t ACC1; /*!< (@ 0x00000004) Channel TX History List Access Registers 1 */ + + struct + { + __IM uint32_t TID : 16; /*!< [15..0] Transmit ID */ + __IM uint32_t TIFL : 2; /*!< [17..16] Transmit Information Label */ + uint32_t : 14; + } ACC1_b; + }; +} R_CANFD_CFDTHL_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_CANFD_CFDRF [CFDRF] (RX FIFO Access Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ID; /*!< (@ 0x00000000) RX FIFO Access ID Register */ + + struct + { + __IM uint32_t RFID : 29; /*!< [28..0] RX FIFO Buffer ID Field */ + uint32_t : 1; + __IM uint32_t RFRTR : 1; /*!< [30..30] RX FIFO Buffer RTR Frame */ + __IM uint32_t RFIDE : 1; /*!< [31..31] RX FIFO Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IM uint32_t PTR; /*!< (@ 0x00000004) RX FIFO Access Pointer Register */ + + struct + { + __IM uint32_t RFTS : 16; /*!< [15..0] RX FIFO Timestamp Field */ + uint32_t : 12; + __IM uint32_t RFDLC : 4; /*!< [31..28] RX FIFO Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IM uint32_t FDSTS; /*!< (@ 0x00000008) RX FIFO Access CAN-FD Status Register */ + + struct + { + __IM uint32_t RFESI : 1; /*!< [0..0] Error State Indicator bit */ + __IM uint32_t RFBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IM uint32_t RFFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IM uint32_t RFIFL : 2; /*!< [9..8] RX FIFO Buffer Information Label Field */ + uint32_t : 6; + __IM uint32_t RFPTR : 16; /*!< [31..16] RX FIFO Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + __IM uint8_t DF[64]; /*!< (@ 0x0000000C) RX FIFO Access Data Field Registers */ + + struct + { + __IM uint8_t RFDB : 8; /*!< [7..0] RX FIFO Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDRF_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDCF [CFDCF] (Common FIFO Access Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) Common FIFO Access ID Register */ + + struct + { + __IOM uint32_t CFID : 29; /*!< [28..0] Common FIFO Buffer ID Field */ + uint32_t : 1; + __IOM uint32_t CFRTR : 1; /*!< [30..30] Common FIFO Buffer RTR Frame */ + __IOM uint32_t CFIDE : 1; /*!< [31..31] Common FIFO Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IOM uint32_t PTR; /*!< (@ 0x00000004) Common FIFO Access Pointer Register */ + + struct + { + __IOM uint32_t CFTS : 16; /*!< [15..0] Common FIFO Timestamp Field */ + uint32_t : 12; + __IOM uint32_t CFDLC : 4; /*!< [31..28] Common FIFO Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IOM uint32_t FDSTS; /*!< (@ 0x00000008) Common FIFO Access CAN-FD Status Register */ + + struct + { + __IOM uint32_t CFESI : 1; /*!< [0..0] Error State Indicator bit */ + __IOM uint32_t CFBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IOM uint32_t CFFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IOM uint32_t CFIFL : 2; /*!< [9..8] Common FIFO Buffer Information Label Field */ + uint32_t : 6; + __IOM uint32_t CFPTR : 16; /*!< [31..16] Common FIFO Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + __IOM uint8_t DF[64]; /*!< (@ 0x0000000C) Common FIFO Access Data Field Registers */ + + struct + { + __IOM uint8_t CFDB : 8; /*!< [7..0] Common FIFO Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDCF_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDTM [CFDTM] (TX Message Buffer Access Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) TX Message Buffer ID Register */ + + struct + { + __IOM uint32_t TMID : 29; /*!< [28..0] TX Message Buffer ID Field */ + uint32_t : 1; + __IOM uint32_t TMRTR : 1; /*!< [30..30] TX Message Buffer RTR Frame */ + __IOM uint32_t TMIDE : 1; /*!< [31..31] TX Message Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IOM uint32_t PTR; /*!< (@ 0x00000004) TX Message Buffer Pointer Register */ + + struct + { + __IOM uint32_t TMTS : 16; /*!< [15..0] TX Message Buffer Timestamp Field */ + uint32_t : 12; + __IOM uint32_t TMDLC : 4; /*!< [31..28] TX Message Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IOM uint32_t FDCTR; /*!< (@ 0x00000008) TX Message Buffer CAN-FD Control Register */ + + struct + { + __IOM uint32_t TMESI : 1; /*!< [0..0] Error State Indicator bit */ + __IOM uint32_t TMBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IOM uint32_t TMFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IOM uint32_t TMIFL : 2; /*!< [9..8] TX Message Buffer Information Label Field */ + uint32_t : 6; + __IOM uint32_t TMPTR : 16; /*!< [31..16] TX Message Buffer Pointer Field */ + } FDCTR_b; + }; + + union + { + __IOM uint8_t DF[64]; /*!< (@ 0x0000000C) TX Message Buffer Data Field Registers */ + + struct + { + __IOM uint8_t TMDB : 8; /*!< [7..0] TX Message Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDTM_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDRM_RM [RM] (RX Message Buffer Access Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ID; /*!< (@ 0x00000000) RX Message Buffer ID Register */ + + struct + { + __IM uint32_t RMID : 29; /*!< [28..0] RX Message Buffer ID Field */ + uint32_t : 1; + __IM uint32_t RMRTR : 1; /*!< [30..30] RX Message Buffer RTR Frame */ + __IM uint32_t RMIDE : 1; /*!< [31..31] RX Message Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IM uint32_t PTR; /*!< (@ 0x00000004) RX Message Buffer Pointer Register */ + + struct + { + __IM uint32_t RMTS : 16; /*!< [15..0] RX Message Buffer Timestamp Field */ + uint32_t : 12; + __IM uint32_t RMDLC : 4; /*!< [31..28] RX Message Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IM uint32_t FDSTS; /*!< (@ 0x00000008) RX Message Buffer CAN-FD Status Register */ + + struct + { + __IM uint32_t RMESI : 1; /*!< [0..0] Error State Indicator bit */ + __IM uint32_t RMBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IM uint32_t RMFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IM uint32_t RMIFL : 2; /*!< [9..8] RX Message Buffer Information Label Field */ + uint32_t : 6; + __IM uint32_t RMPTR : 16; /*!< [31..16] RX Message Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + __IM uint8_t DF[64]; /*!< (@ 0x0000000C) RX Message Buffer Data Field Registers */ + + struct + { + __IM uint8_t RMDB : 8; /*!< [7..0] RX Message Buffer Data Byte */ + } DF_b[64]; + }; +} R_CANFD_CFDRM_RM_Type; /*!< Size = 76 (0x4c) */ + +/** + * @brief R_CANFD_CFDRM [CFDRM] (RX Message Buffer Access Clusters) + */ +typedef struct +{ + __IOM R_CANFD_CFDRM_RM_Type RM[8]; /*!< (@ 0x00000000) RX Message Buffer Access Registers */ + __IM uint32_t RESERVED[104]; +} R_CANFD_CFDRM_Type; /*!< Size = 1024 (0x400) */ + +/** + * @brief R_ELC_ELSEGR [ELSEGR] (Event Link Software Event Generation Register) + */ +typedef struct +{ + union + { + __IOM uint8_t BY; /*!< (@ 0x00000000) Event Link Software Event Generation Register */ + + struct + { + __OM uint8_t SEG : 1; /*!< [0..0] Software Event Generation */ + uint8_t : 5; + __IOM uint8_t WE : 1; /*!< [6..6] SEG Bit Write Enable */ + __OM uint8_t WI : 1; /*!< [7..7] ELSEGR Register Write Disable */ + } BY_b; + }; + __IM uint8_t RESERVED; +} R_ELC_ELSEGR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_ELC_ELSR [ELSR] (Event Link Setting Register [0..30]) + */ +typedef struct +{ + union + { + __IOM uint16_t HA; /*!< (@ 0x00000000) Event Link Setting Register */ + + struct + { + __IOM uint16_t ELS : 9; /*!< [8..0] Event Link Select */ + uint16_t : 7; + } HA_b; + }; + __IM uint16_t RESERVED; +} R_ELC_ELSR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_GLCDC_BG [BG] (Background Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t EN; /*!< (@ 0x00000000) Background Plane Setting Operation Control Register */ + + struct + { + __IOM uint32_t EN : 1; /*!< [0..0] Background plane generation module operation enable */ + uint32_t : 7; + __IOM uint32_t VEN : 1; /*!< [8..8] Control of LCDC internal register value reflection to + * internal operations */ + uint32_t : 7; + __IOM uint32_t SWRST : 1; /*!< [16..16] Entire module SW reset control */ + uint32_t : 15; + } EN_b; + }; + + union + { + __IOM uint32_t PERI; /*!< (@ 0x00000004) Background Plane Setting Free-Running Period + * Register */ + + struct + { + __IOM uint32_t FH : 11; /*!< [10..0] Background plane horizontal synchronization signal period + * on the basis of pixel clock (PXCLK). */ + uint32_t : 5; + __IOM uint32_t FV : 11; /*!< [26..16] Background plane vertical synchronization signal period + * on the basis of line. */ + uint32_t : 5; + } PERI_b; + }; + + union + { + __IOM uint32_t SYNC; /*!< (@ 0x00000008) Background Plane Setting Synchronization Position + * Register */ + + struct + { + __IOM uint32_t HP : 4; /*!< [3..0] Background plane horizontal synchronization signal assertion + * position on the basis of pixel clock (PXCLK). */ + uint32_t : 12; + __IOM uint32_t VP : 4; /*!< [19..16] Background plane vertical synchronization signal assertion + * position on the basis of line. */ + uint32_t : 12; + } SYNC_b; + }; + + union + { + __IOM uint32_t VSIZE; /*!< (@ 0x0000000C) Background Plane Setting Full Image Vertical + * Size Register */ + + struct + { + __IOM uint32_t VW : 11; /*!< [10..0] Background plane vertical valid pixel width on the basis + * of line */ + uint32_t : 5; + __IOM uint32_t VP : 11; /*!< [26..16] Background plane vertical valid pixel start position + * on the basis of line */ + uint32_t : 5; + } VSIZE_b; + }; + + union + { + __IOM uint32_t HSIZE; /*!< (@ 0x00000010) Background Plane Setting Full Image Horizontal + * Size Register */ + + struct + { + __IOM uint32_t HW : 11; /*!< [10..0] Background plane horizontall valid pixel width on the + * basis of pixel clock (PXCLK) Note: When serial RGB is selected + * as the output format for the output control block, add + * two to the horizontal enable signal width and set the resulting + * value to this field. */ + uint32_t : 5; + __IOM uint32_t HP : 11; /*!< [26..16] Background plane horizontal valid pixel start position + * on the basis of pixel clock (PXCLK). */ + uint32_t : 5; + } HSIZE_b; + }; + + union + { + __IOM uint32_t BGC; /*!< (@ 0x00000014) Background Plane Setting Background Color Register */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B value for background plane valid pixel area Unsigned; + * 8-bit integer */ + __IOM uint32_t G : 8; /*!< [15..8] G value for background plane valid pixel area Unsigned; + * 8-bit integer */ + __IOM uint32_t R : 8; /*!< [23..16] R value for background plane valid pixel area. Unsigned; + * 8-bit integer. */ + uint32_t : 8; + } BGC_b; + }; + + union + { + __IM uint32_t MON; /*!< (@ 0x00000018) Background Plane Setting Status Monitor Register */ + + struct + { + __IM uint32_t EN : 1; /*!< [0..0] Background plane generation module operation state monitor. */ + uint32_t : 7; + __IM uint32_t VEN : 1; /*!< [8..8] Entire module internal operation reflection control signal + * monitor. The signal state for controlling reflection of + * the register values to the internal operations upon assertion + * of the vertical synchronization signal. */ + uint32_t : 7; + __IM uint32_t SWRST : 1; /*!< [16..16] Entire module SW reset state monitor. */ + uint32_t : 15; + } MON_b; + }; +} R_GLCDC_BG_Type; /*!< Size = 28 (0x1c) */ + +/** + * @brief R_GLCDC_GR [GR] (Layer Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t VEN; /*!< (@ 0x00000000) Graphics Register Update Control Register */ + + struct + { + __IOM uint32_t PVEN : 1; /*!< [0..0] Control of graphics n module register value reflection + * to internal operations. Reflection of the register values + * to the internal operation at the assertion of the vertical + * synchronization signal (VS). */ + uint32_t : 31; + } VEN_b; + }; + + union + { + __IOM uint32_t FLMRD; /*!< (@ 0x00000004) Graphics Frame Buffer Read Control Register */ + + struct + { + __IOM uint32_t RENB : 1; /*!< [0..0] Graphics data (frame buffer data) read enable. */ + uint32_t : 31; + } FLMRD_b; + }; + + union + { + __IM uint32_t FLM1; /*!< (@ 0x00000008) Graphics Frame Buffer Control Register 1 */ + + struct + { + __IM uint32_t BSTMD : 2; /*!< [1..0] Burst transfer control for graphics data (frame buffer + * data) access */ + uint32_t : 30; + } FLM1_b; + }; + + union + { + __IOM uint32_t FLM2; /*!< (@ 0x0000000C) Graphics Frame Buffer Control Register 2 */ + + struct + { + __IOM uint32_t BASE : 32; /*!< [31..0] Base address for accessing graphics data (frame buffer + * data) Set the head address in the frame buffer where graphics + * data is to be stored. GRn_FLM2.BASE[5:0] should be fixed + * to 0 during 64-byte burst transfer. */ + } FLM2_b; + }; + + union + { + __IOM uint32_t FLM3; /*!< (@ 0x00000010) Graphics Frame Buffer Control Register 3 */ + + struct + { + uint32_t : 16; + __IOM uint32_t LNOFF : 16; /*!< [31..16] Macro line offset address for accessing graphics data + * (frame buffer data) Signed; 16-bit integer */ + } FLM3_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t FLM5; /*!< (@ 0x00000018) Graphics Frame Buffer Control Register 5 */ + + struct + { + __IOM uint32_t DATANUM : 16; /*!< [15..0] Number of data transfer times per line for accessing + * graphics data (frame buffer data), where one transfer is + * defined as 16-beat burst access (64-byte boundary) */ + __IOM uint32_t LNNUM : 11; /*!< [26..16] Number of lines per frame for accessing graphics data + * (frame buffer data). */ + uint32_t : 5; + } FLM5_b; + }; + + union + { + __IOM uint32_t FLM6; /*!< (@ 0x0000001C) Graphics Frame Buffer Control Register 6 */ + + struct + { + uint32_t : 28; + __IOM uint32_t FORMAT : 3; /*!< [30..28] Data format for accessing graphics data (frame buffer + * data). */ + uint32_t : 1; + } FLM6_b; + }; + + union + { + __IOM uint32_t AB1; /*!< (@ 0x00000020) Graphics Alpha Blending Control Register 1 */ + + struct + { + __IOM uint32_t DISPSEL : 2; /*!< [1..0] Graphics display plane control. */ + uint32_t : 2; + __IOM uint32_t GRCDISPON : 1; /*!< [4..4] Graphics image area border display control. */ + uint32_t : 3; + __IOM uint32_t ARCDISPON : 1; /*!< [8..8] Image area border display control for rectangular area + * alpha blending. */ + uint32_t : 3; + __IOM uint32_t ARCON : 1; /*!< [12..12] Rectangular area alpha blending control. */ + uint32_t : 19; + } AB1_b; + }; + + union + { + __IOM uint32_t AB2; /*!< (@ 0x00000024) Graphics Alpha Blending Control Register 2 */ + + struct + { + __IOM uint32_t GRCVW : 11; /*!< [10..0] Vertical width of graphics image area. */ + uint32_t : 5; + __IOM uint32_t GRCVS : 11; /*!< [26..16] Vertical start position of graphics image area. */ + uint32_t : 5; + } AB2_b; + }; + + union + { + __IOM uint32_t AB3; /*!< (@ 0x00000028) Graphics Alpha Blending Control Register 3 */ + + struct + { + __IOM uint32_t GRCHW : 11; /*!< [10..0] Horizontal width of graphics image area. */ + uint32_t : 5; + __IOM uint32_t GRCHS : 11; /*!< [26..16] Horizontal start position of graphics image area. */ + uint32_t : 5; + } AB3_b; + }; + + union + { + __IOM uint32_t AB4; /*!< (@ 0x0000002C) Graphics Alpha Blending Control Register 4 */ + + struct + { + __IOM uint32_t ARCVW : 11; /*!< [10..0] Vertical width of rectangular area alpha blending image + * area. */ + uint32_t : 5; + __IOM uint32_t ARCVS : 11; /*!< [26..16] Vertical start position of rectangular area alpha blending + * image area */ + uint32_t : 5; + } AB4_b; + }; + + union + { + __IOM uint32_t AB5; /*!< (@ 0x00000030) Graphics Alpha Blending Control Register 5 */ + + struct + { + __IOM uint32_t ARCHW : 11; /*!< [10..0] Horizontal width of rectangular area alpha blending + * image area. */ + uint32_t : 5; + __IOM uint32_t ARCHS : 11; /*!< [26..16] Horizontal start position of rectangular area alpha + * blending image area. */ + uint32_t : 5; + } AB5_b; + }; + + union + { + __IOM uint32_t AB6; /*!< (@ 0x00000034) Graphics Alpha Blending Control Register 6 */ + + struct + { + __IOM uint32_t ARCRATE : 8; /*!< [7..0] Frame rate for alpha blending in rectangular area. */ + uint32_t : 8; + __IOM uint32_t ARCCOEF : 9; /*!< [24..16] Alpha coefficient for alpha blending in rectangular + * area (-255 to 255). [8]: Sign (0: addition, 1: subtraction) + * [7:0]: Variation (absolute value) */ + uint32_t : 7; + } AB6_b; + }; + + union + { + __IOM uint32_t AB7; /*!< (@ 0x00000038) Graphics Alpha Blending Control Register 7 */ + + struct + { + __IOM uint32_t CKON : 1; /*!< [0..0] RGB-index chroma-key processing control. */ + uint32_t : 15; + __IOM uint32_t ARCDEF : 8; /*!< [23..16] Initial alpha value for alpha blending in rectangular + * area. */ + uint32_t : 8; + } AB7_b; + }; + + union + { + __IOM uint32_t AB8; /*!< (@ 0x0000003C) Graphics Alpha Blending Control Register 8 */ + + struct + { + __IOM uint32_t CKKR : 8; /*!< [7..0] R signal for RGB-index chroma-key processing Unsigned; + * 8 bits. */ + __IOM uint32_t CKKB : 8; /*!< [15..8] B signal for RGB-index chroma-key processing Unsigned; + * 8 bits. */ + __IOM uint32_t CKKG : 8; /*!< [23..16] G signal for RGB-index chroma-key processing Unsigned; + * 8 bits. */ + uint32_t : 8; + } AB8_b; + }; + + union + { + __IOM uint32_t AB9; /*!< (@ 0x00000040) Graphics Alpha Blending Control Register 9 */ + + struct + { + __IOM uint32_t CKR : 8; /*!< [7..0] R value after RGB-index chroma-key processing replacement + * Unsigned; 8 bits. */ + __IOM uint32_t CKB : 8; /*!< [15..8] B value after RGB-index chroma-key processing replacement + * Unsigned; 8 bits. */ + __IOM uint32_t CKG : 8; /*!< [23..16] G value after RGB-index chroma-key processing replacement + * Unsigned; 8 bits. */ + __IOM uint32_t CKA : 8; /*!< [31..24] A value after RGB-index chroma-key processing replacement. */ + } AB9_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t BASE; /*!< (@ 0x0000004C) Graphics Background Color Control Register */ + + struct + { + __IOM uint32_t R : 8; /*!< [7..0] Background color R value Unsigned; 8 bits */ + __IOM uint32_t B : 8; /*!< [15..8] Background color B value Unsigned; 8 bits */ + __IOM uint32_t G : 8; /*!< [23..16] Background color G value Unsigned; 8 bits */ + uint32_t : 8; + } BASE_b; + }; + + union + { + __IOM uint32_t CLUTINT; /*!< (@ 0x00000050) Graphics CLUT Table Interrupt Control Register */ + + struct + { + __IOM uint32_t LINE : 11; /*!< [10..0] Number of detection lines */ + uint32_t : 5; + __IOM uint32_t SEL : 1; /*!< [16..16] CLUT table control */ + uint32_t : 15; + } CLUTINT_b; + }; + + union + { + __IM uint32_t MON; /*!< (@ 0x00000054) Graphics Status Monitor Register */ + + struct + { + __IM uint32_t ARCST : 1; /*!< [0..0] Status monitor for alpha blending in rectangular area */ + uint32_t : 15; + __IM uint32_t UNDFLST : 1; /*!< [16..16] Status monitor for underflow */ + uint32_t : 15; + } MON_b; + }; + __IM uint32_t RESERVED2[42]; +} R_GLCDC_GR_Type; /*!< Size = 256 (0x100) */ + +/** + * @brief R_GLCDC_GAM [GAM] (Gamma Settings) + */ +typedef struct +{ + union + { + __IOM uint32_t LATCH; /*!< (@ 0x00000000) Gamma Register Update Control Register */ + + struct + { + __IOM uint32_t VEN : 1; /*!< [0..0] Control of gamma correction x module register value reflection + * to internal operations. The register values to be reflected + * to the internal operations at the assertion of the vertical + * synchronization signal (VS). */ + uint32_t : 31; + } LATCH_b; + }; + + union + { + __IOM uint32_t GAM_SW; /*!< (@ 0x00000004) Gamma Correction Block Function Switch Register */ + + struct + { + __IOM uint32_t GAMON : 1; /*!< [0..0] Gamma correction on/off control */ + uint32_t : 31; + } GAM_SW_b; + }; + + union + { + __IOM uint32_t LUT[8]; /*!< (@ 0x00000008) Gamma Correction Block Table Setting Register */ + + struct + { + __IOM uint32_t _HIGH : 11; /*!< [10..0] Gain value of area 0. Unsigned 11-bit fixed point. */ + uint32_t : 5; + __IOM uint32_t _LOW : 11; /*!< [26..16] Gain value of area 0. Unsigned 11-bit fixed point. */ + uint32_t : 5; + } LUT_b[8]; + }; + + union + { + __IOM uint32_t AREA[5]; /*!< (@ 0x00000028) Gamma Correction Block Area Setting Register */ + + struct + { + __IOM uint32_t _HIGH : 10; /*!< [9..0] Start threshold of area 1 Unsigned 10-bit integer */ + __IOM uint32_t _MID : 10; /*!< [19..10] Start threshold of area 1 Unsigned 10-bit integer */ + __IOM uint32_t _LOW : 10; /*!< [29..20] Start threshold of area 1 Unsigned 10-bit integer */ + uint32_t : 2; + } AREA_b[5]; + }; + __IM uint32_t RESERVED; +} R_GLCDC_GAM_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_GLCDC_OUT [OUT] (Output Control Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t VLATCH; /*!< (@ 0x00000000) Output Control Block Register Update Control + * Register */ + + struct + { + __IOM uint32_t VEN : 1; /*!< [0..0] Control of output control module register value reflection + * to internal operations. The register values to be reflected + * to the internal operations at the assertion of the vertical + * synchronization signal (VS). */ + uint32_t : 31; + } VLATCH_b; + }; + + union + { + __IOM uint32_t SET; /*!< (@ 0x00000004) Output Control Block Output Interface Register */ + + struct + { + __IOM uint32_t PHASE : 2; /*!< [1..0] Data delay in serial RGB format (based on OUTCLK) */ + uint32_t : 2; + __IOM uint32_t DIRSEL : 1; /*!< [4..4] Invalid data position control in serial RGB format */ + uint32_t : 3; + __IOM uint32_t FRQSEL : 2; /*!< [9..8] Clock frequency division control */ + uint32_t : 2; + __IOM uint32_t FORMAT : 2; /*!< [13..12] Output format select */ + uint32_t : 10; + __IOM uint32_t SWAPON : 1; /*!< [24..24] Pixel order control */ + uint32_t : 3; + __IOM uint32_t ENDIANON : 1; /*!< [28..28] Bit endian change control */ + uint32_t : 3; + } SET_b; + }; + + union + { + __IOM uint32_t BRIGHT1; /*!< (@ 0x00000008) Output Control Block Brightness Correction Register + * 1 */ + + struct + { + __IOM uint32_t BRTG : 10; /*!< [9..0] Brightness (DC) adjustment of G signal Unsigned; 10 bits; + +512 with offset; integer */ + uint32_t : 22; + } BRIGHT1_b; + }; + + union + { + __IOM uint32_t BRIGHT2; /*!< (@ 0x0000000C) Output Control Block Brightness Correction Register + * 2 */ + + struct + { + __IOM uint32_t BRTR : 10; /*!< [9..0] Brightness (DC) adjustment of R signal Unsigned; 10 bits; + +512 with offset; integer */ + uint32_t : 6; + __IOM uint32_t BRTB : 10; /*!< [25..16] Brightness (DC) adjustment of B signal Unsigned; 10 + * bits; +512 with offset; integer */ + uint32_t : 6; + } BRIGHT2_b; + }; + + union + { + __IOM uint32_t CONTRAST; /*!< (@ 0x00000010) Output Control Block Contrast Correction Register */ + + struct + { + __IOM uint32_t CONTR : 8; /*!< [7..0] Contrast (GAIN) adjustment of R signal Unsigned; 8 bits + * fixed point */ + __IOM uint32_t CONTB : 8; /*!< [15..8] Contrast (GAIN) adjustment of B signal Unsigned; 8 bits + * fixed point */ + __IOM uint32_t CONTG : 8; /*!< [23..16] Contrast (GAIN) adjustment of G signal Unsigned; 8 + * bits fixed point. */ + uint32_t : 8; + } CONTRAST_b; + }; + + union + { + __IOM uint32_t PDTHA; /*!< (@ 0x00000014) Output Control Block Panel Dither Correction + * Register */ + + struct + { + __IOM uint32_t PD : 2; /*!< [1..0] Pattern value (D) of 2 x 2 pattern dither Unsigned 2-bit + * integer */ + uint32_t : 2; + __IOM uint32_t PC : 2; /*!< [5..4] Pattern value (C) of 2 x 2 pattern dither Unsigned 2-bit + * integer */ + uint32_t : 2; + __IOM uint32_t PB : 2; /*!< [9..8] Pattern value (B) of 2 x 2 pattern dither Unsigned 2-bit + * integer */ + uint32_t : 2; + __IOM uint32_t PA : 2; /*!< [13..12] Pattern value (A) of 2 x 2 pattern dither Unsigned + * 2-bit integer */ + uint32_t : 2; + __IOM uint32_t FORM : 2; /*!< [17..16] Output format select */ + uint32_t : 2; + __IOM uint32_t SEL : 2; /*!< [21..20] Operation mode */ + uint32_t : 10; + } PDTHA_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t CLKPHASE; /*!< (@ 0x00000024) Output Control Block Output Phase Control Register */ + + struct + { + uint32_t : 3; + __IOM uint32_t TCON3EDGE : 1; /*!< [3..3] LCD_TCON3 Output Phase Control */ + __IOM uint32_t TCON2EDGE : 1; /*!< [4..4] LCD_TCON2 Output Phase Control */ + __IOM uint32_t TCON1EDGE : 1; /*!< [5..5] LCD_TCON1 Output Phase Control */ + __IOM uint32_t TCON0EDGE : 1; /*!< [6..6] LCD_TCON0 Output Phase Control */ + uint32_t : 1; + __IOM uint32_t LCDEDGE : 1; /*!< [8..8] LCD_DATA Output Phase Control */ + uint32_t : 3; + __IOM uint32_t FRONTGAM : 1; /*!< [12..12] Correction control */ + uint32_t : 19; + } CLKPHASE_b; + }; +} R_GLCDC_OUT_Type; /*!< Size = 40 (0x28) */ + +/** + * @brief R_GLCDC_TCON [TCON] (Timing Control Registers) + */ +typedef struct +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t TIM; /*!< (@ 0x00000004) TCON Reference Timing Setting Register */ + + struct + { + __IOM uint32_t OFFSET : 11; /*!< [10..0] Horizontal synchronization signal generation reference + * timing Sets the offset from the assertion of the internal + * horizontal synchronization signal in terms of pixels. */ + uint32_t : 5; + __IOM uint32_t HALF : 11; /*!< [26..16] Vertical synchronization signal generation change timing + * Sets the delay from the assertion of the internal horizontal + * synchronization signal in terms of pixels. */ + uint32_t : 5; + } TIM_b; + }; + + union + { + __IOM uint32_t STVA1; /*!< (@ 0x00000008) TCON Vertical Timing Setting Register A1 */ + + struct + { + __IOM uint32_t VW : 11; /*!< [10..0] STVx1 second change timing Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t VS : 11; /*!< [26..16] STVx1 first change timing */ + uint32_t : 5; + } STVA1_b; + }; + + union + { + __IOM uint32_t STVA2; /*!< (@ 0x0000000C) TCON Vertical Timing Setting Register A2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for VSOUT (controlled by + * TCON_STVA2 register)/VEOUT (controlled by the TCON_STVB2 + * register) pin */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control */ + uint32_t : 27; + } STVA2_b; + }; + + union + { + __IOM uint32_t STVB1; /*!< (@ 0x00000010) TCON Vertical Timing Setting Register B1 */ + + struct + { + __IOM uint32_t VW : 11; /*!< [10..0] STVx1 second change timing Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t VS : 11; /*!< [26..16] STVx1 first change timing */ + uint32_t : 5; + } STVB1_b; + }; + + union + { + __IOM uint32_t STVB2; /*!< (@ 0x00000014) TCON Vertical Timing Setting Register B2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for VSOUT (controlled by + * TCON_STVA2 register)/VEOUT (controlled by the TCON_STVB2 + * register) pin */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control */ + uint32_t : 27; + } STVB2_b; + }; + + union + { + __IOM uint32_t STHA1; /*!< (@ 0x00000018) TCON Horizontal Timing Setting Register STHA1 */ + + struct + { + __IOM uint32_t HW : 11; /*!< [10..0] STHx1 second change timing. Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t HS : 11; /*!< [26..16] STHx1 first change timing */ + uint32_t : 5; + } STHA1_b; + }; + + union + { + __IOM uint32_t STHA2; /*!< (@ 0x0000001C) TCON Horizontal Timing Setting Register STHA2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for LCD_TCON2 (controlled + * by TCON_STHA2 register)/LCD_TCON3 (controlled by the TCON_STHB2 + * register) pin. */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control. */ + uint32_t : 3; + __IOM uint32_t HSSEL : 1; /*!< [8..8] STHx signal generation reference timing control. */ + uint32_t : 23; + } STHA2_b; + }; + + union + { + __IOM uint32_t STHB1; /*!< (@ 0x00000020) TCON Horizontal Timing Setting Register STHB1 */ + + struct + { + __IOM uint32_t HW : 11; /*!< [10..0] STHx1 second change timing. Sets the signal assertion + * width. */ + uint32_t : 5; + __IOM uint32_t HS : 11; /*!< [26..16] STHx1 first change timing */ + uint32_t : 5; + } STHB1_b; + }; + + union + { + __IOM uint32_t STHB2; /*!< (@ 0x00000024) TCON Horizontal Timing Setting Register STHB2 */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Output signal select control for LCD_TCON2 (controlled + * by TCON_STHA2 register)/LCD_TCON3 (controlled by the TCON_STHB2 + * register) pin. */ + uint32_t : 1; + __IOM uint32_t INV : 1; /*!< [4..4] STVx signal polarity inversion control. */ + uint32_t : 3; + __IOM uint32_t HSSEL : 1; /*!< [8..8] STHx signal generation reference timing control. */ + uint32_t : 23; + } STHB2_b; + }; + + union + { + __IOM uint32_t DE; /*!< (@ 0x00000028) TCON Data Enable Polarity Setting Register */ + + struct + { + __IOM uint32_t INV : 1; /*!< [0..0] DE signal polarity inversion control. */ + uint32_t : 31; + } DE_b; + }; +} R_GLCDC_TCON_Type; /*!< Size = 44 (0x2c) */ + +/** + * @brief R_GLCDC_SYSCNT [SYSCNT] (GLCDC System Control Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t DTCTEN; /*!< (@ 0x00000000) System control block State Detection Control + * Register */ + + struct + { + __IOM uint32_t VPOSDTC : 1; /*!< [0..0] Specified line detection control */ + __IOM uint32_t L1UNDFDTC : 1; /*!< [1..1] Graphics 1 underflow detection control */ + __IOM uint32_t L2UNDFDTC : 1; /*!< [2..2] Graphics 2 underflow detection control */ + uint32_t : 29; + } DTCTEN_b; + }; + + union + { + __IOM uint32_t INTEN; /*!< (@ 0x00000004) System control block Interrupt Request Enable + * Control Register */ + + struct + { + __IOM uint32_t VPOSINTEN : 1; /*!< [0..0] Interrupt request signal GLCDC_VPOS enable control. */ + __IOM uint32_t L1UNDFINTEN : 1; /*!< [1..1] Interrupt request signal GLCDC_L1UNDF enable control. */ + __IOM uint32_t L2UNDFINTEN : 1; /*!< [2..2] Interrupt request signal GLCDC_L2UNDF enable control. */ + uint32_t : 29; + } INTEN_b; + }; + + union + { + __IOM uint32_t STCLR; /*!< (@ 0x00000008) System control block Status Clear Register */ + + struct + { + __IOM uint32_t VPOSCLR : 1; /*!< [0..0] Graphics 2 specified line detection flag clear field */ + __IOM uint32_t L1UNDFCLR : 1; /*!< [1..1] Graphics 1 underflow detection flag clear field */ + __IOM uint32_t L2UNDFCLR : 1; /*!< [2..2] Graphics 2 underflow detection flag clear field */ + uint32_t : 29; + } STCLR_b; + }; + + union + { + __IM uint32_t STMON; /*!< (@ 0x0000000C) System control block Status Monitor Register */ + + struct + { + __IM uint32_t VPOS : 1; /*!< [0..0] Graphics 2 specified line detection flag */ + __IM uint32_t L1UNDF : 1; /*!< [1..1] Graphics 1 underflow detection flag */ + __IM uint32_t L2UNDF : 1; /*!< [2..2] Graphics 2 underflow detection flag */ + uint32_t : 29; + } STMON_b; + }; + + union + { + __IOM uint32_t PANEL_CLK; /*!< (@ 0x00000010) System control block Version and Panel Clock + * Control Register */ + + struct + { + __IOM uint32_t DCDR : 6; /*!< [5..0] Clock division ratio setting control Refer toTable 2.7.1 + * for details about setting value. Note: Settings that are + * not listed in table 2.7.1 are prohibited. */ + __IOM uint32_t CLKEN : 1; /*!< [6..6] Panel clock output enable control Note: Before changing + * the PIXSEL,CLKSEL or DCDR bit, this bit must be set to + * 0. */ + uint32_t : 1; + __IOM uint32_t CLKSEL : 1; /*!< [8..8] Panel clock supply source select */ + uint32_t : 3; + __IOM uint32_t PIXSEL : 1; /*!< [12..12] Pixel clock select control. Must be set to the same + * value as OUT_SET.FRQSEL[1]. */ + uint32_t : 3; + __IM uint32_t VER : 16; /*!< [31..16] Version information Version information of the GLCDC */ + } PANEL_CLK_b; + }; +} R_GLCDC_SYSCNT_Type; /*!< Size = 20 (0x14) */ + +/** + * @brief R_IIC0_SAR [SAR] (Slave Address Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t L; /*!< (@ 0x00000000) Slave Address Register L */ + + struct + { + __IOM uint8_t SVA : 8; /*!< [7..0] A slave address is set.7-Bit Address = SVA[7:1] 10-Bit + * Address = { SVA9,SVA8,SVA[7:0] } */ + } L_b; + }; + + union + { + __IOM uint8_t U; /*!< (@ 0x00000001) Slave Address Register U */ + + struct + { + __IOM uint8_t FS : 1; /*!< [0..0] 7-Bit/10-Bit Address Format Selection */ + __IOM uint8_t SVA8 : 1; /*!< [1..1] 10-Bit Address(bit8) */ + __IOM uint8_t SVA9 : 1; /*!< [2..2] 10-Bit Address(bit9) */ + uint8_t : 5; + } U_b; + }; +} R_IIC0_SAR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_MPU_MMPU_GROUP_REGION [REGION] (Address region control) + */ +typedef struct +{ + union + { + __IOM uint16_t AC; /*!< (@ 0x00000000) Access Control Register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Region enable */ + __IOM uint16_t RP : 1; /*!< [1..1] Read protection */ + __IOM uint16_t WP : 1; /*!< [2..2] Write protection */ + __IOM uint16_t PP : 1; /*!< [3..3] Privilege protection */ + uint16_t : 12; + } AC_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint32_t S; /*!< (@ 0x00000004) Start Address Register */ + + struct + { + __IOM uint32_t MMPUS : 32; /*!< [31..0] Address where the region starts, for use in region determination. + * NOTE: Some low-order bits are fixed to 0. */ + } S_b; + }; + + union + { + __IOM uint32_t E; /*!< (@ 0x00000008) End Address Register */ + + struct + { + __IOM uint32_t MMPUE : 32; /*!< [31..0] Region end address registerAddress where the region + * end, for use in region determination. NOTE: Some low-order + * bits are fixed to 1. */ + } E_b; + }; + __IM uint32_t RESERVED1; +} R_MPU_MMPU_GROUP_REGION_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_MPU_MMPU_GROUP [GROUP] ([DMAC0..NPU] MMPU Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t EN; /*!< (@ 0x00000000) MMPU enable register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Bus master MPU of DMAC enable */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } EN_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t ENPT; /*!< (@ 0x00000004) MMPU enable protect register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register EN */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } ENPT_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t RPT; /*!< (@ 0x00000008) MMPU Regions Protect Register Non-Secure */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } RPT_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t RPT_SEC; /*!< (@ 0x0000000C) MMPU Regions Protect Register Secure (DMAC only) */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } RPT_SEC_b; + }; + __IM uint16_t RESERVED3; + __IM uint32_t RESERVED4[60]; + __IOM R_MPU_MMPU_GROUP_REGION_Type REGION[8]; /*!< (@ 0x00000100) Address region control */ + __IM uint32_t RESERVED5[32]; +} R_MPU_MMPU_GROUP_Type; /*!< Size = 512 (0x200) */ + +/** + * @brief R_MPU_SPMON_SP [SP] (Stack Pointer Monitor) + */ +typedef struct +{ + union + { + __IOM uint16_t OAD; /*!< (@ 0x00000000) Stack Pointer Monitor Operation After Detection + * Register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Operation after detection */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } OAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t CTL; /*!< (@ 0x00000004) Stack Pointer Monitor Access Control Register */ + + struct + { + __IOM uint16_t ENABLE : 1; /*!< [0..0] Stack Pointer Monitor Enable */ + uint16_t : 7; + __IOM uint16_t ERROR : 1; /*!< [8..8] Stack Pointer Monitor Error Flag */ + uint16_t : 7; + } CTL_b; + }; + + union + { + __IOM uint16_t PT; /*!< (@ 0x00000006) Stack Pointer Monitor Protection Register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register (MSPMPUAC, MSPMPUSA and MSPMPUSE) */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } PT_b; + }; + + union + { + __IOM uint32_t SA; /*!< (@ 0x00000008) Stack Pointer Monitor Start Address Register */ + + struct + { + __IOM uint32_t MSPMPUSA : 32; /*!< [31..0] Region start address register Address where the region + * starts, for use in region determination.NOTE: Range: 0x1FF00000-0x200FFFF + * The low-order 2 bits are fixed to 0. */ + } SA_b; + }; + + union + { + __IOM uint32_t EA; /*!< (@ 0x0000000C) Stack Pointer Monitor End Address Register */ + + struct + { + __IOM uint32_t MSPMPUEA : 32; /*!< [31..0] Region end address register Address where the region + * starts, for use in region determination.NOTE: Range: 0x1FF00003-0x200FFFF + * The low-order 2 bits are fixed to 1. */ + } EA_b; + }; +} R_MPU_SPMON_SP_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_PFS_PORT_PIN [PIN] (Pin Function Selects) + */ +typedef struct +{ + union + { + union + { + __IOM uint32_t PmnPFS; /*!< (@ 0x00000000) Pin Function Control Register */ + + struct + { + __IOM uint32_t PODR : 1; /*!< [0..0] Port Output Data */ + __IM uint32_t PIDR : 1; /*!< [1..1] Port Input Data */ + __IOM uint32_t PDR : 1; /*!< [2..2] Port Direction */ + uint32_t : 1; + __IOM uint32_t PCR : 1; /*!< [4..4] Pull-up Control */ + uint32_t : 1; + __IOM uint32_t NCODR : 1; /*!< [6..6] N-Channel Open Drain Control */ + uint32_t : 3; + __IOM uint32_t DSCR : 2; /*!< [11..10] Drive Strength Control Register */ + __IOM uint32_t EOFR : 2; /*!< [13..12] Event on Falling/Event on Rising. */ + __IOM uint32_t ISEL : 1; /*!< [14..14] IRQ input enable */ + __IOM uint32_t ASEL : 1; /*!< [15..15] Analog Input enable */ + __IOM uint32_t PMR : 1; /*!< [16..16] Port Mode Control */ + uint32_t : 7; + __IOM uint32_t PSEL : 5; /*!< [28..24] Port Function SelectThese bits select the peripheral + * function. For individual pin functions, see the MPC table */ + uint32_t : 3; + } PmnPFS_b; + }; + + union + { + __IOM uint16_t PmnPFS_HA; /*!< (@ 0x00000000) Pin Function Control Register */ + + struct + { + __IOM uint16_t PODR : 1; /*!< [0..0] Port Output Data */ + __IM uint16_t PIDR : 1; /*!< [1..1] Port Input Data */ + __IOM uint16_t PDR : 1; /*!< [2..2] Port Direction */ + uint16_t : 1; + __IOM uint16_t PCR : 1; /*!< [4..4] Pull-up Control */ + uint16_t : 1; + __IOM uint16_t NCODR : 1; /*!< [6..6] N-Channel Open Drain Control */ + uint16_t : 3; + __IOM uint16_t DSCR : 2; /*!< [11..10] Drive Strength Control Register */ + __IOM uint16_t EOFR : 2; /*!< [13..12] Event on Falling/Event on Rising. */ + __IOM uint16_t ISEL : 1; /*!< [14..14] IRQ input enable */ + __IOM uint16_t ASEL : 1; /*!< [15..15] Analog Input enable */ + } PmnPFS_HA_b; + }; + + union + { + __IOM uint8_t PmnPFS_BY; /*!< (@ 0x00000000) Pin Function Control Register */ + + struct + { + __IOM uint8_t PODR : 1; /*!< [0..0] Port Output Data */ + __IM uint8_t PIDR : 1; /*!< [1..1] Port Input Data */ + __IOM uint8_t PDR : 1; /*!< [2..2] Port Direction */ + uint8_t : 1; + __IOM uint8_t PCR : 1; /*!< [4..4] Pull-up Control */ + uint8_t : 1; + __IOM uint8_t NCODR : 1; /*!< [6..6] N-Channel Open Drain Control */ + uint8_t : 1; + } PmnPFS_BY_b; + }; + }; +} R_PFS_PORT_PIN_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_PFS_PORT [PORT] (Port [0..14]) + */ +typedef struct +{ + __IOM R_PFS_PORT_PIN_Type PIN[16]; /*!< (@ 0x00000000) Pin Function Selects */ +} R_PFS_PORT_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_PMISC_PMSAR [PMSAR] (Port Security Attribution Register) + */ +typedef struct +{ + __IOM uint16_t PMSAR; /*!< (@ 0x00000000) Port Security Attribution Register */ + __IM uint16_t RESERVED; +} R_PMISC_PMSAR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_RTC_RTCCR [RTCCR] (Time Capture Control Register) + */ +typedef struct +{ + union + { + __IOM uint8_t RTCCR; /*!< (@ 0x00000000) Time Capture Control Register */ + + struct + { + __IOM uint8_t TCCT : 2; /*!< [1..0] Time Capture Control */ + __IM uint8_t TCST : 1; /*!< [2..2] Time Capture Status */ + uint8_t : 1; + __IOM uint8_t TCNF : 2; /*!< [5..4] Time Capture Noise Filter Control */ + uint8_t : 1; + __IOM uint8_t TCEN : 1; /*!< [7..7] Time Capture Event Input Pin Enable */ + } RTCCR_b; + }; + __IM uint8_t RESERVED; +} R_RTC_RTCCR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_RTC_CP [CP] (Capture registers) + */ +typedef struct +{ + __IM uint8_t RESERVED[2]; + + union + { + union + { + __IM uint8_t RSEC; /*!< (@ 0x00000002) Second Capture Register */ + + struct + { + __IM uint8_t SEC1 : 4; /*!< [3..0] 1-Second Capture Capture value for the ones place of + * seconds */ + __IM uint8_t SEC10 : 3; /*!< [6..4] 10-Second Capture Capture value for the tens place of + * seconds */ + uint8_t : 1; + } RSEC_b; + }; + + union + { + __IM uint8_t BCNT0; /*!< (@ 0x00000002) BCNT0 Capture Register */ + + struct + { + __IM uint8_t BCNT0CP : 8; /*!< [7..0] BCNT0CP is a read-only register that captures the BCNT0 + * value when a time capture event is detected. */ + } BCNT0_b; + }; + }; + __IM uint8_t RESERVED1; + + union + { + union + { + __IM uint8_t RMIN; /*!< (@ 0x00000004) Minute Capture Register */ + + struct + { + __IM uint8_t MIN1 : 4; /*!< [3..0] 1-Minute Capture Capture value for the ones place of + * minutes */ + __IM uint8_t MIN10 : 3; /*!< [6..4] 10-Minute Capture Capture value for the tens place of + * minutes */ + uint8_t : 1; + } RMIN_b; + }; + + union + { + __IM uint8_t BCNT1; /*!< (@ 0x00000004) BCNT1 Capture Register */ + + struct + { + __IM uint8_t BCNT1CP : 8; /*!< [7..0] BCNT1CP is a read-only register that captures the BCNT1 + * value when a time capture event is detected. */ + } BCNT1_b; + }; + }; + __IM uint8_t RESERVED2; + + union + { + union + { + __IM uint8_t RHR; /*!< (@ 0x00000006) Hour Capture Register */ + + struct + { + __IM uint8_t HR1 : 4; /*!< [3..0] 1-Minute Capture Capture value for the ones place of + * minutes */ + __IM uint8_t HR10 : 2; /*!< [5..4] 10-Minute Capture Capture value for the tens place of + * minutes */ + __IM uint8_t PM : 1; /*!< [6..6] A.m./p.m. select for time counter setting. */ + uint8_t : 1; + } RHR_b; + }; + + union + { + __IM uint8_t BCNT2; /*!< (@ 0x00000006) BCNT2 Capture Register */ + + struct + { + __IM uint8_t BCNT2CP : 8; /*!< [7..0] BCNT2CP is a read-only register that captures the BCNT2 + * value when a time capture event is detected. */ + } BCNT2_b; + }; + }; + __IM uint8_t RESERVED3[3]; + + union + { + union + { + __IM uint8_t RDAY; /*!< (@ 0x0000000A) Date Capture Register */ + + struct + { + __IM uint8_t DATE1 : 4; /*!< [3..0] 1-Day Capture Capture value for the ones place of minutes */ + __IM uint8_t DATE10 : 2; /*!< [5..4] 10-Day Capture Capture value for the tens place of minutes */ + uint8_t : 2; + } RDAY_b; + }; + + union + { + __IM uint8_t BCNT3; /*!< (@ 0x0000000A) BCNT3 Capture Register */ + + struct + { + __IM uint8_t BCNT3CP : 8; /*!< [7..0] BCNT3CP is a read-only register that captures the BCNT3 + * value when a time capture event is detected. */ + } BCNT3_b; + }; + }; + __IM uint8_t RESERVED4; + + union + { + __IM uint8_t RMON; /*!< (@ 0x0000000C) Month Capture Register */ + + struct + { + __IM uint8_t MON1 : 4; /*!< [3..0] 1-Month Capture Capture value for the ones place of months */ + __IM uint8_t MON10 : 1; /*!< [4..4] 10-Month Capture Capture value for the tens place of + * months */ + uint8_t : 3; + } RMON_b; + }; + __IM uint8_t RESERVED5[3]; +} R_RTC_CP_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_USB_FS0_PIPE_TR [PIPE_TR] (Pipe Transaction Counter Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t E; /*!< (@ 0x00000000) Pipe Transaction Counter Enable Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t TRCLR : 1; /*!< [8..8] Transaction Counter Clear */ + __IOM uint16_t TRENB : 1; /*!< [9..9] Transaction Counter Enable */ + uint16_t : 6; + } E_b; + }; + + union + { + __IOM uint16_t N; /*!< (@ 0x00000002) Pipe Transaction Counter Register */ + + struct + { + __IOM uint16_t TRNCNT : 16; /*!< [15..0] Transaction Counter */ + } N_b; + }; +} R_USB_FS0_PIPE_TR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_USB_HS0_PIPE_TR [PIPE_TR] (Pipe Transaction Counter Registers) + */ +typedef struct +{ + union + { + __IOM uint16_t E; /*!< (@ 0x00000000) PIPE Transaction Counter Enable Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t TRCLR : 1; /*!< [8..8] Transaction Counter ClearSetting this bit to 1 allows + * clearing the transaction counter to 0. */ + __IOM uint16_t TRENB : 1; /*!< [9..9] Transaction Counter EnableEnables or disables the transaction + * counter function. */ + uint16_t : 6; + } E_b; + }; + + union + { + __IOM uint16_t N; /*!< (@ 0x00000002) PIPE Transaction Counter Register */ + + struct + { + __IOM uint16_t TRNCNT : 16; /*!< [15..0] Transaction CounterWhen writing to: Specify the number + * of total packets (number of transactions) to be received + * by the relevant PIPE.When read from: When TRENB = 0: Indicate + * the specified number of transactions.When TRENB = 1: Indicate + * the number of currently counted transactions. */ + } N_b; + }; +} R_USB_HS0_PIPE_TR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_XSPI_CMCFGCS [CMCFGCS] (xSPI Command Map Configuration registers) + */ +typedef struct +{ + union + { + __IOM uint32_t CMCFG0; /*!< (@ 0x00000000) xSPI Command Map Configuration register 0 */ + + struct + { + __IOM uint32_t FFMT : 2; /*!< [1..0] Frame format */ + __IOM uint32_t ADDSIZE : 2; /*!< [3..2] Address size */ + __IOM uint32_t WPBSTMD : 1; /*!< [4..4] Wrapping burst mode */ + __IOM uint32_t ARYAMD : 1; /*!< [5..5] Array address mode */ + uint32_t : 10; + __IOM uint32_t ADDRPEN : 8; /*!< [23..16] Address Replace Enable */ + __IOM uint32_t ADDRPCD : 8; /*!< [31..24] Address Replace Code */ + } CMCFG0_b; + }; + + union + { + __IOM uint32_t CMCFG1; /*!< (@ 0x00000004) xSPI Command Map Configuration register 1 */ + + struct + { + __IOM uint32_t RDCMD : 16; /*!< [15..0] Read command */ + __IOM uint32_t RDLATE : 5; /*!< [20..16] Read latency cycle */ + uint32_t : 11; + } CMCFG1_b; + }; + + union + { + __IOM uint32_t CMCFG2; /*!< (@ 0x00000008) xSPI Command Map Configuration register 2 */ + + struct + { + __IOM uint32_t WRCMD : 16; /*!< [15..0] Write command */ + __IOM uint32_t WRLATE : 5; /*!< [20..16] Write latency cycle */ + uint32_t : 11; + } CMCFG2_b; + }; + __IM uint32_t RESERVED; +} R_XSPI_CMCFGCS_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_XSPI_CDBUF [CDBUF] (xSPI BUF register) + */ +typedef struct +{ + union + { + __IOM uint32_t CDT; /*!< (@ 0x00000000) xSPI Command Manual Type buf */ + + struct + { + __IOM uint32_t CMDSIZE : 2; /*!< [1..0] Command Size */ + __IOM uint32_t ADDSIZE : 3; /*!< [4..2] Address size */ + __IOM uint32_t DATASIZE : 4; /*!< [8..5] Write/Read Data Size */ + __IOM uint32_t LATE : 5; /*!< [13..9] Latency cycle */ + uint32_t : 1; + __IOM uint32_t TRTYPE : 1; /*!< [15..15] Transaction Type */ + __IOM uint32_t CMD : 16; /*!< [31..16] Command (1-2byte) */ + } CDT_b; + }; + + union + { + __IOM uint32_t CDA; /*!< (@ 0x00000004) xSPI Command Manual Address buf */ + + struct + { + __IOM uint32_t ADD : 32; /*!< [31..0] Address */ + } CDA_b; + }; + + union + { + __IOM uint32_t CDD0; /*!< (@ 0x00000008) xSPI Command Manual Data 0 buf */ + + struct + { + __IOM uint32_t DATA : 32; /*!< [31..0] Write/Read Data */ + } CDD0_b; + }; + + union + { + __IOM uint32_t CDD1; /*!< (@ 0x0000000C) xSPI Command Manual Data 1 buf */ + + struct + { + __IOM uint32_t DATA : 32; /*!< [31..0] Write/Read Data */ + } CDD1_b; + }; +} R_XSPI_CDBUF_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_XSPI_CCCTLCS [CCCTLCS] (xSPI CS register) + */ +typedef struct +{ + union + { + __IOM uint32_t CCCTL0; /*!< (@ 0x00000000) xSPI Command Calibration Control register 0 */ + + struct + { + __IOM uint32_t CAEN : 1; /*!< [0..0] Automatic Calibration Enable */ + __IOM uint32_t CANOWR : 1; /*!< [1..1] Calibration no write mode */ + uint32_t : 6; + __IOM uint32_t CAITV : 5; /*!< [12..8] Calibration interval */ + uint32_t : 3; + __IOM uint32_t CASFTSTA : 5; /*!< [20..16] Calibration DS shift start value */ + uint32_t : 3; + __IOM uint32_t CASFTEND : 5; /*!< [28..24] Calibration DS shift end value */ + uint32_t : 3; + } CCCTL0_b; + }; + + union + { + __IOM uint32_t CCCTL1; /*!< (@ 0x00000004) xSPI Command Calibration Control register 1 */ + + struct + { + __IOM uint32_t CACMDSIZE : 2; /*!< [1..0] Command Size */ + __IOM uint32_t CAADDSIZE : 3; /*!< [4..2] Address size */ + __IOM uint32_t CADATASIZE : 4; /*!< [8..5] Write/Read Data Size */ + uint32_t : 7; + __IOM uint32_t CAWRLATE : 5; /*!< [20..16] Write Latency cycle */ + uint32_t : 3; + __IOM uint32_t CARDLATE : 5; /*!< [28..24] Read Latency cycle */ + uint32_t : 3; + } CCCTL1_b; + }; + + union + { + __IOM uint32_t CCCTL2; /*!< (@ 0x00000008) xSPI Command Calibration Control register 2 */ + + struct + { + __IOM uint32_t CAWRCMD : 16; /*!< [15..0] Calibration pattern write command */ + __IOM uint32_t CARDCMD : 16; /*!< [31..16] Calibration pattern read command */ + } CCCTL2_b; + }; + + union + { + __IOM uint32_t CCCTL3; /*!< (@ 0x0000000C) xSPI Command Calibration Control register 3 */ + + struct + { + __IOM uint32_t CAADD : 32; /*!< [31..0] Calibration pattern address */ + } CCCTL3_b; + }; + + union + { + __IOM uint32_t CCCTL4; /*!< (@ 0x00000010) xSPI Command Calibration Control register 4 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL4_b; + }; + + union + { + __IOM uint32_t CCCTL5; /*!< (@ 0x00000014) xSPI Command Calibration Control register 5 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL5_b; + }; + + union + { + __IOM uint32_t CCCTL6; /*!< (@ 0x00000018) xSPI Command Calibration Control register 6 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL6_b; + }; + + union + { + __IOM uint32_t CCCTL7; /*!< (@ 0x0000001C) xSPI Command Calibration Control register 7 */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL7_b; + }; +} R_XSPI_CCCTLCS_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_AGTX0_AGT16_CTRL [CTRL] (CTRL) + */ +typedef struct +{ + union + { + __IOM uint8_t AGTCR; /*!< (@ 0x00000000) AGT Control Register */ + + struct + { + __IOM uint8_t TSTART : 1; /*!< [0..0] AGT count start */ + __IM uint8_t TCSTF : 1; /*!< [1..1] AGT count status flag */ + __OM uint8_t TSTOP : 1; /*!< [2..2] AGT count forced stop */ + uint8_t : 1; + __IOM uint8_t TEDGF : 1; /*!< [4..4] Active edge judgment flag */ + __IOM uint8_t TUNDF : 1; /*!< [5..5] Underflow flag */ + __IOM uint8_t TCMAF : 1; /*!< [6..6] Compare match A flag */ + __IOM uint8_t TCMBF : 1; /*!< [7..7] Compare match B flag */ + } AGTCR_b; + }; + + union + { + __IOM uint8_t AGTMR1; /*!< (@ 0x00000001) AGT Mode Register 1 */ + + struct + { + __IOM uint8_t TMOD : 3; /*!< [2..0] Operating mode */ + __IOM uint8_t TEDGPL : 1; /*!< [3..3] Edge polarity */ + __IOM uint8_t TCK : 3; /*!< [6..4] Count source */ + uint8_t : 1; + } AGTMR1_b; + }; + + union + { + __IOM uint8_t AGTMR2; /*!< (@ 0x00000002) AGT Mode Register 2 */ + + struct + { + __IOM uint8_t CKS : 3; /*!< [2..0] AGTLCLK/AGTSCLK count source clock frequency division + * ratio */ + uint8_t : 4; + __IOM uint8_t LPM : 1; /*!< [7..7] Low Power Mode */ + } AGTMR2_b; + }; + + union + { + __IOM uint8_t AGTIOSEL_ALT; /*!< (@ 0x00000003) AGT Pin Select Register */ + + struct + { + __IOM uint8_t SEL : 2; /*!< [1..0] AGTIO pin select */ + uint8_t : 2; + __IOM uint8_t TIES : 1; /*!< [4..4] AGTIO input enable */ + uint8_t : 3; + } AGTIOSEL_ALT_b; + }; + + union + { + __IOM uint8_t AGTIOC; /*!< (@ 0x00000004) AGT I/O Control Register */ + + struct + { + __IOM uint8_t TEDGSEL : 1; /*!< [0..0] I/O polarity switchFunction varies depending on the operating + * mode. */ + uint8_t : 1; + __IOM uint8_t TOE : 1; /*!< [2..2] AGTOn output enable */ + uint8_t : 1; + __IOM uint8_t TIPF : 2; /*!< [5..4] Input filter */ + __IOM uint8_t TIOGT : 2; /*!< [7..6] Count control */ + } AGTIOC_b; + }; + + union + { + __IOM uint8_t AGTISR; /*!< (@ 0x00000005) AGT Event Pin Select Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t EEPS : 1; /*!< [2..2] AGTEE polarty selection */ + uint8_t : 5; + } AGTISR_b; + }; + + union + { + __IOM uint8_t AGTCMSR; /*!< (@ 0x00000006) AGT Compare Match Function Select Register */ + + struct + { + __IOM uint8_t TCMEA : 1; /*!< [0..0] Compare match A register enable */ + __IOM uint8_t TOEA : 1; /*!< [1..1] AGTOA output enable */ + __IOM uint8_t TOPOLA : 1; /*!< [2..2] AGTOA polarity select */ + uint8_t : 1; + __IOM uint8_t TCMEB : 1; /*!< [4..4] Compare match B register enable */ + __IOM uint8_t TOEB : 1; /*!< [5..5] AGTOB output enable */ + __IOM uint8_t TOPOLB : 1; /*!< [6..6] AGTOB polarity select */ + uint8_t : 1; + } AGTCMSR_b; + }; + + union + { + __IOM uint8_t AGTIOSEL; /*!< (@ 0x00000007) AGT Pin Select Register */ + + struct + { + __IOM uint8_t SEL : 2; /*!< [1..0] AGTIO pin select */ + uint8_t : 2; + __IOM uint8_t TIES : 1; /*!< [4..4] AGTIO input enable */ + uint8_t : 3; + } AGTIOSEL_b; + }; +} R_AGTX0_AGT16_CTRL_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_AGTX0_AGT16 [AGT16] (AGT (16-bit) peripheral registers) + */ +typedef struct +{ + union + { + __IOM uint16_t AGT; /*!< (@ 0x00000000) AGT Counter Register */ + + struct + { + __IOM uint16_t AGT : 16; /*!< [15..0] 16bit counter and reload register. NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, the 16-bit + * counter is forcibly stopped and set to FFFFH. */ + } AGT_b; + }; + + union + { + __IOM uint16_t AGTCMA; /*!< (@ 0x00000002) AGT Compare Match A Register */ + + struct + { + __IOM uint16_t AGTCMA : 16; /*!< [15..0] AGT Compare Match A data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, set to + * FFFFH */ + } AGTCMA_b; + }; + + union + { + __IOM uint16_t AGTCMB; /*!< (@ 0x00000004) AGT Compare Match B Register */ + + struct + { + __IOM uint16_t AGTCMB : 16; /*!< [15..0] AGT Compare Match B data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCR register, set to + * FFFFH */ + } AGTCMB_b; + }; + __IM uint16_t RESERVED; + __IOM R_AGTX0_AGT16_CTRL_Type CTRL; /*!< (@ 0x00000008) CTRL */ +} R_AGTX0_AGT16_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_AGTX0_AGT32 [AGT32] (AGTW (32-bit) peripheral registers) + */ +typedef struct +{ + union + { + __IOM uint32_t AGT; /*!< (@ 0x00000000) AGT 32-bit Counter Register */ + + struct + { + __IOM uint32_t AGT : 32; /*!< [31..0] 32bit counter and reload register. NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, the 16-bit + * counter is forcibly stopped and set to FFFFH. */ + } AGT_b; + }; + + union + { + __IOM uint32_t AGTCMA; /*!< (@ 0x00000004) AGT Compare Match A Register */ + + struct + { + __IOM uint32_t AGTCMA : 32; /*!< [31..0] AGT Compare Match A data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCRn register, set to + * FFFFH */ + } AGTCMA_b; + }; + + union + { + __IOM uint32_t AGTCMB; /*!< (@ 0x00000008) AGT Compare Match B Register */ + + struct + { + __IOM uint32_t AGTCMB : 32; /*!< [31..0] AGT Compare Match B data is stored.NOTE : When 1 is + * written to the TSTOP bit in the AGTCR register, set to + * FFFFH */ + } AGTCMB_b; + }; + __IOM R_AGTX0_AGT16_CTRL_Type CTRL; /*!< (@ 0x0000000C) CTRL */ +} R_AGTX0_AGT32_Type; /*!< Size = 20 (0x14) */ + +/** + * @brief R_OFS_DATAFLASH_CFGDLOCK_CFGD [CFGD] (Configuration Data [0..1] Lock Bits) + */ +typedef struct +{ + union + { + __IM uint32_t CFGD_L; /*!< (@ 0x00000000) Configuration Data Lock Bits Lower Word */ + + struct + { + __IM uint32_t CDLK0 : 1; /*!< [0..0] Configuration Data Lock Bit */ + __IM uint32_t CDLK1 : 1; /*!< [1..1] Configuration Data Lock Bit */ + __IM uint32_t CDLK2 : 1; /*!< [2..2] Configuration Data Lock Bit */ + __IM uint32_t CDLK3 : 1; /*!< [3..3] Configuration Data Lock Bit */ + __IM uint32_t CDLK4 : 1; /*!< [4..4] Configuration Data Lock Bit */ + __IM uint32_t CDLK5 : 1; /*!< [5..5] Configuration Data Lock Bit */ + __IM uint32_t CDLK6 : 1; /*!< [6..6] Configuration Data Lock Bit */ + __IM uint32_t CDLK7 : 1; /*!< [7..7] Configuration Data Lock Bit */ + __IM uint32_t CDLK8 : 1; /*!< [8..8] Configuration Data Lock Bit */ + __IM uint32_t CDLK9 : 1; /*!< [9..9] Configuration Data Lock Bit */ + __IM uint32_t CDLK10 : 1; /*!< [10..10] Configuration Data Lock Bit */ + __IM uint32_t CDLK11 : 1; /*!< [11..11] Configuration Data Lock Bit */ + __IM uint32_t CDLK12 : 1; /*!< [12..12] Configuration Data Lock Bit */ + __IM uint32_t CDLK13 : 1; /*!< [13..13] Configuration Data Lock Bit */ + __IM uint32_t CDLK14 : 1; /*!< [14..14] Configuration Data Lock Bit */ + __IM uint32_t CDLK15 : 1; /*!< [15..15] Configuration Data Lock Bit */ + __IM uint32_t CDLK16 : 1; /*!< [16..16] Configuration Data Lock Bit */ + __IM uint32_t CDLK17 : 1; /*!< [17..17] Configuration Data Lock Bit */ + __IM uint32_t CDLK18 : 1; /*!< [18..18] Configuration Data Lock Bit */ + __IM uint32_t CDLK19 : 1; /*!< [19..19] Configuration Data Lock Bit */ + __IM uint32_t CDLK20 : 1; /*!< [20..20] Configuration Data Lock Bit */ + __IM uint32_t CDLK21 : 1; /*!< [21..21] Configuration Data Lock Bit */ + __IM uint32_t CDLK22 : 1; /*!< [22..22] Configuration Data Lock Bit */ + __IM uint32_t CDLK23 : 1; /*!< [23..23] Configuration Data Lock Bit */ + __IM uint32_t CDLK24 : 1; /*!< [24..24] Configuration Data Lock Bit */ + __IM uint32_t CDLK25 : 1; /*!< [25..25] Configuration Data Lock Bit */ + __IM uint32_t CDLK26 : 1; /*!< [26..26] Configuration Data Lock Bit */ + __IM uint32_t CDLK27 : 1; /*!< [27..27] Configuration Data Lock Bit */ + __IM uint32_t CDLK28 : 1; /*!< [28..28] Configuration Data Lock Bit */ + __IM uint32_t CDLK29 : 1; /*!< [29..29] Configuration Data Lock Bit */ + __IM uint32_t CDLK30 : 1; /*!< [30..30] Configuration Data Lock Bit */ + __IM uint32_t CDLK31 : 1; /*!< [31..31] Configuration Data Lock Bit */ + } CFGD_L_b; + }; + + union + { + __IM uint32_t CFGD_H; /*!< (@ 0x00000004) Configuration Data Lock Bits Higher Word */ + + struct + { + __IM uint32_t CDLK32 : 1; /*!< [0..0] Configuration Data Lock Bit */ + __IM uint32_t CDLK33 : 1; /*!< [1..1] Configuration Data Lock Bit */ + __IM uint32_t CDLK34 : 1; /*!< [2..2] Configuration Data Lock Bit */ + __IM uint32_t CDLK35 : 1; /*!< [3..3] Configuration Data Lock Bit */ + __IM uint32_t CDLK36 : 1; /*!< [4..4] Configuration Data Lock Bit */ + __IM uint32_t CDLK37 : 1; /*!< [5..5] Configuration Data Lock Bit */ + __IM uint32_t CDLK38 : 1; /*!< [6..6] Configuration Data Lock Bit */ + __IM uint32_t CDLK39 : 1; /*!< [7..7] Configuration Data Lock Bit */ + __IM uint32_t CDLK40 : 1; /*!< [8..8] Configuration Data Lock Bit */ + __IM uint32_t CDLK41 : 1; /*!< [9..9] Configuration Data Lock Bit */ + __IM uint32_t CDLK42 : 1; /*!< [10..10] Configuration Data Lock Bit */ + __IM uint32_t CDLK43 : 1; /*!< [11..11] Configuration Data Lock Bit */ + __IM uint32_t CDLK44 : 1; /*!< [12..12] Configuration Data Lock Bit */ + __IM uint32_t CDLK45 : 1; /*!< [13..13] Configuration Data Lock Bit */ + __IM uint32_t CDLK46 : 1; /*!< [14..14] Configuration Data Lock Bit */ + __IM uint32_t CDLK47 : 1; /*!< [15..15] Configuration Data Lock Bit */ + __IM uint32_t CDLK48 : 1; /*!< [16..16] Configuration Data Lock Bit */ + __IM uint32_t CDLK49 : 1; /*!< [17..17] Configuration Data Lock Bit */ + __IM uint32_t CDLK50 : 1; /*!< [18..18] Configuration Data Lock Bit */ + __IM uint32_t CDLK51 : 1; /*!< [19..19] Configuration Data Lock Bit */ + __IM uint32_t CDLK52 : 1; /*!< [20..20] Configuration Data Lock Bit */ + __IM uint32_t CDLK53 : 1; /*!< [21..21] Configuration Data Lock Bit */ + __IM uint32_t CDLK54 : 1; /*!< [22..22] Configuration Data Lock Bit */ + __IM uint32_t CDLK55 : 1; /*!< [23..23] Configuration Data Lock Bit */ + __IM uint32_t CDLK56 : 1; /*!< [24..24] Configuration Data Lock Bit */ + __IM uint32_t CDLK57 : 1; /*!< [25..25] Configuration Data Lock Bit */ + __IM uint32_t CDLK58 : 1; /*!< [26..26] Configuration Data Lock Bit */ + __IM uint32_t CDLK59 : 1; /*!< [27..27] Configuration Data Lock Bit */ + __IM uint32_t CDLK60 : 1; /*!< [28..28] Configuration Data Lock Bit */ + __IM uint32_t CDLK61 : 1; /*!< [29..29] Configuration Data Lock Bit */ + __IM uint32_t CDLK62 : 1; /*!< [30..30] Configuration Data Lock Bit */ + __IM uint32_t CDLK63 : 1; /*!< [31..31] Configuration Data Lock Bit */ + } CFGD_H_b; + }; +} R_OFS_DATAFLASH_CFGDLOCK_CFGD_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_OFS_DATAFLASH_CFGDLOCK [CFGDLOCK] (Configuration Data Lock Bits) + */ +typedef struct +{ + __IOM R_OFS_DATAFLASH_CFGDLOCK_CFGD_Type CFGD0; /*!< (@ 0x00000000) Configuration Data 0 Lock Bits */ + __IOM R_OFS_DATAFLASH_CFGDLOCK_CFGD_Type CFGD1; /*!< (@ 0x00000008) Configuration Data 1 Lock Bits */ + + union + { + __IM uint16_t CFGD2; /*!< (@ 0x00000010) Configuration Data 2 Lock Bit */ + + struct + { + __IM uint16_t CDLK0 : 1; /*!< [0..0] Configuration Data Lock Bit */ + __IM uint16_t CDLK1 : 1; /*!< [1..1] Configuration Data Lock Bit */ + __IM uint16_t CDLK2 : 1; /*!< [2..2] Configuration Data Lock Bit */ + __IM uint16_t CDLK3 : 1; /*!< [3..3] Configuration Data Lock Bit */ + __IM uint16_t CDLK4 : 1; /*!< [4..4] Configuration Data Lock Bit */ + __IM uint16_t CDLK5 : 1; /*!< [5..5] Configuration Data Lock Bit */ + __IM uint16_t CDLK6 : 1; /*!< [6..6] Configuration Data Lock Bit */ + __IM uint16_t CDLK7 : 1; /*!< [7..7] Configuration Data Lock Bit */ + __IM uint16_t CDLK8 : 1; /*!< [8..8] Configuration Data Lock Bit */ + __IM uint16_t CDLK9 : 1; /*!< [9..9] Configuration Data Lock Bit */ + __IM uint16_t CDLK10 : 1; /*!< [10..10] Configuration Data Lock Bit */ + __IM uint16_t CDLK11 : 1; /*!< [11..11] Configuration Data Lock Bit */ + __IM uint16_t CDLK12 : 1; /*!< [12..12] Configuration Data Lock Bit */ + __IM uint16_t CDLK13 : 1; /*!< [13..13] Configuration Data Lock Bit */ + __IM uint16_t CDLK14 : 1; /*!< [14..14] Configuration Data Lock Bit */ + __IM uint16_t CDLK15 : 1; /*!< [15..15] Configuration Data Lock Bit */ + } CFGD2_b; + }; + __IM uint16_t RESERVED; +} R_OFS_DATAFLASH_CFGDLOCK_Type; /*!< Size = 20 (0x14) */ + +/** @} */ /* End of group Device_Peripheral_clusters */ + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripherals + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ R_ACMPHS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief High-Speed Analog Comparator (R_ACMPHS0) + */ + +typedef struct /*!< (@ 0x40236000) R_ACMPHS0 Structure */ +{ + union + { + __IOM uint8_t CMPCTL; /*!< (@ 0x00000000) Comparator Control Register */ + + struct + { + __IOM uint8_t CINV : 1; /*!< [0..0] Comparator output polarity selection */ + __IOM uint8_t COE : 1; /*!< [1..1] Comparator output enable */ + __IOM uint8_t CSTEN : 1; /*!< [2..2] Interrupt Select */ + __IOM uint8_t CEG : 2; /*!< [4..3] Selection of valid edge (Edge selector) */ + __IOM uint8_t CDFS : 2; /*!< [6..5] Noise filter selection */ + __IOM uint8_t HCMPON : 1; /*!< [7..7] Comparator operation control */ + } CMPCTL_b; + }; + __IM uint8_t RESERVED[3]; + + union + { + __IOM uint8_t CMPSEL0; /*!< (@ 0x00000004) Comparator Input Select Register */ + + struct + { + __IOM uint8_t CMPSEL : 4; /*!< [3..0] Comparator Input Selection */ + uint8_t : 4; + } CMPSEL0_b; + }; + __IM uint8_t RESERVED1[3]; + + union + { + __IOM uint8_t CMPSEL1; /*!< (@ 0x00000008) Comparator Reference Voltage Select Register */ + + struct + { + __IOM uint8_t CRVS : 6; /*!< [5..0] Reference Voltage Selection */ + uint8_t : 2; + } CMPSEL1_b; + }; + __IM uint8_t RESERVED2[3]; + + union + { + __IM uint8_t CMPMON; /*!< (@ 0x0000000C) Comparator Output Monitor Register */ + + struct + { + __IM uint8_t CMPMON : 1; /*!< [0..0] Comparator output monitor */ + uint8_t : 7; + } CMPMON_b; + }; + __IM uint8_t RESERVED3[3]; + + union + { + __IOM uint8_t CPIOC; /*!< (@ 0x00000010) Comparator Output Control Register */ + + struct + { + __IOM uint8_t CPOE : 1; /*!< [0..0] Comparator output selection */ + uint8_t : 6; + __IOM uint8_t VREFEN : 1; /*!< [7..7] Internal Vref enable */ + } CPIOC_b; + }; +} R_ACMPHS0_Type; /*!< Size = 17 (0x11) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief A/D Converter (R_ADC0) + */ + +typedef struct /*!< (@ 0x40332000) R_ADC0 Structure */ +{ + union + { + __IOM uint16_t ADCSR; /*!< (@ 0x00000000) A/D Control Register */ + + struct + { + __IOM uint16_t DBLANS : 5; /*!< [4..0] Double Trigger Channel SelectThese bits select one analog + * input channel for double triggered operation. The setting + * is only effective while double trigger mode is selected. */ + uint16_t : 1; + __IOM uint16_t GBADIE : 1; /*!< [6..6] Group B Scan End Interrupt Enable */ + __IOM uint16_t DBLE : 1; /*!< [7..7] Double Trigger Mode Select */ + __IOM uint16_t EXTRG : 1; /*!< [8..8] Trigger Select */ + __IOM uint16_t TRGE : 1; /*!< [9..9] Trigger Start Enable */ + __IOM uint16_t ADHSC : 1; /*!< [10..10] A/D Conversion Operation Mode Select */ + uint16_t : 1; + __IOM uint16_t ADIE : 1; /*!< [12..12] Scan End Interrupt Enable */ + __IOM uint16_t ADCS : 2; /*!< [14..13] Scan Mode Select */ + __IOM uint16_t ADST : 1; /*!< [15..15] A/D Conversion Start */ + } ADCSR_b; + }; + + union + { + __IOM uint8_t ADREF; /*!< (@ 0x00000002) A/D status register */ + + struct + { + __IOM uint8_t ADF : 1; /*!< [0..0] Scanning end flag bitThis bit is a status bit that becomes + * '1' while scanning. */ + uint8_t : 6; + __IM uint8_t ADSCACT : 1; /*!< [7..7] Scanning status bit */ + } ADREF_b; + }; + + union + { + __IOM uint8_t ADEXREF; /*!< (@ 0x00000003) A/D enhancing status register */ + + struct + { + __IOM uint8_t GBADF : 1; /*!< [0..0] Group B scanning end flag bit. */ + uint8_t : 7; + } ADEXREF_b; + }; + + union + { + __IOM uint16_t ADANSA[2]; /*!< (@ 0x00000004) A/D Channel Select Register */ + + struct + { + __IOM uint16_t ANSA0 : 1; /*!< [0..0] AN Input Select */ + __IOM uint16_t ANSA1 : 1; /*!< [1..1] AN Input Select */ + __IOM uint16_t ANSA2 : 1; /*!< [2..2] AN Input Select */ + __IOM uint16_t ANSA3 : 1; /*!< [3..3] AN Input Select */ + __IOM uint16_t ANSA4 : 1; /*!< [4..4] AN Input Select */ + __IOM uint16_t ANSA5 : 1; /*!< [5..5] AN Input Select */ + __IOM uint16_t ANSA6 : 1; /*!< [6..6] AN Input Select */ + __IOM uint16_t ANSA7 : 1; /*!< [7..7] AN Input Select */ + __IOM uint16_t ANSA8 : 1; /*!< [8..8] AN Input Select */ + __IOM uint16_t ANSA9 : 1; /*!< [9..9] AN Input Select */ + __IOM uint16_t ANSA10 : 1; /*!< [10..10] AN Input Select */ + __IOM uint16_t ANSA11 : 1; /*!< [11..11] AN Input Select */ + __IOM uint16_t ANSA12 : 1; /*!< [12..12] AN Input Select */ + __IOM uint16_t ANSA13 : 1; /*!< [13..13] AN Input Select */ + __IOM uint16_t ANSA14 : 1; /*!< [14..14] AN Input Select */ + __IOM uint16_t ANSA15 : 1; /*!< [15..15] AN Input Select */ + } ADANSA_b[2]; + }; + + union + { + __IOM uint16_t ADADS[2]; /*!< (@ 0x00000008) A/D-Converted Value Addition/Average Channel + * Select Register */ + + struct + { + __IOM uint16_t ADS0 : 1; /*!< [0..0] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS1 : 1; /*!< [1..1] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS2 : 1; /*!< [2..2] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS3 : 1; /*!< [3..3] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS4 : 1; /*!< [4..4] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS5 : 1; /*!< [5..5] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS6 : 1; /*!< [6..6] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS7 : 1; /*!< [7..7] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS8 : 1; /*!< [8..8] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS9 : 1; /*!< [9..9] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS10 : 1; /*!< [10..10] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS11 : 1; /*!< [11..11] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS12 : 1; /*!< [12..12] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS13 : 1; /*!< [13..13] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS14 : 1; /*!< [14..14] A/D-Converted Value Addition/Average Channel Select */ + __IOM uint16_t ADS15 : 1; /*!< [15..15] A/D-Converted Value Addition/Average Channel Select */ + } ADADS_b[2]; + }; + + union + { + __IOM uint8_t ADADC; /*!< (@ 0x0000000C) A/D-Converted Value Addition/Average Count Select + * Register */ + + struct + { + __IOM uint8_t ADC : 3; /*!< [2..0] Addition frequency selection bit.NOTE: AVEE bit is valid + * at the only setting of ADC[2:0] bits = 001b or 011b. When + * average mode is selected by setting the ADADC.AVEE bit + * to 1, do not set the addition count to three times (ADADC.ADC[2:0] + * = 010b) */ + uint8_t : 4; + __IOM uint8_t AVEE : 1; /*!< [7..7] Average Mode Enable. NOTE:When average mode is deselected + * by setting the ADADC.AVEE bit to 0, set the addition count + * to 1, 2, 3, 4 or 16-time conversion. 16-time conversion + * can only be used with 12-bit accuracy selected. NOTE: AVEE + * bit is valid at the only setting of ADC[2:0] bits = 001b + * or 011b. When average mode is selected by setting the ADADC.AVEE + * bit to 1, do not set the addition count to three times + * (ADADC.ADC[2:0] = 010b) */ + } ADADC_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t ADCER; /*!< (@ 0x0000000E) A/D Control Extended Register */ + + struct + { + uint16_t : 1; + __IOM uint16_t ADPRC : 2; /*!< [2..1] A/D Conversion Accuracy Specify */ + uint16_t : 1; + __IOM uint16_t DCE : 1; /*!< [4..4] Discharge Enable */ + __IOM uint16_t ACE : 1; /*!< [5..5] A/D Data Register Automatic Clearing Enable */ + uint16_t : 2; + __IOM uint16_t DIAGVAL : 2; /*!< [9..8] Self-Diagnosis Conversion Voltage Select */ + __IOM uint16_t DIAGLD : 1; /*!< [10..10] Self-Diagnosis Mode Select */ + __IOM uint16_t DIAGM : 1; /*!< [11..11] Self-Diagnosis Enable */ + uint16_t : 2; + __IOM uint16_t ADINV : 1; /*!< [14..14] Single-Ended Input A/D Converted Data Inversion Select */ + __IOM uint16_t ADRFMT : 1; /*!< [15..15] A/D Data Register Format Select */ + } ADCER_b; + }; + + union + { + __IOM uint16_t ADSTRGR; /*!< (@ 0x00000010) A/D Conversion Start Trigger Select Register */ + + struct + { + __IOM uint16_t TRSB : 6; /*!< [5..0] A/D Conversion Start Trigger Select for Group BSelect + * the A/D conversion start trigger for group B in group scan + * mode. */ + uint16_t : 2; + __IOM uint16_t TRSA : 6; /*!< [13..8] A/D Conversion Start Trigger SelectSelect the A/D conversion + * start trigger in single scan mode and continuous mode. + * In group scan mode, the A/D conversion start trigger for + * group A is selected. */ + uint16_t : 2; + } ADSTRGR_b; + }; + + union + { + __IOM uint16_t ADEXICR; /*!< (@ 0x00000012) A/D Conversion Extended Input Control Register */ + + struct + { + __IOM uint16_t TSSAD : 1; /*!< [0..0] Temperature Sensor Output A/D converted Value Addition/Average + * Mode Select */ + __IOM uint16_t OCSAD : 1; /*!< [1..1] Internal Reference Voltage A/D converted Value Addition/Average + * Mode Select */ + uint16_t : 6; + __IOM uint16_t TSSA : 1; /*!< [8..8] Temperature Sensor Output A/D Conversion Select */ + __IOM uint16_t OCSA : 1; /*!< [9..9] Internal Reference Voltage A/D Conversion Select */ + __IOM uint16_t TSSB : 1; /*!< [10..10] Temperature Sensor Output A/D Conversion Select for + * Group B in group scan mode. */ + __IOM uint16_t OCSB : 1; /*!< [11..11] Internal Reference Voltage A/D Conversion Select for + * Group B in group scan mode. */ + uint16_t : 2; + __IOM uint16_t EXSEL : 1; /*!< [14..14] Extended Analog Input Select */ + __IOM uint16_t EXOEN : 1; /*!< [15..15] Extended Analog Output Control */ + } ADEXICR_b; + }; + + union + { + __IOM uint16_t ADANSB[2]; /*!< (@ 0x00000014) A/D Channel Select Register B */ + + struct + { + __IOM uint16_t ANSB0 : 1; /*!< [0..0] AN Input Select */ + __IOM uint16_t ANSB1 : 1; /*!< [1..1] AN Input Select */ + __IOM uint16_t ANSB2 : 1; /*!< [2..2] AN Input Select */ + __IOM uint16_t ANSB3 : 1; /*!< [3..3] AN Input Select */ + __IOM uint16_t ANSB4 : 1; /*!< [4..4] AN Input Select */ + __IOM uint16_t ANSB5 : 1; /*!< [5..5] AN Input Select */ + __IOM uint16_t ANSB6 : 1; /*!< [6..6] AN Input Select */ + __IOM uint16_t ANSB7 : 1; /*!< [7..7] AN Input Select */ + __IOM uint16_t ANSB8 : 1; /*!< [8..8] AN Input Select */ + __IOM uint16_t ANSB9 : 1; /*!< [9..9] AN Input Select */ + __IOM uint16_t ANSB10 : 1; /*!< [10..10] AN Input Select */ + __IOM uint16_t ANSB11 : 1; /*!< [11..11] AN Input Select */ + __IOM uint16_t ANSB12 : 1; /*!< [12..12] AN Input Select */ + __IOM uint16_t ANSB13 : 1; /*!< [13..13] AN Input Select */ + __IOM uint16_t ANSB14 : 1; /*!< [14..14] AN Input Select */ + __IOM uint16_t ANSB15 : 1; /*!< [15..15] AN Input Select */ + } ADANSB_b[2]; + }; + + union + { + __IM uint16_t ADDBLDR; /*!< (@ 0x00000018) A/D Data Duplication Register */ + + struct + { + __IM uint16_t ADDBLDR : 16; /*!< [15..0] This is a 16-bit read-only register for storing the + * result of A/D conversion in response to the second trigger + * in double trigger mode. */ + } ADDBLDR_b; + }; + + union + { + __IM uint16_t ADTSDR; /*!< (@ 0x0000001A) A/D Temperature Sensor Data Register */ + + struct + { + __IM uint16_t ADTSDR : 16; /*!< [15..0] This is a 16-bit read-only register for storing the + * A/D conversion result of temperature sensor output. */ + } ADTSDR_b; + }; + + union + { + __IM uint16_t ADOCDR; /*!< (@ 0x0000001C) A/D Internal Reference Voltage Data Register */ + + struct + { + __IM uint16_t ADOCDR : 16; /*!< [15..0] This is a 16-bit read-only register for storing the + * A/D result of internal reference voltage. */ + } ADOCDR_b; + }; + + union + { + union + { + __IM uint16_t ADRD_RIGHT; /*!< (@ 0x0000001E) A/D Self-Diagnosis Data Register Right Justified */ + + struct + { + __IM uint16_t AD : 14; /*!< [13..0] A/D-converted value (right-justified)The format for + * data determine ADCER.ADRFMT and ADCER.ADPRC. */ + __IM uint16_t DIAGST : 2; /*!< [15..14] Self-Diagnosis Status */ + } ADRD_RIGHT_b; + }; + + union + { + __IM uint16_t ADRD_LEFT; /*!< (@ 0x0000001E) A/D Self-Diagnosis Data Register Left Justified */ + + struct + { + __IM uint16_t DIAGST : 2; /*!< [1..0] Self-Diagnosis Status */ + __IM uint16_t AD : 14; /*!< [15..2] A/D-converted value (right-justified)The format for + * data determine ADCER.ADRFMT and ADCER.ADPRC. */ + } ADRD_LEFT_b; + }; + }; + + union + { + __IM uint16_t ADDR[29]; /*!< (@ 0x00000020) A/D Data Register */ + + struct + { + __IM uint16_t ADDR : 16; /*!< [15..0] The ADDR register is a 16-bit read-only registers for + * storing the result of A/D conversion. */ + } ADDR_b[29]; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + __IM uint16_t RESERVED3; + + union + { + __IOM uint8_t ADAMPOFF; /*!< (@ 0x00000062) A/D RRAMP off state register */ + + struct + { + __IOM uint8_t OPOFF : 8; /*!< [7..0] OPOFF */ + } ADAMPOFF_b; + }; + + union + { + __IOM uint8_t ADTSTPR; /*!< (@ 0x00000063) A/D Test Protecting Release Register */ + + struct + { + __IOM uint8_t PRO : 1; /*!< [0..0] Test register protecting bit. */ + __IOM uint8_t B0WI : 1; /*!< [1..1] Bit 0 writing permission bit. */ + uint8_t : 6; + } ADTSTPR_b; + }; + + union + { + __IOM uint16_t ADDDACER; /*!< (@ 0x00000064) A/D RRAMP Discharge Period Register */ + + struct + { + __IOM uint16_t WRION : 5; /*!< [4..0] WRION */ + uint16_t : 3; + __IOM uint16_t WRIOFF : 5; /*!< [12..8] WRIOFF */ + uint16_t : 2; + __IOM uint16_t ADHS : 1; /*!< [15..15] ADHS */ + } ADDDACER_b; + }; + + union + { + __IOM uint16_t ADSHCR; /*!< (@ 0x00000066) A/D Sample and Hold Circuit Control Register */ + + struct + { + __IOM uint16_t SSTSH : 8; /*!< [7..0] Channel-Dedicated Sample-and-Hold Circuit Sampling Time + * Setting Set the sampling time (4 to 255 states) */ + __IOM uint16_t SHANS0 : 1; /*!< [8..8] AN000 sample-and-hold circuit Select */ + __IOM uint16_t SHANS1 : 1; /*!< [9..9] AN001 sample-and-hold circuit Select */ + __IOM uint16_t SHANS2 : 1; /*!< [10..10] AN002 sample-and-hold circuit Select */ + uint16_t : 5; + } ADSHCR_b; + }; + + union + { + __IOM uint16_t ADEXTSTR; /*!< (@ 0x00000068) A/D Enhancing Test Register */ + + struct + { + __IOM uint16_t SHTEST : 3; /*!< [2..0] Test mode bit for S&H circuit.Test mode bit of S&H circuit + * only for channel. */ + uint16_t : 1; + __IOM uint16_t SWTST : 2; /*!< [5..4] Test selection bit for pressure switch. */ + uint16_t : 2; + __IOM uint16_t SHTRM : 2; /*!< [9..8] Current adjustment trim bit for S&H circuit.Trim bit + * for adjustment to hardening of process. */ + uint16_t : 1; + __IOM uint16_t ADTRM3 : 1; /*!< [11..11] Trim bit 3 for A/D hard macro.3bit Flash comparator + * power save bit for A/D hard macro to hardening of process. */ + __IOM uint16_t ADTRM2 : 2; /*!< [13..12] Trim bit 2 for A/D hard macro.Bias adjustment trim + * bit for A/D hard macro to hardening of process. */ + __IOM uint16_t ADTRM1 : 2; /*!< [15..14] Trim bit 1 for A/D hard macro.Timing adjustment trim + * bit for A/D hard macro to hardening of process. */ + } ADEXTSTR_b; + }; + + union + { + __IOM uint16_t ADTSTRA; /*!< (@ 0x0000006A) A/D Test Register A */ + + struct + { + __IOM uint16_t ATBUSSEL : 1; /*!< [0..0] Analog test bus selection bit. */ + __IOM uint16_t TSTSWREF : 3; /*!< [3..1] Pressure switch refreshing setting bit for S&H circuit + * amplifier test.Refreshing the pressure switch that opens + * for the DAC output voltage charge period when the amplifier + * of the S&H circuit is tested only for the channel is set. */ + uint16_t : 1; + __IOM uint16_t OCSW : 1; /*!< [5..5] Internal reference voltage analog switch test control + * bit. */ + __IOM uint16_t TSSW : 1; /*!< [6..6] Temperature sensor output analogue switch test control + * bit */ + uint16_t : 1; + __IOM uint16_t ADTEST_AD : 4; /*!< [11..8] Test bit for A/D analog module Bit for test of A/D analog + * module Details are described to the bit explanation. */ + __IOM uint16_t ADTEST_IO : 4; /*!< [15..12] Test bit for analog I/ODetails are described to the + * bit explanation. */ + } ADTSTRA_b; + }; + + union + { + __IOM uint16_t ADTSTRB; /*!< (@ 0x0000006C) A/D Test Register B */ + + struct + { + __IOM uint16_t ADVAL : 15; /*!< [14..0] Signal input bit bit14-0 for A/D analog module test.It + * corresponds to ADVAL 14:0 input of A/D analog module. */ + uint16_t : 1; + } ADTSTRB_b; + }; + + union + { + __IOM uint16_t ADTSTRC; /*!< (@ 0x0000006E) A/D Test Register C */ + + struct + { + __IOM uint16_t ADMD : 8; /*!< [7..0] Bit for A/D analog module test.ADMODE 6:0 input of A/D + * analog module. */ + uint16_t : 4; + __IOM uint16_t SYNCERR : 1; /*!< [12..12] Synchronous analog to digital conversion error bit. */ + uint16_t : 3; + } ADTSTRC_b; + }; + + union + { + __IOM uint16_t ADTSTRD; /*!< (@ 0x00000070) A/D Test Register D */ + + struct + { + __IOM uint16_t ADVAL16 : 1; /*!< [0..0] Signal input bit bit16 for A/D analog module test.It + * corresponds to ADVAL 16 input of A/D analog module. */ + uint16_t : 15; + } ADTSTRD_b; + }; + + union + { + __IOM uint16_t ADSWTSTR0; /*!< (@ 0x00000072) A/D Channel Switch Test Control Register 0 */ + + struct + { + __IOM uint16_t CHSW00 : 1; /*!< [0..0] Channel switch test control bit. */ + __IOM uint16_t CHSW01 : 1; /*!< [1..1] Channel switch test control bit. */ + __IOM uint16_t CHSW02 : 1; /*!< [2..2] Channel switch test control bit. */ + __IOM uint16_t CHSW03 : 1; /*!< [3..3] Channel switch test control bit. */ + __IOM uint16_t CHSW04 : 1; /*!< [4..4] Channel switch test control bit. */ + __IOM uint16_t CHSW05 : 1; /*!< [5..5] Channel switch test control bit. */ + uint16_t : 10; + } ADSWTSTR0_b; + }; + + union + { + __IOM uint16_t ADSWTSTR1; /*!< (@ 0x00000074) A/D Channel Switch Test Control Register 1 */ + + struct + { + __IOM uint16_t CHSW16 : 1; /*!< [0..0] Channel switch test control bit. */ + __IOM uint16_t CHSW17 : 1; /*!< [1..1] Channel switch test control bit. */ + __IOM uint16_t CHSW18 : 1; /*!< [2..2] Channel switch test control bit. */ + __IOM uint16_t CHSW19 : 1; /*!< [3..3] Channel switch test control bit. */ + __IOM uint16_t CHSW20 : 1; /*!< [4..4] Channel switch test control bit. */ + __IOM uint16_t CHSW21 : 1; /*!< [5..5] Channel switch test control bit. */ + uint16_t : 10; + } ADSWTSTR1_b; + }; + + union + { + __IOM uint16_t ADSWTSTR2; /*!< (@ 0x00000076) A/D Channel Switch Test Control Register 2 */ + + struct + { + __IOM uint16_t EX0SW : 1; /*!< [0..0] Test control of 0 enhancing input channel switches bit + * (ANEX0 switch) */ + __IOM uint16_t EX1SW : 1; /*!< [1..1] Test control of one enhancing input channel switch bit + * (ANEX1 switch). */ + uint16_t : 2; + __IOM uint16_t SHBYPS0 : 1; /*!< [4..4] S&H circuit by-pass switch control bit 0. */ + __IOM uint16_t SHBYPS1 : 1; /*!< [5..5] S&H circuit by-pass switch control bit 1. */ + __IOM uint16_t SHBYPS2 : 1; /*!< [6..6] S&H circuit by-pass switch control bit 2. */ + uint16_t : 1; + __IOM uint16_t GRP0SW : 1; /*!< [8..8] Test control of 0 group switches bit. */ + __IOM uint16_t GRP1SW : 1; /*!< [9..9] Test control of one group switch bit. */ + __IOM uint16_t GRP2SW : 1; /*!< [10..10] Test control of two group switches bit */ + __IOM uint16_t GRP3SW : 1; /*!< [11..11] Test control of two group switches bit */ + __IOM uint16_t GRPEX1SW : 1; /*!< [12..12] Switch test control bit of enhancing analog ANEX1 */ + uint16_t : 3; + } ADSWTSTR2_b; + }; + __IM uint16_t RESERVED4; + + union + { + __IOM uint8_t ADDISCR; /*!< (@ 0x0000007A) A/D Disconnection Detection Control Register */ + + struct + { + __IOM uint8_t ADNDIS : 4; /*!< [3..0] The charging time */ + __IOM uint8_t CHARGE : 1; /*!< [4..4] Selection of Precharge or Discharge */ + uint8_t : 3; + } ADDISCR_b; + }; + + union + { + __IOM uint8_t ADSWCR; /*!< (@ 0x0000007B) A/D Pressure Switch Control Register */ + + struct + { + __IOM uint8_t ADSWREF : 3; /*!< [2..0] These bits are read as 0. The write value should be 0.Refreshing + * the pressure switch in A/D analog module is set. */ + uint8_t : 1; + __IOM uint8_t SHSWREF : 3; /*!< [6..4] S&H Boost Switch Refresh Interval Setting */ + uint8_t : 1; + } ADSWCR_b; + }; + + union + { + __IOM uint8_t ADSHMSR; /*!< (@ 0x0000007C) A/D Sample and Hold Operation Mode Select Register */ + + struct + { + __IOM uint8_t SHMD : 1; /*!< [0..0] Channel-Dedicated Sample-and-Hold Circuit Operation Mode + * Select */ + uint8_t : 7; + } ADSHMSR_b; + }; + + union + { + __IOM uint8_t ADICR; /*!< (@ 0x0000007D) A/D Interrupt Control Register */ + + struct + { + __IOM uint8_t ADIC : 2; /*!< [1..0] A/D Interrupt Control */ + uint8_t : 6; + } ADICR_b; + }; + + union + { + __IOM uint8_t ADACSR; /*!< (@ 0x0000007E) A/D Conversion Operation Mode Select Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t ADSAC : 1; /*!< [1..1] Successive Approximation Control Setting */ + uint8_t : 6; + } ADACSR_b; + }; + __IM uint8_t RESERVED5; + + union + { + __IOM uint16_t ADGSPCR; /*!< (@ 0x00000080) A/D Group Scan Priority Control Register */ + + struct + { + __IOM uint16_t PGS : 1; /*!< [0..0] Group A priority control setting bit.Note: When the PGS + * bit is to be set to 1, the ADCSR.ADCS[1:0] bits must be + * set to 01b (group scan mode). If the bits are set to any + * other values, proper operation is not guaranteed. */ + __IOM uint16_t GBRSCN : 1; /*!< [1..1] Group B Restart Setting(Enabled only when PGS = 1. Reserved + * when PGS = 0.) */ + uint16_t : 6; + __IOM uint16_t GBEXTRG : 1; /*!< [8..8] External trigger selection bit for group B. */ + uint16_t : 6; + __IOM uint16_t GBRP : 1; /*!< [15..15] Group B Single Scan Continuous Start(Enabled only when + * PGS = 1. Reserved when PGS = 0.)Note: When the GBRP bit + * has been set to 1, single scan is performed continuously + * for group B regardless of the setting of the GBRSCN bit. */ + } ADGSPCR_b; + }; + + union + { + __IM uint16_t ADGSCS; /*!< (@ 0x00000082) A/D Conversion Channel Status Register (for Group + * Scan) */ + + struct + { + __IM uint16_t CHSELGB : 8; /*!< [7..0] Channel status of Group B scan */ + __IM uint16_t CHSELGA : 8; /*!< [15..8] Channel status of Group A scan */ + } ADGSCS_b; + }; + + union + { + __IM uint16_t ADDBLDRA; /*!< (@ 0x00000084) A/D Data Duplexing Register A */ + + struct + { + __IM uint16_t ADDBLDRA : 16; /*!< [15..0] This register is a 16-bit read-only registers for storing + * the result of A/D conversion in response to the respective + * triggers during extended operation in double trigger mode. */ + } ADDBLDRA_b; + }; + + union + { + __IM uint16_t ADDBLDRB; /*!< (@ 0x00000086) A/D Data Duplexing Register B */ + + struct + { + __IM uint16_t ADDBLDRB : 16; /*!< [15..0] This register is a 16-bit read-only registers for storing + * the result of A/D conversion in response to the respective + * triggers during extended operation in double trigger mode. */ + } ADDBLDRB_b; + }; + + union + { + __IOM uint8_t ADSER; /*!< (@ 0x00000088) A/D Sampling Extension Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t SMPEX : 1; /*!< [7..7] Sampling extension control */ + } ADSER_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint8_t ADHVREFCNT; /*!< (@ 0x0000008A) A/D High-Potential/Low-Potential Reference Voltage + * Control Register */ + + struct + { + __IOM uint8_t HVSEL : 2; /*!< [1..0] High-Potential Reference Voltage Select */ + uint8_t : 2; + __IOM uint8_t LVSEL : 1; /*!< [4..4] Low-Potential Reference Voltage Select */ + uint8_t : 2; + __IOM uint8_t ADSLP : 1; /*!< [7..7] Sleep */ + } ADHVREFCNT_b; + }; + __IM uint8_t RESERVED7; + + union + { + __IM uint8_t ADWINMON; /*!< (@ 0x0000008C) A/D Compare Function Window A/B Status Monitor + * Register */ + + struct + { + __IM uint8_t MONCOMB : 1; /*!< [0..0] Combination result monitorThis bit indicates the combination + * result.This bit is valid when both window A operation and + * window B operation are enabled. */ + uint8_t : 3; + __IM uint8_t MONCMPA : 1; /*!< [4..4] Comparison Result Monitor A */ + __IM uint8_t MONCMPB : 1; /*!< [5..5] Comparison Result Monitor B */ + uint8_t : 2; + } ADWINMON_b; + }; + __IM uint8_t RESERVED8; + __IM uint16_t RESERVED9; + + union + { + __IOM uint16_t ADCMPCR; /*!< (@ 0x00000090) A/D Compare Function Control Register */ + + struct + { + __IOM uint16_t CMPAB : 2; /*!< [1..0] Window A/B Composite Conditions SettingNOTE: These bits + * are valid when both window A and window B are enabled (CMPAE + * = 1 and CMPBE = 1). */ + uint16_t : 7; + __IOM uint16_t CMPBE : 1; /*!< [9..9] Compare Window B Operation Enable */ + uint16_t : 1; + __IOM uint16_t CMPAE : 1; /*!< [11..11] Compare Window A Operation Enable */ + uint16_t : 1; + __IOM uint16_t CMPBIE : 1; /*!< [13..13] Compare B Interrupt Enable */ + __IOM uint16_t WCMPE : 1; /*!< [14..14] Window Function Setting */ + __IOM uint16_t CMPAIE : 1; /*!< [15..15] Compare A Interrupt Enable */ + } ADCMPCR_b; + }; + + union + { + __IOM uint8_t ADCMPANSER; /*!< (@ 0x00000092) A/D Compare Function Window A Extended Input + * Select Register */ + + struct + { + __IOM uint8_t CMPTSA : 1; /*!< [0..0] Temperature sensor output Compare selection bit. */ + __IOM uint8_t CMPOCA : 1; /*!< [1..1] Internal reference voltage Compare selection bit. */ + uint8_t : 6; + } ADCMPANSER_b; + }; + + union + { + __IOM uint8_t ADCMPLER; /*!< (@ 0x00000093) A/D Compare Function Window A Extended Input + * Comparison Condition Setting Register */ + + struct + { + __IOM uint8_t CMPLTSA : 1; /*!< [0..0] Compare Window A Temperature Sensor Output Comparison + * Condition Select */ + __IOM uint8_t CMPLOCA : 1; /*!< [1..1] Compare Window A Internal Reference Voltage ComparisonCondition + * Select */ + uint8_t : 6; + } ADCMPLER_b; + }; + + union + { + __IOM uint16_t ADCMPANSR[2]; /*!< (@ 0x00000094) A/D Compare Function Window A Channel Select + * Register */ + + struct + { + __IOM uint16_t CMPCHA0 : 1; /*!< [0..0] AN Input Select */ + __IOM uint16_t CMPCHA1 : 1; /*!< [1..1] AN Input Select */ + __IOM uint16_t CMPCHA2 : 1; /*!< [2..2] AN Input Select */ + __IOM uint16_t CMPCHA3 : 1; /*!< [3..3] AN Input Select */ + __IOM uint16_t CMPCHA4 : 1; /*!< [4..4] AN Input Select */ + __IOM uint16_t CMPCHA5 : 1; /*!< [5..5] AN Input Select */ + __IOM uint16_t CMPCHA6 : 1; /*!< [6..6] AN Input Select */ + __IOM uint16_t CMPCHA7 : 1; /*!< [7..7] AN Input Select */ + __IOM uint16_t CMPCHA8 : 1; /*!< [8..8] AN Input Select */ + __IOM uint16_t CMPCHA9 : 1; /*!< [9..9] AN Input Select */ + __IOM uint16_t CMPCHA10 : 1; /*!< [10..10] AN Input Select */ + __IOM uint16_t CMPCHA11 : 1; /*!< [11..11] AN Input Select */ + __IOM uint16_t CMPCHA12 : 1; /*!< [12..12] AN Input Select */ + __IOM uint16_t CMPCHA13 : 1; /*!< [13..13] AN Input Select */ + __IOM uint16_t CMPCHA14 : 1; /*!< [14..14] AN Input Select */ + __IOM uint16_t CMPCHA15 : 1; /*!< [15..15] AN Input Select */ + } ADCMPANSR_b[2]; + }; + + union + { + __IOM uint16_t ADCMPLR[2]; /*!< (@ 0x00000098) A/D Compare Function Window A Comparison Condition + * Setting Register */ + + struct + { + __IOM uint16_t CMPLCHA0 : 1; /*!< [0..0] Comparison condition of input */ + __IOM uint16_t CMPLCHA1 : 1; /*!< [1..1] Comparison condition of input */ + __IOM uint16_t CMPLCHA2 : 1; /*!< [2..2] Comparison condition of input */ + __IOM uint16_t CMPLCHA3 : 1; /*!< [3..3] Comparison condition of input */ + __IOM uint16_t CMPLCHA4 : 1; /*!< [4..4] Comparison condition of input */ + __IOM uint16_t CMPLCHA5 : 1; /*!< [5..5] Comparison condition of input */ + __IOM uint16_t CMPLCHA6 : 1; /*!< [6..6] Comparison condition of input */ + __IOM uint16_t CMPLCHA7 : 1; /*!< [7..7] Comparison condition of input */ + __IOM uint16_t CMPLCHA8 : 1; /*!< [8..8] Comparison condition of input */ + __IOM uint16_t CMPLCHA9 : 1; /*!< [9..9] Comparison condition of input */ + __IOM uint16_t CMPLCHA10 : 1; /*!< [10..10] Comparison condition of input */ + __IOM uint16_t CMPLCHA11 : 1; /*!< [11..11] Comparison condition of input */ + __IOM uint16_t CMPLCHA12 : 1; /*!< [12..12] Comparison condition of input */ + __IOM uint16_t CMPLCHA13 : 1; /*!< [13..13] Comparison condition of input */ + __IOM uint16_t CMPLCHA14 : 1; /*!< [14..14] Comparison condition of input */ + __IOM uint16_t CMPLCHA15 : 1; /*!< [15..15] Comparison condition of input */ + } ADCMPLR_b[2]; + }; + + union + { + __IOM uint16_t ADCMPDR0; /*!< (@ 0x0000009C) A/D Compare Function Window A Lower-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADCMPDR0 : 16; /*!< [15..0] The ADCMPDR0 register sets the reference data when the + * compare window A function is used. ADCMPDR0 sets the lower-side + * level of window A. */ + } ADCMPDR0_b; + }; + + union + { + __IOM uint16_t ADCMPDR1; /*!< (@ 0x0000009E) A/D Compare Function Window A Upper-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADCMPDR1 : 16; /*!< [15..0] The ADCMPDR1 register sets the reference data when the + * compare window A function is used. ADCMPDR1 sets the upper-side + * level of window A.. */ + } ADCMPDR1_b; + }; + + union + { + __IOM uint16_t ADCMPSR[2]; /*!< (@ 0x000000A0) A/D Compare Function Window A Channel Status + * Register */ + + struct + { + __IOM uint16_t CMPSTCHA0 : 1; /*!< [0..0] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA1 : 1; /*!< [1..1] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA2 : 1; /*!< [2..2] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA3 : 1; /*!< [3..3] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA4 : 1; /*!< [4..4] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA5 : 1; /*!< [5..5] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA6 : 1; /*!< [6..6] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA7 : 1; /*!< [7..7] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA8 : 1; /*!< [8..8] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA9 : 1; /*!< [9..9] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA10 : 1; /*!< [10..10] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA11 : 1; /*!< [11..11] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA12 : 1; /*!< [12..12] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA13 : 1; /*!< [13..13] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA14 : 1; /*!< [14..14] Compare window A flag of input */ + __IOM uint16_t CMPSTCHA15 : 1; /*!< [15..15] Compare window A flag of input */ + } ADCMPSR_b[2]; + }; + + union + { + __IOM uint8_t ADCMPSER; /*!< (@ 0x000000A4) A/D Compare Function Window A Extended Input + * Channel Status Register */ + + struct + { + __IOM uint8_t CMPSTTSA : 1; /*!< [0..0] Compare Window A Temperature Sensor Output Compare Flag + * When window A operation is enabled (ADCMPCR.CMPAE = 1b), + * this bit indicates the temperature sensor output comparison + * result. When window A operation is disabled (ADCMPCR.CMPAE + * = 0b), comparison conditions for CMPSTTSA are not met any + * time. */ + __IOM uint8_t CMPSTOCA : 1; /*!< [1..1] Compare Window A Internal Reference Voltage Compare Flag + * When window A operation is enabled (ADCMPCR.CMPAE = 1b), + * this bit indicates the temperature sensor output comparison + * result. When window A operation is disabled (ADCMPCR.CMPAE + * = 0b), comparison conditions for CMPSTTSA are not met any + * time. */ + uint8_t : 6; + } ADCMPSER_b; + }; + __IM uint8_t RESERVED10; + + union + { + __IOM uint8_t ADCMPBNSR; /*!< (@ 0x000000A6) A/D Compare Function Window B Channel Selection + * Register */ + + struct + { + __IOM uint8_t CMPCHB : 6; /*!< [5..0] Compare window B channel selection bit.The channel that + * compares it on the condition of compare window B is selected. */ + uint8_t : 1; + __IOM uint8_t CMPLB : 1; /*!< [7..7] Compare window B Compare condition setting bit. */ + } ADCMPBNSR_b; + }; + __IM uint8_t RESERVED11; + + union + { + __IOM uint16_t ADWINLLB; /*!< (@ 0x000000A8) A/D Compare Function Window B Lower-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADWINLLB : 16; /*!< [15..0] This register is used to compare A window function is + * used to set the lower level of the window B. */ + } ADWINLLB_b; + }; + + union + { + __IOM uint16_t ADWINULB; /*!< (@ 0x000000AA) A/D Compare Function Window B Upper-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t ADWINULB : 16; /*!< [15..0] This register is used to compare A window function is + * used to set the higher level of the window B. */ + } ADWINULB_b; + }; + + union + { + __IOM uint8_t ADCMPBSR; /*!< (@ 0x000000AC) A/D Compare Function Window B Status Register */ + + struct + { + __IOM uint8_t CMPSTB : 1; /*!< [0..0] Compare window B flag.It is a status flag that shows + * the comparative result of CH (AN000-AN027, temperature + * sensor, and internal reference voltage) made the object + * of window B relation condition. */ + uint8_t : 7; + } ADCMPBSR_b; + }; + __IM uint8_t RESERVED12; + __IM uint16_t RESERVED13; + + union + { + __IM uint16_t ADBUF0; /*!< (@ 0x000000B0) A/D Data Buffer Register 0 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF0_b; + }; + + union + { + __IM uint16_t ADBUF1; /*!< (@ 0x000000B2) A/D Data Buffer Register 1 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF1_b; + }; + + union + { + __IM uint16_t ADBUF2; /*!< (@ 0x000000B4) A/D Data Buffer Register 2 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF2_b; + }; + + union + { + __IM uint16_t ADBUF3; /*!< (@ 0x000000B6) A/D Data Buffer Register 3 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF3_b; + }; + + union + { + __IM uint16_t ADBUF4; /*!< (@ 0x000000B8) A/D Data Buffer Register 4 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF4_b; + }; + + union + { + __IM uint16_t ADBUF5; /*!< (@ 0x000000BA) A/D Data Buffer Register 5 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF5_b; + }; + + union + { + __IM uint16_t ADBUF6; /*!< (@ 0x000000BC) A/D Data Buffer Register 6 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF6_b; + }; + + union + { + __IM uint16_t ADBUF7; /*!< (@ 0x000000BE) A/D Data Buffer Register 7 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF7_b; + }; + + union + { + __IM uint16_t ADBUF8; /*!< (@ 0x000000C0) A/D Data Buffer Register 8 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF8_b; + }; + + union + { + __IM uint16_t ADBUF9; /*!< (@ 0x000000C2) A/D Data Buffer Register 9 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF9_b; + }; + + union + { + __IM uint16_t ADBUF10; /*!< (@ 0x000000C4) A/D Data Buffer Register 10 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF10_b; + }; + + union + { + __IM uint16_t ADBUF11; /*!< (@ 0x000000C6) A/D Data Buffer Register 11 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF11_b; + }; + + union + { + __IM uint16_t ADBUF12; /*!< (@ 0x000000C8) A/D Data Buffer Register 12 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF12_b; + }; + + union + { + __IM uint16_t ADBUF13; /*!< (@ 0x000000CA) A/D Data Buffer Register 13 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF13_b; + }; + + union + { + __IM uint16_t ADBUF14; /*!< (@ 0x000000CC) A/D Data Buffer Register 14 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF14_b; + }; + + union + { + __IM uint16_t ADBUF15; /*!< (@ 0x000000CE) A/D Data Buffer Register 15 */ + + struct + { + __IM uint16_t ADBUF : 16; /*!< [15..0] A/D data buffer registers (ADBUF) are 16-bit read-only + * registers that sequentially store all A/D converted values. + * The automatic clear function is not applied to these registers. */ + } ADBUF15_b; + }; + + union + { + __IOM uint8_t ADBUFEN; /*!< (@ 0x000000D0) A/D Data Buffer Enable Register */ + + struct + { + __IOM uint8_t BUFEN : 1; /*!< [0..0] Data Buffer Enable */ + uint8_t : 7; + } ADBUFEN_b; + }; + __IM uint8_t RESERVED14; + + union + { + __IOM uint8_t ADBUFPTR; /*!< (@ 0x000000D2) A/D Data Buffer Pointer Register */ + + struct + { + __IM uint8_t BUFPTR : 4; /*!< [3..0] Data Buffer PointerThese bits indicate the number of + * data buffer to which the next A/D converted data is transferred. */ + __IM uint8_t PTROVF : 1; /*!< [4..4] Pointer Overflow Flag */ + uint8_t : 3; + } ADBUFPTR_b; + }; + __IM uint8_t RESERVED15; + __IM uint32_t RESERVED16[2]; + __IM uint8_t RESERVED17; + + union + { + __IOM uint8_t ADSSTRL; /*!< (@ 0x000000DD) A/D Sampling State Register L */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting (AN016-AN027) */ + } ADSSTRL_b; + }; + + union + { + __IOM uint8_t ADSSTRT; /*!< (@ 0x000000DE) A/D Sampling State Register T */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting (temperature sensor output) */ + } ADSSTRT_b; + }; + + union + { + __IOM uint8_t ADSSTRO; /*!< (@ 0x000000DF) A/D Sampling State Register O */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting (Internal reference voltage) */ + } ADSSTRO_b; + }; + + union + { + __IOM uint8_t ADSSTR[16]; /*!< (@ 0x000000E0) A/D Sampling State Registers */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling time setting */ + } ADSSTR_b[16]; + }; + + union + { + __IOM uint16_t ADANIM; /*!< (@ 0x000000F0) A/D Channel Input Mode Select Register */ + + struct + { + __IOM uint16_t ANIM0 : 1; /*!< [0..0] Analog Channel Input Mode Select */ + __IOM uint16_t ANIM1 : 1; /*!< [1..1] Analog Channel Input Mode Select */ + __IOM uint16_t ANIM2 : 1; /*!< [2..2] Analog Channel Input Mode Select */ + __IOM uint16_t ANIM3 : 1; /*!< [3..3] Analog Channel Input Mode Select */ + uint16_t : 12; + } ADANIM_b; + }; + + union + { + __IOM uint8_t ADCALEXE; /*!< (@ 0x000000F2) A/D Calibration Execution Register */ + + struct + { + uint8_t : 6; + __IM uint8_t CALMON : 1; /*!< [6..6] Calibration Status Flag */ + __IOM uint8_t CALEXE : 1; /*!< [7..7] Calibration Start */ + } ADCALEXE_b; + }; + __IM uint8_t RESERVED18; + + union + { + __IOM uint8_t VREFAMPCNT; /*!< (@ 0x000000F4) A/D Dedicated Reference Voltage Circuit Control + * Register */ + + struct + { + __IOM uint8_t OLDETEN : 1; /*!< [0..0] OLDET Enable */ + __IOM uint8_t VREFADCG : 2; /*!< [2..1] VREFADC Output Voltage Control */ + __IOM uint8_t VREFADCEN : 1; /*!< [3..3] VREFADCG Enable */ + __IOM uint8_t BGREN : 1; /*!< [4..4] BGR Enable */ + uint8_t : 2; + __IOM uint8_t ADSLP : 1; /*!< [7..7] Sleep */ + } VREFAMPCNT_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20; + + union + { + __IOM uint16_t ADRD; /*!< (@ 0x000000F8) A/D Self-Diagnosis Data Register */ + + struct + { + __IM uint16_t AD : 16; /*!< [15..0] Converted Value 15 to 0 */ + } ADRD_b; + }; + + union + { + __IM uint8_t ADRST; /*!< (@ 0x000000FA) A/D Self-Diagnostic Status Register */ + + struct + { + __IM uint8_t DIAGST : 2; /*!< [1..0] Self-Diagnosis Status */ + uint8_t : 6; + } ADRST_b; + }; + __IM uint8_t RESERVED21; + __IM uint32_t RESERVED22[41]; + + union + { + __IOM uint16_t ADPGACR; /*!< (@ 0x000001A0) A/D Programmable Gain Amplifier Control Register */ + + struct + { + __IOM uint16_t P000SEL0 : 1; /*!< [0..0] A through amplifier is enable for PGA P000 */ + __IOM uint16_t P000SEL1 : 1; /*!< [1..1] The amplifier passing is enable for PGA P000 */ + __IOM uint16_t P000ENAMP : 1; /*!< [2..2] Amplifier enable bit for PGA P000 */ + __IOM uint16_t P000GEN : 1; /*!< [3..3] PGA P000 gain setting and enable bit */ + __IOM uint16_t P001SEL0 : 1; /*!< [4..4] A through amplifier is enable for PGA P001 */ + __IOM uint16_t P001SEL1 : 1; /*!< [5..5] The amplifier passing is enable for PGA P001 */ + __IOM uint16_t P001ENAMP : 1; /*!< [6..6] Amplifier enable bit for PGA P001 */ + __IOM uint16_t P001GEN : 1; /*!< [7..7] PGA P001 gain setting and enable bit */ + __IOM uint16_t P002SEL0 : 1; /*!< [8..8] A through amplifier is enable for PGA P002 */ + __IOM uint16_t P002SEL1 : 1; /*!< [9..9] The amplifier passing is enable for PGA P002 */ + __IOM uint16_t P002ENAMP : 1; /*!< [10..10] Amplifier enable bit for PGA P002 */ + __IOM uint16_t P002GEN : 1; /*!< [11..11] PGA P002 gain setting and enable bit */ + __IOM uint16_t P003SEL0 : 1; /*!< [12..12] A through amplifier is enable for PGA P003 */ + __IOM uint16_t P003SEL1 : 1; /*!< [13..13] The amplifier passing is enable for PGA P003 */ + __IOM uint16_t P003ENAMP : 1; /*!< [14..14] Amplifier enable bit for PGA P003 */ + __IOM uint16_t P003GEN : 1; /*!< [15..15] PGA P003 gain setting and enable bit */ + } ADPGACR_b; + }; + + union + { + __IOM uint16_t ADPGAGS0; /*!< (@ 0x000001A2) A/D Programmable Gain Amplifier Gain Setting + * Register 0 */ + + struct + { + __IOM uint16_t P000GAIN : 4; /*!< [3..0] PGA P000 gain setting bit.The gain magnification of (ADPGSDCR0.P000GEN= + * b) when the shingle end is input and each PGA P000 is set. + * When the differential motion is input, (ADPGSDCR0.P000GEN=1b) + * sets the gain magnification when the differential motion + * is input by the combination with ADPGSDCR0.P000DG 1:0. */ + __IOM uint16_t P001GAIN : 4; /*!< [7..4] PGA P001 gain setting bit.The gain magnification of (ADPGSDCR0.P001GEN= + * b) when the shingle end is input and each PGA P001 is set. + * When the differential motion is input, (ADPGSDCR0.P001GEN=1b) + * sets the gain magnification when the differential motion + * is input by the combination with ADPGSDCR0.P001DG 1:0. */ + __IOM uint16_t P002GAIN : 4; /*!< [11..8] PGA P002 gain setting bit.The gain magnification of + * (ADPGSDCR0.P002GEN=0b) when the shingle end is input and + * each PGA P002 is set. When the differential motion is input, + * (ADPGSDCR0.P002GEN=1b) sets the gain magnification when + * the differential motion is input by the combination with + * ADPGSDCR0.P002DG 1:0. */ + __IOM uint16_t P003GAIN : 4; /*!< [15..12] PGA P003 gain setting bit.The gain magnification of + * (ADPGSDCR0.P003GEN=0b) when the shingle end is input and + * each PGA P003 is set. When the differential motion is input, + * (ADPGSDCR0.P003GEN=1b) sets the gain magnification when + * the differential motion is input by the combination with + * ADPGSDCR0.P003DG 1:0. */ + } ADPGAGS0_b; + }; + __IM uint32_t RESERVED23[3]; + + union + { + __IOM uint16_t ADPGADCR0; /*!< (@ 0x000001B0) A/D Programmable Gain Amplifier Differential + * Input Control Register */ + + struct + { + __IOM uint16_t P000DG : 2; /*!< [1..0] P000 Differential Input Gain SettingNOTE: When these + * bits are used, set {P000DEN, P000GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P000DEN : 1; /*!< [3..3] P000 Differential Input Enable */ + __IOM uint16_t P001DG : 2; /*!< [5..4] P001 Differential Input Gain SettingNOTE: When these + * bits are used, set {P001DEN, P001GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P001DEN : 1; /*!< [7..7] P001 Differential Input Enable */ + __IOM uint16_t P002DG : 2; /*!< [9..8] P002 Differential Input Gain SettingNOTE: When these + * bits are used, set {P002DEN, P002GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P002DEN : 1; /*!< [11..11] P002 Differential Input Enable */ + __IOM uint16_t P003DG : 2; /*!< [13..12] P003 Differential Input Gain SettingNOTE: When these + * bits are used, set {P003DEN, P003GEN} to 11b. */ + uint16_t : 1; + __IOM uint16_t P003DEN : 1; /*!< [15..15] P003 Differential Input Enable */ + } ADPGADCR0_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint8_t ADPGADBS0; /*!< (@ 0x000001B4) A/D Programmable Gain Amplifier Differential + * Input Bias Select Register 0 */ + + struct + { + __IOM uint8_t P0BIAS : 1; /*!< [0..0] Programmable Gain Amplifiers P000 to P002 Bias Voltage + * SelectNOTE: This bit selects the input bias voltage value + * when differential inputs are used. */ + uint8_t : 7; + } ADPGADBS0_b; + }; + + union + { + __IOM uint8_t ADPGADBS1; /*!< (@ 0x000001B5) A/D Programmable Gain Amplifier Differential + * Input Bias Select Register 1 */ + + struct + { + __IOM uint8_t P3BIAS : 1; /*!< [0..0] Programmable Gain Amplifiers P003 Bias Voltage SelectNOTE: + * This bit selects the input bias voltage value when differential + * inputs are used. */ + uint8_t : 7; + } ADPGADBS1_b; + }; + __IM uint16_t RESERVED25; + __IM uint32_t RESERVED26[10]; + + union + { + __IOM uint32_t ADREFMON; /*!< (@ 0x000001E0) A/D External Reference Voltage Monitor Register */ + + struct + { + __IOM uint32_t PGAMON : 3; /*!< [2..0] PGA Monitor Output Enable */ + uint32_t : 13; + __IOM uint32_t MONSEL : 4; /*!< [19..16] Monitor output selection bit. */ + uint32_t : 12; + } ADREFMON_b; + }; +} R_ADC0_Type; /*!< Size = 484 (0x1e4) */ + +/* =========================================================================================================================== */ +/* ================ R_PSCU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Peripheral Security Control Unit (R_PSCU) + */ + +typedef struct /*!< (@ 0x40204000) R_PSCU Structure */ +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t PSARB; /*!< (@ 0x00000004) Peripheral Security Attribution Register B */ + + struct + { + uint32_t : 4; + __IOM uint32_t PSARB4 : 1; /*!< [4..4] I3C Bus Interface 2 Security Attribution */ + uint32_t : 3; + __IOM uint32_t PSARB8 : 1; /*!< [8..8] I2C Bus Interface 1 Security Attribution */ + __IOM uint32_t PSARB9 : 1; /*!< [9..9] I2C Bus Interface 0 Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARB11 : 1; /*!< [11..11] Universal Serial Bus 2.0 FS Interface 0 Security Attribution */ + __IOM uint32_t PSARB12 : 1; /*!< [12..12] Universal Serial Bus 2.0 HS Interface 0 Security Attribution */ + uint32_t : 2; + __IOM uint32_t PSARB15 : 1; /*!< [15..15] ETHER0/EDMAC0 Controller Security Attribution */ + __IOM uint32_t PSARB16 : 1; /*!< [16..16] Octa Memory Controller Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARB18 : 1; /*!< [18..18] Serial Peripheral Interface 1 Security Attribution */ + __IOM uint32_t PSARB19 : 1; /*!< [19..19] Serial Peripheral Interface 0 Security Attribution */ + uint32_t : 2; + __IOM uint32_t PSARB22 : 1; /*!< [22..22] Serial Communication Interface 9 Security Attribution */ + uint32_t : 4; + __IOM uint32_t PSARB27 : 1; /*!< [27..27] Serial Communication Interface 4 Security Attribution */ + __IOM uint32_t PSARB28 : 1; /*!< [28..28] Serial Communication Interface 3 Security Attribution */ + __IOM uint32_t PSARB29 : 1; /*!< [29..29] Serial Communication Interface 2 Security Attribution */ + __IOM uint32_t PSARB30 : 1; /*!< [30..30] Serial Communication Interface 1 Security Attribution */ + __IOM uint32_t PSARB31 : 1; /*!< [31..31] Serial Communication Interface 0 Security Attribution */ + } PSARB_b; + }; + + union + { + __IOM uint32_t PSARC; /*!< (@ 0x00000008) Peripheral Security Attribution Register C */ + + struct + { + __IOM uint32_t PSARC0 : 1; /*!< [0..0] Clock Frequency Accuracy Measurement Circuit Security + * Attribution */ + __IOM uint32_t PSARC1 : 1; /*!< [1..1] Cyclic Redundancy Check Calculator Security Attribution */ + uint32_t : 5; + __IOM uint32_t PSARC7 : 1; /*!< [7..7] Serial Sound Interface Enhanced (channel 1) Security + * Attribution */ + __IOM uint32_t PSARC8 : 1; /*!< [8..8] Serial Sound Interface Enhanced (channel 0) Security + * Attribution */ + uint32_t : 2; + __IOM uint32_t PSARC11 : 1; /*!< [11..11] Secure Digital Host IF 1 Security Attribution */ + __IOM uint32_t PSARC12 : 1; /*!< [12..12] Secure Digital Host IF 0 Security Attribution */ + __IOM uint32_t PSARC13 : 1; /*!< [13..13] Data Operation Circuit Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARC15 : 1; /*!< [15..15] Graph-ic(GLCDC,MIPI,DRW,JPEG) Security Attribution */ + __IOM uint32_t PSARC16 : 1; /*!< [16..16] CEU Security Attribution */ + uint32_t : 9; + __IOM uint32_t PSARC26 : 1; /*!< [26..26] Controller Area Network with Flexible Data-Rate 1 Security + * Attribution */ + __IOM uint32_t PSARC27 : 1; /*!< [27..27] Controller Area Network with Flexible Data-Rate 0 Security + * Attribution */ + uint32_t : 3; + __IOM uint32_t PSARC31 : 1; /*!< [31..31] SHIP Security Attribution */ + } PSARC_b; + }; + + union + { + __IOM uint32_t PSARD; /*!< (@ 0x0000000C) Peripheral Security Attribution Register D */ + + struct + { + uint32_t : 4; + __IOM uint32_t PSARD4 : 1; /*!< [4..4] Asynchronous General Purpose Timer 1 Security Attribution */ + __IOM uint32_t PSARD5 : 1; /*!< [5..5] Asynchronous General Purpose Timer 0 Security Attribution */ + uint32_t : 5; + __IOM uint32_t PSARD11 : 1; /*!< [11..11] Port Output Enable for GPT Group 3 Security Attribution */ + __IOM uint32_t PSARD12 : 1; /*!< [12..12] Port Output Enable for GPT Group 2 Security Attribution */ + __IOM uint32_t PSARD13 : 1; /*!< [13..13] Port Output Enable for GPT Group 1 Security Attribution */ + __IOM uint32_t PSARD14 : 1; /*!< [14..14] Port Output Enable for GPT Group 0 Security Attribution */ + __IOM uint32_t PSARD15 : 1; /*!< [15..15] 12-Bit A/D 1 Converter Security Attribution */ + __IOM uint32_t PSARD16 : 1; /*!< [16..16] 12-Bit A/D 0 Converter Security Attribution */ + uint32_t : 3; + __IOM uint32_t PSARD20 : 1; /*!< [20..20] 12-Bit D/A Converter Security Attribution */ + uint32_t : 1; + __IOM uint32_t PSARD22 : 1; /*!< [22..22] Temperature Sensor Security Attribution */ + uint32_t : 4; + __IOM uint32_t PSARD27 : 1; /*!< [27..27] High speed analog Comparator 1 Security Attribution */ + __IOM uint32_t PSARD28 : 1; /*!< [28..28] High speed analog Comparator 0 Security Attribution */ + uint32_t : 3; + } PSARD_b; + }; + + union + { + __IOM uint32_t PSARE; /*!< (@ 0x00000010) Peripheral Security Attribution Register E */ + + struct + { + uint32_t : 1; + __IOM uint32_t PSARE1 : 1; /*!< [1..1] WDT0 Security Attribution */ + __IOM uint32_t PSARE2 : 1; /*!< [2..2] Independent Watchdog Timer Security Attribution */ + __IOM uint32_t PSARE3 : 1; /*!< [3..3] Real Time Clock Security Attribution */ + uint32_t : 4; + __IOM uint32_t PSARE8 : 1; /*!< [8..8] ULPT1 Security Attribution */ + __IOM uint32_t PSARE9 : 1; /*!< [9..9] ULPT0 Security Attribution */ + uint32_t : 8; + __IOM uint32_t PSARE18 : 1; /*!< [18..18] General PWM Timer channel13 Security Attribution */ + __IOM uint32_t PSARE19 : 1; /*!< [19..19] General PWM Timer channel12 Security Attribution */ + __IOM uint32_t PSARE20 : 1; /*!< [20..20] General PWM Timer channel11 Security Attribution */ + __IOM uint32_t PSARE21 : 1; /*!< [21..21] General PWM Timer channel10 Security Attribution */ + __IOM uint32_t PSARE22 : 1; /*!< [22..22] General PWM Timer channel9 Security Attribution */ + __IOM uint32_t PSARE23 : 1; /*!< [23..23] General PWM Timer channel8 Security Attribution */ + __IOM uint32_t PSARE24 : 1; /*!< [24..24] General PWM Timer channel7 Security Attribution */ + __IOM uint32_t PSARE25 : 1; /*!< [25..25] General PWM Timer channel6 Security Attribution */ + __IOM uint32_t PSARE26 : 1; /*!< [26..26] General PWM Timer channel5 Security Attribution */ + __IOM uint32_t PSARE27 : 1; /*!< [27..27] General PWM Timer channel4 Security Attribution */ + __IOM uint32_t PSARE28 : 1; /*!< [28..28] General PWM Timer channel3 Security Attribution */ + __IOM uint32_t PSARE29 : 1; /*!< [29..29] General PWM Timer channel2 Security Attribution */ + __IOM uint32_t PSARE30 : 1; /*!< [30..30] General PWM Timer channel1 Security Attribution */ + __IOM uint32_t PSARE31 : 1; /*!< [31..31] General PWM Timer channel0 Security Attribution */ + } PSARE_b; + }; + + union + { + __IOM uint32_t MSSAR; /*!< (@ 0x00000014) Module Stop Security Attribution Register */ + + struct + { + __IOM uint32_t MSSAR0 : 1; /*!< [0..0] SRAM0 Clock Stop Security Attribution */ + __IOM uint32_t MSSAR1 : 1; /*!< [1..1] SRAM1 Clock Stop Security Attribution */ + uint32_t : 9; + __IOM uint32_t MSSAR11 : 1; /*!< [11..11] CTCM0 Security Attribution */ + uint32_t : 1; + __IOM uint32_t MSSAR13 : 1; /*!< [13..13] STCM0 Security Attribution */ + uint32_t : 1; + __IOM uint32_t MSSAR15 : 1; /*!< [15..15] Standby RAM Clock Stop Security Attribution */ + uint32_t : 6; + __IOM uint32_t MSSAR22 : 1; /*!< [22..22] DMAC0/DTC0 Clock Stop Security Attribution */ + uint32_t : 8; + __IOM uint32_t MSSAR31 : 1; /*!< [31..31] ELC clock stop Security Attribution */ + } MSSAR_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t PPARB; /*!< (@ 0x0000001C) Peripheral Privilege Attribution Register B */ + + struct + { + uint32_t : 4; + __IOM uint32_t PPARB4 : 1; /*!< [4..4] I3C Bus Interface 2 Privilege Attribution */ + uint32_t : 3; + __IOM uint32_t PPARB8 : 1; /*!< [8..8] I2C Bus Interface 1 Privilege Attribution */ + __IOM uint32_t PPARB9 : 1; /*!< [9..9] I2C Bus Interface 0 Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARB11 : 1; /*!< [11..11] Universal Serial Bus 2.0 FS Interface 0 Privilege Attribution */ + __IOM uint32_t PPARB12 : 1; /*!< [12..12] Universal Serial Bus 2.0 HS Interface 0 Privilege Attribution */ + uint32_t : 2; + __IOM uint32_t PPARB15 : 1; /*!< [15..15] ETHER0/EDMAC0 Controller Privilege Attribution */ + __IOM uint32_t PPARB16 : 1; /*!< [16..16] Octa Memory Controller Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARB18 : 1; /*!< [18..18] Serial Peripheral Interface 1 Privilege Attribution */ + __IOM uint32_t PPARB19 : 1; /*!< [19..19] Serial Peripheral Interface 0 Privilege Attribution */ + uint32_t : 2; + __IOM uint32_t PPARB22 : 1; /*!< [22..22] Serial Communication Interface 9 Privilege Attribution */ + uint32_t : 4; + __IOM uint32_t PPARB27 : 1; /*!< [27..27] Serial Communication Interface 4 Privilege Attribution */ + __IOM uint32_t PPARB28 : 1; /*!< [28..28] Serial Communication Interface 3 Privilege Attribution */ + __IOM uint32_t PPARB29 : 1; /*!< [29..29] Serial Communication Interface 2 Privilege Attribution */ + __IOM uint32_t PPARB30 : 1; /*!< [30..30] Serial Communication Interface 1 Privilege Attribution */ + __IOM uint32_t PPARB31 : 1; /*!< [31..31] Serial Communication Interface 0 Privilege Attribution */ + } PPARB_b; + }; + + union + { + __IOM uint32_t PPARC; /*!< (@ 0x00000020) Peripheral Privilege Attribution Register C */ + + struct + { + __IOM uint32_t PPARC0 : 1; /*!< [0..0] Clock Frequency Accuracy Measurement Circuit Privilege + * Attribution */ + __IOM uint32_t PPARC1 : 1; /*!< [1..1] Cyclic Redundancy Check Calculator Privilege Attribution */ + uint32_t : 5; + __IOM uint32_t PPARC7 : 1; /*!< [7..7] Serial Sound Interface Enhanced (channel 1) Privilege + * Attribution */ + __IOM uint32_t PPARC8 : 1; /*!< [8..8] Serial Sound Interface Enhanced (channel 0) Privilege + * Attribution */ + uint32_t : 2; + __IOM uint32_t PPARC11 : 1; /*!< [11..11] Privilege Digital Host IF 1 Privilege Attribution */ + __IOM uint32_t PPARC12 : 1; /*!< [12..12] Privilege Digital Host IF 0 Privilege Attribution */ + __IOM uint32_t PPARC13 : 1; /*!< [13..13] Data Operation Circuit Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARC15 : 1; /*!< [15..15] Graph-ic(GLCDC,MIPI,DRW,JPEG) Privilege Attribution */ + __IOM uint32_t PPARC16 : 1; /*!< [16..16] CEU Privilege Attribution */ + uint32_t : 9; + __IOM uint32_t PPARC26 : 1; /*!< [26..26] Controller Area Network with Flexible Data-Rate 1 Privilege + * Attribution */ + __IOM uint32_t PPARC27 : 1; /*!< [27..27] Controller Area Network with Flexible Data-Rate 0 Privilege + * Attribution */ + uint32_t : 3; + __IOM uint32_t PPARC31 : 1; /*!< [31..31] SHIP Privilege Attribution */ + } PPARC_b; + }; + + union + { + __IOM uint32_t PPARD; /*!< (@ 0x00000024) Peripheral Privilege Attribution Register D */ + + struct + { + uint32_t : 4; + __IOM uint32_t PPARD4 : 1; /*!< [4..4] Asynchronous General Purpose Timer 1 Privilege Attribution */ + __IOM uint32_t PPARD5 : 1; /*!< [5..5] Asynchronous General Purpose Timer 0 Privilege Attribution */ + uint32_t : 5; + __IOM uint32_t PPARD11 : 1; /*!< [11..11] Port Output Enable for GPT Group 3 Privilege Attribution */ + __IOM uint32_t PPARD12 : 1; /*!< [12..12] Port Output Enable for GPT Group 2 Privilege Attribution */ + __IOM uint32_t PPARD13 : 1; /*!< [13..13] Port Output Enable for GPT Group 1 Privilege Attribution */ + __IOM uint32_t PPARD14 : 1; /*!< [14..14] Port Output Enable for GPT Group 0 Privilege Attribution */ + __IOM uint32_t PPARD15 : 1; /*!< [15..15] 12-Bit A/D 1 Converter Privilege Attribution */ + __IOM uint32_t PPARD16 : 1; /*!< [16..16] 12-Bit A/D 0 Converter Privilege Attribution */ + uint32_t : 3; + __IOM uint32_t PPARD20 : 1; /*!< [20..20] 12-Bit D/A Converter Privilege Attribution */ + uint32_t : 1; + __IOM uint32_t PPARD22 : 1; /*!< [22..22] Temperature Sensor Privilege Attribution */ + uint32_t : 4; + __IOM uint32_t PPARD27 : 1; /*!< [27..27] High speed analog Comparator 1 Privilege Attribution */ + __IOM uint32_t PPARD28 : 1; /*!< [28..28] High speed analog Comparator 0 Privilege Attribution */ + uint32_t : 3; + } PPARD_b; + }; + + union + { + __IOM uint32_t PPARE; /*!< (@ 0x00000028) Peripheral Privilege Attribution Register E */ + + struct + { + uint32_t : 1; + __IOM uint32_t PPARE1 : 1; /*!< [1..1] Watchdog Timer0 Privilege Attribution */ + __IOM uint32_t PPARE2 : 1; /*!< [2..2] Independent Watchdog Timer Privilege Attribution */ + __IOM uint32_t PPARE3 : 1; /*!< [3..3] Real Time Clock Privilege Attribution */ + uint32_t : 4; + __IOM uint32_t PPARE8 : 1; /*!< [8..8] ULPT1 Privilege Attribution */ + __IOM uint32_t PPARE9 : 1; /*!< [9..9] ULPT0 Privilege Attribution */ + uint32_t : 8; + __IOM uint32_t PPARE18 : 1; /*!< [18..18] General PWM Timer channel13 Privilege Attribution */ + __IOM uint32_t PPARE19 : 1; /*!< [19..19] General PWM Timer channel12 Privilege Attribution */ + __IOM uint32_t PPARE20 : 1; /*!< [20..20] General PWM Timer channel11 Privilege Attribution */ + __IOM uint32_t PPARE21 : 1; /*!< [21..21] General PWM Timer channel10 Privilege Attribution */ + __IOM uint32_t PPARE22 : 1; /*!< [22..22] General PWM Timer channel9 Privilege Attribution */ + __IOM uint32_t PPARE23 : 1; /*!< [23..23] General PWM Timer channel8 Privilege Attribution */ + __IOM uint32_t PPARE24 : 1; /*!< [24..24] General PWM Timer channel7 Privilege Attribution */ + __IOM uint32_t PPARE25 : 1; /*!< [25..25] General PWM Timer channel6 Privilege Attribution */ + __IOM uint32_t PPARE26 : 1; /*!< [26..26] General PWM Timer channel5 Privilege Attribution */ + __IOM uint32_t PPARE27 : 1; /*!< [27..27] General PWM Timer channel4 Privilege Attribution */ + __IOM uint32_t PPARE28 : 1; /*!< [28..28] General PWM Timer channel3 Privilege Attribution */ + __IOM uint32_t PPARE29 : 1; /*!< [29..29] General PWM Timer channel2 Privilege Attribution */ + __IOM uint32_t PPARE30 : 1; /*!< [30..30] General PWM Timer channel1 Privilege Attribution */ + __IOM uint32_t PPARE31 : 1; /*!< [31..31] General PWM Timer channel0 Privilege Attribution */ + } PPARE_b; + }; + + union + { + __IOM uint32_t MSPAR; /*!< (@ 0x0000002C) Module Stop Privilege Attribution Register */ + + struct + { + uint32_t : 31; + __IOM uint32_t MSPAR31 : 1; /*!< [31..31] ELC clock stop Privilege Attribution */ + } MSPAR_b; + }; + + union + { + __IM uint32_t CFSAMONA; /*!< (@ 0x00000030) Code Flash Security Attribution Monitor Register + * A */ + + struct + { + uint32_t : 15; + __IM uint32_t CFS2 : 9; /*!< [23..15] Code Flash Secure area */ + uint32_t : 8; + } CFSAMONA_b; + }; + + union + { + __IM uint32_t DFSAMON; /*!< (@ 0x00000034) Data Flash Security Attribution Monitor Register */ + + struct + { + uint32_t : 10; + __IM uint32_t DFS : 6; /*!< [15..10] Data flash Secure area */ + uint32_t : 16; + } DFSAMON_b; + }; + + union + { + __IM uint32_t DLMMON; /*!< (@ 0x00000038) Device Lifecycle Management State Monitor Register */ + + struct + { + __IM uint32_t DLMMON : 4; /*!< [3..0] Device Lifecycle Management State Monitor */ + uint32_t : 28; + } DLMMON_b; + }; +} R_PSCU_Type; /*!< Size = 60 (0x3c) */ + +/* =========================================================================================================================== */ +/* ================ R_BUS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Interface (R_BUS) + */ + +typedef struct /*!< (@ 0x40003000) R_BUS Structure */ +{ + __IOM R_BUS_CSa_Type CSa[8]; /*!< (@ 0x00000000) CS Registers */ + __IM uint32_t RESERVED[480]; + __IOM R_BUS_CSb_Type CSb[8]; /*!< (@ 0x00000800) CS Registers */ + + union + { + __IOM uint16_t CSRECEN; /*!< (@ 0x00000880) CS Recovery Cycle Insertion Enable Register */ + + struct + { + __IOM uint16_t RCVEN0 : 1; /*!< [0..0] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN1 : 1; /*!< [1..1] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN2 : 1; /*!< [2..2] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN3 : 1; /*!< [3..3] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN4 : 1; /*!< [4..4] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN5 : 1; /*!< [5..5] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN6 : 1; /*!< [6..6] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVEN7 : 1; /*!< [7..7] Separate Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM0 : 1; /*!< [8..8] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM1 : 1; /*!< [9..9] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM2 : 1; /*!< [10..10] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM3 : 1; /*!< [11..11] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM4 : 1; /*!< [12..12] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM5 : 1; /*!< [13..13] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM6 : 1; /*!< [14..14] Multiplexed Bus Recovery Cycle Insertion Enable */ + __IOM uint16_t RCVENM7 : 1; /*!< [15..15] Multiplexed Bus Recovery Cycle Insertion Enable */ + } CSRECEN_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[223]; + __IOM R_BUS_SDRAM_Type SDRAM; /*!< (@ 0x00000C00) SDRAM Registers */ + __IM uint32_t RESERVED3[235]; + + union + { + __IOM R_BUS_OAD_Type OAD; /*!< (@ 0x00001000) Bus Operation After Detection Registers */ + __IOM R_BUS_BUSM_Type BUSM[6]; /*!< (@ 0x00001000) Master Bus Control Registers */ + }; + __IM uint32_t RESERVED4[58]; + + union + { + union + { + __IOM uint32_t BUSMABT; /*!< (@ 0x00001100) Bus Master Arbitration Control Register. */ + + struct + { + __IOM uint32_t ARBS : 1; /*!< [0..0] Arbitration Select for GDSSBI. */ + uint32_t : 31; + } BUSMABT_b; + }; + __IOM R_BUS_BUSS_Type BUSS[18]; /*!< (@ 0x00001100) Slave Bus Control Register Array */ + }; + __IM uint32_t RESERVED5[46]; + + union + { + __IOM R_BUS_BUSSABT0_Type BUSSABT0; /*!< (@ 0x00001200) Bus Slave Arbitration Control 0 Registers */ + __IOM R_BUS_BUSSABT1_Type BUSSABT1; /*!< (@ 0x00001200) Bus Slave Arbitration Control 1 Registers */ + }; + __IM uint32_t RESERVED6[33]; + + union + { + __IOM uint32_t BUSDIVBYP; /*!< (@ 0x00001300) Bus Divider Bypass Register. */ + + struct + { + __IOM uint32_t EDMABPE : 1; /*!< [0..0] Divider for EDMACBI bypass enable. */ + uint32_t : 2; + __IOM uint32_t GDSSBPE : 1; /*!< [3..3] Divider for GDSSBI bypass enable. */ + uint32_t : 12; + __IOM uint32_t CPU0SBPE : 1; /*!< [16..16] Divider for CPUSAHBI bypass enable. */ + uint32_t : 15; + } BUSDIVBYP_b; + }; + __IM uint32_t RESERVED7[319]; + __IOM R_BUS_BUSERRa_Type BUSERRa[12]; /*!< (@ 0x00001800) Bus Error Registers */ + __IM uint32_t RESERVED8[16]; + + union + { + __IOM R_BUS_BTZFERR_Type BTZFERR[4]; /*!< (@ 0x00001900) Bus TZF Error Registers */ + __IOM R_BUS_BMSAERR_Type BMSAERR[9]; /*!< (@ 0x00001900) Bus Master Security Attribution Unit Error Address + * and Read/Write Status registers. */ + }; + __IM uint32_t RESERVED9[28]; + + union + { + __IOM R_BUS_BUSERRb_Type BUSERRb[12]; /*!< (@ 0x00001A00) Bus Error Registers */ + __IOM R_BUS_DMACDTCERR_Type DMACDTCERR; /*!< (@ 0x00001A00) DMAC/DTC Error Registers */ + }; + __IM uint32_t RESERVED10[16]; + __IOM R_BUS_MBWERR_Type MBWERR; /*!< (@ 0x00001B00) Master Bufferable Write Error Registers */ + __IM uint32_t RESERVED11[5]; + __IOM R_BUS_MBWERR_Type SBWERR; /*!< (@ 0x00001B20) Slave Bufferable Write Error Registers */ +} R_BUS_Type; /*!< Size = 6956 (0x1b2c) */ + +/* =========================================================================================================================== */ +/* ================ R_CAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Clock Frequency Accuracy Measurement Circuit (R_CAC) + */ + +typedef struct /*!< (@ 0x40202400) R_CAC Structure */ +{ + union + { + __IOM uint8_t CACR0; /*!< (@ 0x00000000) CAC Control Register 0 */ + + struct + { + __IOM uint8_t CFME : 1; /*!< [0..0] Clock Frequency Measurement Enable. */ + uint8_t : 7; + } CACR0_b; + }; + + union + { + __IOM uint8_t CACR1; /*!< (@ 0x00000001) CAC Control Register 1 */ + + struct + { + __IOM uint8_t CACREFE : 1; /*!< [0..0] CACREF Pin Input Enable */ + __IOM uint8_t FMCS : 3; /*!< [3..1] Measurement Target Clock Select */ + __IOM uint8_t TCSS : 2; /*!< [5..4] Measurement Target Clock Frequency Division Ratio Select */ + __IOM uint8_t EDGES : 2; /*!< [7..6] Valid Edge Select */ + } CACR1_b; + }; + + union + { + __IOM uint8_t CACR2; /*!< (@ 0x00000002) CAC Control Register 2 */ + + struct + { + __IOM uint8_t RPS : 1; /*!< [0..0] Reference Signal Select */ + __IOM uint8_t RSCS : 3; /*!< [3..1] Measurement Reference Clock Select */ + __IOM uint8_t RCDS : 2; /*!< [5..4] Measurement Reference Clock Frequency Division Ratio + * Select */ + __IOM uint8_t DFS : 2; /*!< [7..6] Digital Filter Selection */ + } CACR2_b; + }; + + union + { + __IOM uint8_t CAICR; /*!< (@ 0x00000003) CAC Interrupt Control Register */ + + struct + { + __IOM uint8_t FERRIE : 1; /*!< [0..0] Frequency Error Interrupt Request Enable */ + __IOM uint8_t MENDIE : 1; /*!< [1..1] Measurement End Interrupt Request Enable */ + __IOM uint8_t OVFIE : 1; /*!< [2..2] Overflow Interrupt Request Enable */ + uint8_t : 1; + __OM uint8_t FERRFCL : 1; /*!< [4..4] FERRF Clear */ + __OM uint8_t MENDFCL : 1; /*!< [5..5] MENDF Clear */ + __OM uint8_t OVFFCL : 1; /*!< [6..6] OVFF Clear */ + uint8_t : 1; + } CAICR_b; + }; + + union + { + __IM uint8_t CASTR; /*!< (@ 0x00000004) CAC Status Register */ + + struct + { + __IM uint8_t FERRF : 1; /*!< [0..0] Frequency Error Flag */ + __IM uint8_t MENDF : 1; /*!< [1..1] Measurement End Flag */ + __IM uint8_t OVFF : 1; /*!< [2..2] Counter Overflow Flag */ + uint8_t : 5; + } CASTR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t CAULVR; /*!< (@ 0x00000006) CAC Upper-Limit Value Setting Register */ + + struct + { + __IOM uint16_t CAULVR : 16; /*!< [15..0] CAULVR is a 16-bit readable/writable register that stores + * the upper-limit value of the frequency. */ + } CAULVR_b; + }; + + union + { + __IOM uint16_t CALLVR; /*!< (@ 0x00000008) CAC Lower-Limit Value Setting Register */ + + struct + { + __IOM uint16_t CALLVR : 16; /*!< [15..0] CALLVR is a 16-bit readable/writable register that stores + * the lower-limit value of the frequency. */ + } CALLVR_b; + }; + + union + { + __IM uint16_t CACNTBR; /*!< (@ 0x0000000A) CAC Counter Buffer Register */ + + struct + { + __IM uint16_t CACNTBR : 16; /*!< [15..0] CACNTBR is a 16-bit read-only register that retains + * the counter value at the time a valid reference signal + * edge is input */ + } CACNTBR_b; + }; +} R_CAC_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Controller Area Network - Flexible Data (CAN-FD) Module (R_CANFD0) + */ + +typedef struct /*!< (@ 0x40380000) R_CANFD0 Structure */ +{ + __IOM R_CANFD_CFDC_Type CFDC[1]; /*!< (@ 0x00000000) Channel Control/Status */ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t CFDGCFG; /*!< (@ 0x00000014) Global Configuration Register */ + + struct + { + __IOM uint32_t TPRI : 1; /*!< [0..0] Transmission Priority */ + __IOM uint32_t DCE : 1; /*!< [1..1] DLC Check Enable */ + __IOM uint32_t DRE : 1; /*!< [2..2] DLC Replacement Enable */ + __IOM uint32_t MME : 1; /*!< [3..3] Mirror Mode Enable */ + __IOM uint32_t DCS : 1; /*!< [4..4] Data Link Controller Clock Select */ + __IOM uint32_t CMPOC : 1; /*!< [5..5] CAN-FD message Payload overflow configuration */ + uint32_t : 2; + __IOM uint32_t TSP : 4; /*!< [11..8] Timestamp Prescaler */ + __IOM uint32_t TSSS : 1; /*!< [12..12] Timestamp Source Select */ + uint32_t : 3; + __IOM uint32_t ITRCP : 16; /*!< [31..16] Interval Timer Reference Clock Prescaler */ + } CFDGCFG_b; + }; + + union + { + __IOM uint32_t CFDGCTR; /*!< (@ 0x00000018) Global Control Register */ + + struct + { + __IOM uint32_t GMDC : 2; /*!< [1..0] Global Mode Control */ + __IOM uint32_t GSLPR : 1; /*!< [2..2] Global Sleep Request */ + uint32_t : 5; + __IOM uint32_t DEIE : 1; /*!< [8..8] DLC check Interrupt Enable */ + __IOM uint32_t MEIE : 1; /*!< [9..9] Message lost Error Interrupt Enable */ + __IOM uint32_t THLEIE : 1; /*!< [10..10] TX History List Entry Lost Interrupt Enable */ + __IOM uint32_t CMPOFIE : 1; /*!< [11..11] CAN-FD message payload overflow Flag Interrupt enable */ + uint32_t : 4; + __IOM uint32_t TSRST : 1; /*!< [16..16] Timestamp Reset */ + uint32_t : 15; + } CFDGCTR_b; + }; + + union + { + __IOM uint32_t CFDGSTS; /*!< (@ 0x0000001C) Global Status Register */ + + struct + { + __IM uint32_t GRSTSTS : 1; /*!< [0..0] Global Reset Status */ + __IM uint32_t GHLTSTS : 1; /*!< [1..1] Global Halt Status */ + __IM uint32_t GSLPSTS : 1; /*!< [2..2] Global Sleep Status */ + __IM uint32_t GRAMINIT : 1; /*!< [3..3] Global RAM Initialisation */ + uint32_t : 28; + } CFDGSTS_b; + }; + + union + { + __IOM uint32_t CFDGERFL; /*!< (@ 0x00000020) Global Error Flag Register */ + + struct + { + __IOM uint32_t DEF : 1; /*!< [0..0] DLC Error Flag */ + __IM uint32_t MES : 1; /*!< [1..1] Message Lost Error Status */ + __IM uint32_t THLES : 1; /*!< [2..2] TX History List Entry Lost Error Status */ + __IOM uint32_t CMPOF : 1; /*!< [3..3] CAN-FD message payload overflow Flag */ + uint32_t : 12; + __IOM uint32_t EEF0 : 1; /*!< [16..16] ECC Error Flag for Channel 0 */ + uint32_t : 15; + } CFDGERFL_b; + }; + + union + { + __IOM uint32_t CFDGTSC; /*!< (@ 0x00000024) Global Timestamp Counter Register */ + + struct + { + __IM uint32_t TS : 16; /*!< [15..0] Timestamp Value */ + uint32_t : 16; + } CFDGTSC_b; + }; + + union + { + __IOM uint32_t CFDGAFLECTR; /*!< (@ 0x00000028) Global Acceptance Filter List Entry Control Register */ + + struct + { + __IOM uint32_t AFLPN : 4; /*!< [3..0] Acceptance Filter List Page Number */ + uint32_t : 4; + __IOM uint32_t AFLDAE : 1; /*!< [8..8] Acceptance Filter List Data Access Enable */ + uint32_t : 23; + } CFDGAFLECTR_b; + }; + + union + { + __IOM uint32_t CFDGAFLCFG0; /*!< (@ 0x0000002C) Global Acceptance Filter List Configuration Register + * 0 */ + + struct + { + __IOM uint32_t RNC1 : 9; /*!< [8..0] Rule Number for Channel 1 */ + uint32_t : 7; + __IOM uint32_t RNC0 : 9; /*!< [24..16] Rule Number for Channel 0 */ + uint32_t : 7; + } CFDGAFLCFG0_b; + }; + + union + { + __IOM uint32_t CFDRMNB; /*!< (@ 0x00000030) RX Message Buffer Number Register */ + + struct + { + __IOM uint32_t NRXMB : 8; /*!< [7..0] Number of RX Message Buffers */ + __IOM uint32_t RMPLS : 3; /*!< [10..8] Reception Message Buffer Payload Data Size */ + uint32_t : 21; + } CFDRMNB_b; + }; + + union + { + __IOM uint32_t CFDRMND0; /*!< (@ 0x00000034) RX Message Buffer New Data Register 0 */ + + struct + { + __IOM uint32_t RMNSu : 32; /*!< [31..0] RX Message Buffer New Data Status */ + } CFDRMND0_b; + }; + + union + { + __IOM uint32_t CFDRMIEC; /*!< (@ 0x00000038) RX Message Buffer Interrupt Enable Configuration + * Register */ + + struct + { + __IOM uint32_t RMIE : 32; /*!< [31..0] RX Message Buffer Interrupt Enable */ + } CFDRMIEC_b; + }; + + union + { + __IOM uint32_t CFDRFCC[2]; /*!< (@ 0x0000003C) RX FIFO Configuration / Control Registers */ + + struct + { + __IOM uint32_t RFE : 1; /*!< [0..0] RX FIFO Enable */ + __IOM uint32_t RFIE : 1; /*!< [1..1] RX FIFO Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t RFPLS : 3; /*!< [6..4] Rx FIFO Payload Data Size configuration */ + uint32_t : 1; + __IOM uint32_t RFDC : 3; /*!< [10..8] RX FIFO Depth Configuration */ + uint32_t : 1; + __IOM uint32_t RFIM : 1; /*!< [12..12] RX FIFO Interrupt Mode */ + __IOM uint32_t RFIGCV : 3; /*!< [15..13] RX FIFO Interrupt Generation Counter Value */ + uint32_t : 16; + } CFDRFCC_b[2]; + }; + + union + { + __IOM uint32_t CFDRFSTS[2]; /*!< (@ 0x00000044) RX FIFO Status Registers */ + + struct + { + __IM uint32_t RFEMP : 1; /*!< [0..0] RX FIFO Empty */ + __IM uint32_t RFFLL : 1; /*!< [1..1] RX FIFO Full */ + __IOM uint32_t RFMLT : 1; /*!< [2..2] RX FIFO Message Lost */ + __IOM uint32_t RFIF : 1; /*!< [3..3] RX FIFO Interrupt Flag */ + uint32_t : 4; + __IM uint32_t RFMC : 8; /*!< [15..8] RX FIFO Message Count */ + uint32_t : 16; + } CFDRFSTS_b[2]; + }; + + union + { + __IOM uint32_t CFDRFPCTR[2]; /*!< (@ 0x0000004C) RX FIFO Pointer Control Registers */ + + struct + { + __OM uint32_t RFPC : 8; /*!< [7..0] RX FIFO Pointer Control */ + uint32_t : 24; + } CFDRFPCTR_b[2]; + }; + + union + { + __IOM uint32_t CFDCFCC[1]; /*!< (@ 0x00000054) Common FIFO Configuration / Control Registers */ + + struct + { + __IOM uint32_t CFE : 1; /*!< [0..0] Common FIFO Enable */ + __IOM uint32_t CFRXIE : 1; /*!< [1..1] Common FIFO RX Interrupt Enable */ + __IOM uint32_t CFTXIE : 1; /*!< [2..2] Common FIFO TX Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t CFPLS : 3; /*!< [6..4] Common FIFO Payload Data size configuration */ + uint32_t : 1; + __IOM uint32_t CFM : 2; /*!< [9..8] Common FIFO Mode */ + __IOM uint32_t CFITSS : 1; /*!< [10..10] Common FIFO Interval Timer Source Select */ + __IOM uint32_t CFITR : 1; /*!< [11..11] Common FIFO Interval Timer Resolution */ + __IOM uint32_t CFIM : 1; /*!< [12..12] Common FIFO Interrupt Mode */ + __IOM uint32_t CFIGCV : 3; /*!< [15..13] Common FIFO Interrupt Generation Counter Value */ + __IOM uint32_t CFTML : 5; /*!< [20..16] Common FIFO TX Message Buffer Link */ + __IOM uint32_t CFDC : 3; /*!< [23..21] Common FIFO Depth Configuration */ + __IOM uint32_t CFITT : 8; /*!< [31..24] Common FIFO Interval Transmission Time */ + } CFDCFCC_b[1]; + }; + + union + { + __IOM uint32_t CFDCFSTS[1]; /*!< (@ 0x00000058) Common FIFO Status Registers */ + + struct + { + __IM uint32_t CFEMP : 1; /*!< [0..0] Common FIFO Empty */ + __IM uint32_t CFFLL : 1; /*!< [1..1] Common FIFO Full */ + __IOM uint32_t CFMLT : 1; /*!< [2..2] Common FIFO Message Lost */ + __IOM uint32_t CFRXIF : 1; /*!< [3..3] Common RX FIFO Interrupt Flag */ + __IOM uint32_t CFTXIF : 1; /*!< [4..4] Common TX FIFO Interrupt Flag */ + uint32_t : 3; + __IM uint32_t CFMC : 8; /*!< [15..8] Common FIFO Message Count */ + uint32_t : 16; + } CFDCFSTS_b[1]; + }; + + union + { + __IOM uint32_t CFDCFPCTR[1]; /*!< (@ 0x0000005C) Common FIFO Pointer Control Registers */ + + struct + { + __OM uint32_t CFPC : 8; /*!< [7..0] Common FIFO Pointer Control */ + uint32_t : 24; + } CFDCFPCTR_b[1]; + }; + + union + { + __IM uint32_t CFDFESTS; /*!< (@ 0x00000060) FIFO Empty Status Register */ + + struct + { + __IM uint32_t RFXEMP : 2; /*!< [1..0] RX FIF0 Empty Status */ + uint32_t : 6; + __IM uint32_t CFXEMP : 1; /*!< [8..8] Common FIF0 Empty Status */ + uint32_t : 23; + } CFDFESTS_b; + }; + + union + { + __IM uint32_t CFDFFSTS; /*!< (@ 0x00000064) FIFO Full Status Register */ + + struct + { + __IM uint32_t RFXFLL : 2; /*!< [1..0] RX FIF0 Full Status */ + uint32_t : 6; + __IM uint32_t CFXFLL : 1; /*!< [8..8] Common FIF0 Full Status */ + uint32_t : 23; + } CFDFFSTS_b; + }; + + union + { + __IM uint32_t CFDFMSTS; /*!< (@ 0x00000068) FIFO Message Lost Status Register */ + + struct + { + __IM uint32_t RFXMLT : 2; /*!< [1..0] RX FIFO Msg Lost Status */ + uint32_t : 6; + __IM uint32_t CFXMLT : 1; /*!< [8..8] Common FIFO Msg Lost Status */ + uint32_t : 23; + } CFDFMSTS_b; + }; + + union + { + __IOM uint32_t CFDRFISTS; /*!< (@ 0x0000006C) RX FIFO Interrupt Flag Status Register */ + + struct + { + __IM uint32_t RFXIF : 1; /*!< [0..0] RX FIFO[x] Interrupt Flag Status */ + uint32_t : 31; + } CFDRFISTS_b; + }; + + union + { + __IOM uint8_t CFDTMC[4]; /*!< (@ 0x00000070) TX Message Buffer Control Registers */ + + struct + { + __IOM uint8_t TMTR : 1; /*!< [0..0] TX Message Buffer Transmission Request */ + __IOM uint8_t TMTAR : 1; /*!< [1..1] TX Message Buffer Transmission abort Request */ + __IOM uint8_t TMOM : 1; /*!< [2..2] TX Message Buffer One-shot Mode */ + uint8_t : 5; + } CFDTMC_b[4]; + }; + + union + { + __IOM uint8_t CFDTMSTS[4]; /*!< (@ 0x00000074) TX Message Buffer Status Registers */ + + struct + { + __IM uint8_t TMTSTS : 1; /*!< [0..0] TX Message Buffer Transmission Status */ + __IOM uint8_t TMTRF : 2; /*!< [2..1] TX Message Buffer Transmission Result Flag */ + __IM uint8_t TMTRM : 1; /*!< [3..3] TX Message Buffer Transmission Request Mirrored */ + __IM uint8_t TMTARM : 1; /*!< [4..4] TX Message Buffer Transmission abort Request Mirrored */ + uint8_t : 3; + } CFDTMSTS_b[4]; + }; + + union + { + __IM uint32_t CFDTMTRSTS[1]; /*!< (@ 0x00000078) TX Message Buffer Transmission Request Status + * Register */ + + struct + { + __IM uint32_t CFDTMTRSTSg : 4; /*!< [3..0] TX Message Buffer Transmission Request Status */ + uint32_t : 28; + } CFDTMTRSTS_b[1]; + }; + + union + { + __IM uint32_t CFDTMTARSTS[1]; /*!< (@ 0x0000007C) TX Message Buffer Transmission Abort Request + * Status Register */ + + struct + { + __IM uint32_t CFDTMTARSTSg : 4; /*!< [3..0] TX Message Buffer Transmission abort Request Status */ + uint32_t : 28; + } CFDTMTARSTS_b[1]; + }; + + union + { + __IM uint32_t CFDTMTCSTS[1]; /*!< (@ 0x00000080) TX Message Buffer Transmission Completion Status + * Register */ + + struct + { + __IM uint32_t CFDTMTCSTSg : 4; /*!< [3..0] TX Message Buffer Transmission Completion Status */ + uint32_t : 28; + } CFDTMTCSTS_b[1]; + }; + + union + { + __IM uint32_t CFDTMTASTS[1]; /*!< (@ 0x00000084) TX Message Buffer Transmission Abort Status Register */ + + struct + { + __IM uint32_t CFDTMTASTSg : 4; /*!< [3..0] TX Message Buffer Transmission abort Status */ + uint32_t : 28; + } CFDTMTASTS_b[1]; + }; + + union + { + __IOM uint32_t CFDTMIEC[1]; /*!< (@ 0x00000088) TX Message Buffer Interrupt Enable Configuration + * Register */ + + struct + { + __IOM uint32_t TMIEg : 4; /*!< [3..0] TX Message Buffer Interrupt Enable */ + uint32_t : 28; + } CFDTMIEC_b[1]; + }; + + union + { + __IOM uint32_t CFDTXQCC0[1]; /*!< (@ 0x0000008C) TX Queue Configuration / Control Registers 0 */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + uint32_t : 4; + __IOM uint32_t TXQTXIE : 1; /*!< [5..5] TX Queue TX Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t TXQIM : 1; /*!< [7..7] TX Queue Interrupt Mode */ + __IOM uint32_t TXQDC : 2; /*!< [9..8] TX Queue Depth Configuration */ + uint32_t : 22; + } CFDTXQCC0_b[1]; + }; + + union + { + __IOM uint32_t CFDTXQSTS0[1]; /*!< (@ 0x00000090) TX Queue Status Registers 0 */ + + struct + { + __IM uint32_t TXQEMP : 1; /*!< [0..0] TX Queue Empty */ + __IM uint32_t TXQFLL : 1; /*!< [1..1] TX Queue Full */ + __IOM uint32_t TXQTXIF : 1; /*!< [2..2] TX Queue TX Interrupt Flag */ + uint32_t : 5; + __IM uint32_t TXQMC : 6; /*!< [13..8] TX Queue Message Count */ + uint32_t : 18; + } CFDTXQSTS0_b[1]; + }; + + union + { + __IOM uint32_t CFDTXQPCTR0[1]; /*!< (@ 0x00000094) TX Queue Pointer Control Registers 0 */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR0_b[1]; + }; + + union + { + __IOM uint32_t CFDTHLCC[1]; /*!< (@ 0x00000098) TX History List Configuration / Control Register */ + + struct + { + __IOM uint32_t THLE : 1; /*!< [0..0] TX History List Enable */ + uint32_t : 7; + __IOM uint32_t THLIE : 1; /*!< [8..8] TX History List Interrupt Enable */ + __IOM uint32_t THLIM : 1; /*!< [9..9] TX History List Interrupt Mode */ + __IOM uint32_t THLDTE : 1; /*!< [10..10] TX History List Dedicated TX Enable */ + uint32_t : 21; + } CFDTHLCC_b[1]; + }; + + union + { + __IOM uint32_t CFDTHLSTS[1]; /*!< (@ 0x0000009C) TX History List Status Register */ + + struct + { + __IM uint32_t THLEMP : 1; /*!< [0..0] TX History List Empty */ + __IM uint32_t THLFLL : 1; /*!< [1..1] TX History List Full */ + __IOM uint32_t THLELT : 1; /*!< [2..2] TX History List Entry Lost */ + __IOM uint32_t THLIF : 1; /*!< [3..3] TX History List Interrupt Flag */ + uint32_t : 4; + __IM uint32_t THLMC : 6; /*!< [13..8] TX History List Message Count */ + uint32_t : 18; + } CFDTHLSTS_b[1]; + }; + + union + { + __IOM uint32_t CFDTHLPCTR[1]; /*!< (@ 0x000000A0) TX History List Pointer Control Registers */ + + struct + { + __OM uint32_t THLPC : 8; /*!< [7..0] TX History List Pointer Control */ + uint32_t : 24; + } CFDTHLPCTR_b[1]; + }; + + union + { + __IOM uint32_t CFDGTINTSTS0; /*!< (@ 0x000000A4) Global TX Interrupt Status Register 0 */ + + struct + { + __IM uint32_t TSIF0 : 1; /*!< [0..0] TX Successful Interrupt Flag Channel 0 */ + __IM uint32_t TAIF0 : 1; /*!< [1..1] TX Abort Interrupt Flag Channel 0 */ + __IM uint32_t TQIF0 : 1; /*!< [2..2] TX Queue Interrupt Flag Channel 0 */ + __IM uint32_t CFTIF0 : 1; /*!< [3..3] COM FIFO TX/GW Mode Interrupt Flag Channel 0 */ + __IM uint32_t THIF0 : 1; /*!< [4..4] TX History List Interrupt Channel 0 */ + uint32_t : 27; + } CFDGTINTSTS0_b; + }; + + union + { + __IOM uint32_t CFDGTSTCFG; /*!< (@ 0x000000A8) Global Test Configuration Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t RTMPS : 10; /*!< [25..16] RAM Test Mode Page Select */ + uint32_t : 6; + } CFDGTSTCFG_b; + }; + + union + { + __IOM uint32_t CFDGTSTCTR; /*!< (@ 0x000000AC) Global Test Control Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t RTME : 1; /*!< [2..2] RAM Test Mode Enable */ + uint32_t : 29; + } CFDGTSTCTR_b; + }; + + union + { + __IOM uint32_t CFDGFDCFG; /*!< (@ 0x000000B0) Global FD Configuration register */ + + struct + { + __IOM uint32_t RPED : 1; /*!< [0..0] RES bit Protocol exception disable */ + uint32_t : 7; + __IOM uint32_t TSCCFG : 2; /*!< [9..8] Timestamp capture configuration */ + uint32_t : 22; + } CFDGFDCFG_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t CFDGLOCKK; /*!< (@ 0x000000B8) Global Lock Key Register */ + + struct + { + __OM uint32_t LOCK : 16; /*!< [15..0] Lock Key */ + uint32_t : 16; + } CFDGLOCKK_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t CFDGAFLIGNENT; /*!< (@ 0x000000C0) Global AFL Ignore Entry Register */ + + struct + { + __IOM uint32_t IRN : 5; /*!< [4..0] Ignore Rule Number */ + uint32_t : 27; + } CFDGAFLIGNENT_b; + }; + + union + { + __IOM uint32_t CFDGAFLIGNCTR; /*!< (@ 0x000000C4) Global AFL Ignore Control Register */ + + struct + { + __IOM uint32_t IREN : 1; /*!< [0..0] Ignore Rule Enable */ + uint32_t : 7; + __OM uint32_t KEY : 8; /*!< [15..8] Key code */ + uint32_t : 16; + } CFDGAFLIGNCTR_b; + }; + + union + { + __IOM uint32_t CFDCDTCT; /*!< (@ 0x000000C8) DMA Transfer Control Register */ + + struct + { + __IOM uint32_t RFDMAE0 : 1; /*!< [0..0] DMA Transfer Enable for RXFIFO 0 */ + __IOM uint32_t RFDMAE1 : 1; /*!< [1..1] DMA Transfer Enable for RXFIFO 1 */ + uint32_t : 6; + __IOM uint32_t CFDMAE0 : 1; /*!< [8..8] DMA Transfer Enable for Common FIFO 0 of channel 0 */ + uint32_t : 23; + } CFDCDTCT_b; + }; + + union + { + __IM uint32_t CFDCDTSTS; /*!< (@ 0x000000CC) DMA Transfer Status Register */ + + struct + { + __IM uint32_t RFDMASTS0 : 1; /*!< [0..0] DMA Transfer Status for RX FIFO 0 */ + __IM uint32_t RFDMASTS1 : 1; /*!< [1..1] DMA Transfer Status for RX FIFO 1 */ + uint32_t : 6; + __IM uint32_t CFDMASTS0 : 1; /*!< [8..8] DMA Transfer Status only for Common FIFO 0 of channel + * 0 */ + uint32_t : 23; + } CFDCDTSTS_b; + }; + __IM uint32_t RESERVED3[2]; + + union + { + __IOM uint32_t CFDGRSTC; /*!< (@ 0x000000D8) Global SW reset Register */ + + struct + { + __IOM uint32_t SRST : 1; /*!< [0..0] SW reset */ + uint32_t : 7; + __OM uint32_t KEY : 8; /*!< [15..8] Key code */ + uint32_t : 16; + } CFDGRSTC_b; + }; + __IM uint32_t RESERVED4[9]; + __IOM R_CANFD_CFDC2_Type CFDC2[1]; /*!< (@ 0x00000100) Channel Configuration Registers */ + __IOM R_CANFD_CFDGAFL_Type CFDGAFL[16]; /*!< (@ 0x00000120) Global Acceptance Filter List Registers */ + __IM uint32_t RESERVED5[24]; + + union + { + __IOM uint32_t CFDRPGACC[64]; /*!< (@ 0x00000280) RAM Test Page Access Registers */ + + struct + { + __IOM uint32_t RDTA : 32; /*!< [31..0] RAM Data Test Access */ + } CFDRPGACC_b[64]; + }; + __IM uint32_t RESERVED6[104]; + __IOM R_CANFD_CFDRF_Type CFDRF[2]; /*!< (@ 0x00000520) RX FIFO Access Registers */ + __IOM R_CANFD_CFDCF_Type CFDCF[1]; /*!< (@ 0x000005B8) Common FIFO Access Registers */ + __IOM R_CANFD_CFDTM_Type CFDTM[4]; /*!< (@ 0x00000604) TX Message Buffer Access Registers */ + __IM uint32_t RESERVED7[3]; + __IOM R_CANFD_CFDTHL_Type CFDTHL[1]; /*!< (@ 0x00000740) Channel TX History List */ + __IM uint32_t RESERVED8[118]; + __IOM R_CANFD_CFDRM_Type CFDRM[4]; /*!< (@ 0x00000920) RX Message Buffer Access Clusters */ +} R_CANFD_Type; /*!< Size = 6432 (0x1920) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Cyclic Redundancy Check (CRC) Calculator (R_CRC) + */ + +typedef struct /*!< (@ 0x40310000) R_CRC Structure */ +{ + union + { + __IOM uint8_t CRCCR0; /*!< (@ 0x00000000) CRC Control Register0 */ + + struct + { + __IOM uint8_t GPS : 3; /*!< [2..0] CRC Generating Polynomial Switching */ + uint8_t : 3; + __IOM uint8_t LMS : 1; /*!< [6..6] CRC Calculation Switching */ + __OM uint8_t DORCLR : 1; /*!< [7..7] CRCDOR Register Clear */ + } CRCCR0_b; + }; + + union + { + __IOM uint8_t CRCCR1; /*!< (@ 0x00000001) CRC Control Register1 */ + + struct + { + uint8_t : 6; + __IOM uint8_t CRCSWR : 1; /*!< [6..6] Snoop-on-write/read switch bit */ + __IOM uint8_t CRCSEN : 1; /*!< [7..7] Snoop enable bit */ + } CRCCR1_b; + }; + __IM uint16_t RESERVED; + + union + { + union + { + __IOM uint32_t CRCDIR; /*!< (@ 0x00000004) CRC Data Input Register */ + + struct + { + __IOM uint32_t CRCDIR : 32; /*!< [31..0] Calculation input Data (Case of CRC-32, CRC-32C ) */ + } CRCDIR_b; + }; + + union + { + __IOM uint8_t CRCDIR_BY; /*!< (@ 0x00000004) CRC Data Input Register (byte access) */ + + struct + { + __IOM uint8_t CRCDIR_BY : 8; /*!< [7..0] Calculation input Data ( Case of CRC-8, CRC-16 or CRC-CCITT + * ) */ + } CRCDIR_BY_b; + }; + }; + + union + { + union + { + __IOM uint32_t CRCDOR; /*!< (@ 0x00000008) CRC Data Output Register */ + + struct + { + __IOM uint32_t CRCDOR : 32; /*!< [31..0] Calculation output Data (Case of CRC-32, CRC-32C ) */ + } CRCDOR_b; + }; + + union + { + __IOM uint16_t CRCDOR_HA; /*!< (@ 0x00000008) CRC Data Output Register (halfword access) */ + + struct + { + __IOM uint16_t CRCDOR_HA : 16; /*!< [15..0] Calculation output Data (Case of CRC-16 or CRC-CCITT + * ) */ + } CRCDOR_HA_b; + }; + + union + { + __IOM uint8_t CRCDOR_BY; /*!< (@ 0x00000008) CRC Data Output Register(byte access) */ + + struct + { + __IOM uint8_t CRCDOR_BY : 8; /*!< [7..0] Calculation output Data (Case of CRC-8 ) */ + } CRCDOR_BY_b; + }; + }; + + union + { + __IOM uint16_t CRCSAR; /*!< (@ 0x0000000C) Snoop Address Register */ + + struct + { + __IOM uint16_t CRCSA : 14; /*!< [13..0] snoop address bitSet the I/O register address to snoop */ + uint16_t : 2; + } CRCSAR_b; + }; + __IM uint16_t RESERVED1; +} R_CRC_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief D/A Converter (R_DAC) + */ + +typedef struct /*!< (@ 0x40333000) R_DAC Structure */ +{ + union + { + __IOM uint16_t DADR[2]; /*!< (@ 0x00000000) D/A Data Register */ + + struct + { + __IOM uint16_t DADR : 16; /*!< [15..0] D/A Data RegisterNOTE: When DADPR.DPSEL = 0, the high-order + * 4 bits are fixed to 0: right justified format. When DADPR.DPSEL + * = 1, the low-order 4 bits are fixed to 0: left justified + * format. */ + } DADR_b[2]; + }; + + union + { + __IOM uint8_t DACR; /*!< (@ 0x00000004) D/A Control Register */ + + struct + { + uint8_t : 5; + __IOM uint8_t DAE : 1; /*!< [5..5] D/A Enable */ + __IOM uint8_t DAOE0 : 1; /*!< [6..6] D/A Output Enable 0 */ + __IOM uint8_t DAOE1 : 1; /*!< [7..7] D/A Output Enable 0 */ + } DACR_b; + }; + + union + { + __IOM uint8_t DADPR; /*!< (@ 0x00000005) DADR0 Format Select Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t DPSEL : 1; /*!< [7..7] DADRm Format Select */ + } DADPR_b; + }; + + union + { + __IOM uint8_t DAADSCR; /*!< (@ 0x00000006) D/A-A/D Synchronous Start Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t DAADST : 1; /*!< [7..7] D/A-A/D Synchronous Conversion */ + } DAADSCR_b; + }; + + union + { + __IOM uint8_t DAVREFCR; /*!< (@ 0x00000007) D/A VREF Control Register */ + + struct + { + __IOM uint8_t REF : 3; /*!< [2..0] D/A Reference Voltage Select */ + uint8_t : 5; + } DAVREFCR_b; + }; + + union + { + __IOM uint8_t DAAMPCR; /*!< (@ 0x00000008) D/A Output Amplifier Control Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t DAAMP0 : 1; /*!< [6..6] Amplifier Control */ + __IOM uint8_t DAAMP1 : 1; /*!< [7..7] Amplifier Control */ + } DAAMPCR_b; + }; + + union + { + __IOM uint8_t DAPC; /*!< (@ 0x00000009) D/A Switch Charge Pump Control Register */ + + struct + { + __IOM uint8_t PUMPEN : 1; /*!< [0..0] Charge Pump Enable */ + uint8_t : 7; + } DAPC_b; + }; + __IM uint16_t RESERVED[9]; + + union + { + __IOM uint8_t DAASWCR; /*!< (@ 0x0000001C) D/A Amplifier Stabilization Wait Control Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t DAASW0 : 1; /*!< [6..6] Set the DAASW0 bit to 1 in the initialization procedure + * to wait for stabilization of the output amplifier of D/A + * channel 0. When DAASW0 is set to 1, D/A conversion operates, + * but the conversion result D/A is not output from channel + * 0. When the DAASW0 bit is 0, the stabilization wait time + * stops, and the D/A conversion result of channel 0 is output + * through the output amplifier. */ + __IOM uint8_t DAASW1 : 1; /*!< [7..7] Set the DAASW1 bit to 1 in the initialization procedure + * to wait for stabilization of the output amplifier of D/A + * channel 1. When DAASW1 is set to 1, D/A conversion operates, + * but the conversion result D/A is not output from channel + * 1. When the DAASW1 bit is 0, the stabilization wait time + * stops, and the D/A conversion result of channel 1 is output + * through the output amplifier. */ + } DAASWCR_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2[2129]; + + union + { + __IOM uint8_t DAADUSR; /*!< (@ 0x000010C0) D/A A/D Synchronous Unit Select Register */ + + struct + { + __IOM uint8_t AMADSEL0 : 1; /*!< [0..0] The DAADUSR register selects the target ADC12 unit for + * D/A and A/D synchronous conversions. Set bit [0] to 1 to + * select unit 0 as the target synchronous unit for the MCU. + * When setting the DAADSCR.DAADST bit to 1 for synchronous + * conversions, select the target unit in this register in + * advance. Only set the DAADUSR register while the ADCSR.ADST + * bit of the ADC12 is set to 0 and the DAADSCR.DAADST bit + * is set to 0. */ + __IOM uint8_t AMADSEL1 : 1; /*!< [1..1] The DAADUSR register selects the target ADC12 unit for + * D/A and A/D synchronous conversions. Set bit [1] to 1 to + * select unit 1 as the target synchronous unit for the MCU. + * When setting the DAADSCR.DAADST bit to 1 for synchronous + * conversions, select the target unit in this register in + * advance. Only set the DAADUSR register while the ADCSR.ADST + * bit of the ADC12 is set to 0 and the DAADSCR.DAADST bit + * is set to 0. */ + uint8_t : 6; + } DAADUSR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; +} R_DAC_Type; /*!< Size = 4292 (0x10c4) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Debug Function (R_DEBUG) + */ + +typedef struct /*!< (@ 0x4001B000) R_DEBUG Structure */ +{ + union + { + __IM uint32_t DBGSTR; /*!< (@ 0x00000000) Debug Status Register */ + + struct + { + uint32_t : 28; + __IM uint32_t CDBGPWRUPREQ : 1; /*!< [28..28] Debug power-up request */ + __IM uint32_t CDBGPWRUPACK : 1; /*!< [29..29] Debug power-up acknowledge */ + uint32_t : 2; + } DBGSTR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t DBGSTOPCR; /*!< (@ 0x00000010) Debug Stop Control Register */ + + struct + { + __IOM uint32_t DBGSTOP_IWDT : 1; /*!< [0..0] Mask bit for IWDT reset/interrupt */ + __IOM uint32_t DBGSTOP_WDT : 1; /*!< [1..1] Mask bit for WDT reset/interrupt */ + uint32_t : 14; + __IOM uint32_t DBGSTOP_LVD0 : 1; /*!< [16..16] Mask bit for LVD reset/interupt */ + __IOM uint32_t DBGSTOP_LVD1 : 1; /*!< [17..17] Mask bit for LVD reset/interupt */ + __IOM uint32_t DBGSTOP_LVD2 : 1; /*!< [18..18] Mask bit for LVD reset/interupt */ + uint32_t : 5; + __IOM uint32_t DBGSTOP_RPER : 1; /*!< [24..24] Mask bit for SRAM parity error */ + __IOM uint32_t DBGSTOP_RECCR : 1; /*!< [25..25] Mask bit for SRAM ECC error */ + uint32_t : 5; + __IOM uint32_t DBGSTOP_CPER : 1; /*!< [31..31] Mask bit for Cache SRAM parity error reset/interrupt */ + } DBGSTOPCR_b; + }; + __IM uint32_t RESERVED1[123]; + + union + { + __IOM uint32_t FSBLSTAT; /*!< (@ 0x00000200) First Stage Boot Loader Status Register */ + + struct + { + __IOM uint32_t CS : 1; /*!< [0..0] FSBL completion status. */ + __IOM uint32_t RS : 1; /*!< [1..1] FSBL result status. */ + uint32_t : 6; + __IM uint32_t FSBLCLK : 3; /*!< [10..8] System clock frequency selection during FSBL execution */ + uint32_t : 21; + } FSBLSTAT_b; + }; +} R_DEBUG_Type; /*!< Size = 516 (0x204) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller Common (R_DMA) + */ + +typedef struct /*!< (@ 0x4000A800) R_DMA Structure */ +{ + union + { + __IOM uint8_t DMAST; /*!< (@ 0x00000000) DMAC Module Activation Register */ + + struct + { + __IOM uint8_t DMST : 1; /*!< [0..0] DMAC Operation Enable */ + uint8_t : 7; + } DMAST_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[15]; + + union + { + __IOM uint32_t DMECHR; /*!< (@ 0x00000040) DMAC Error Channel Register */ + + struct + { + __IM uint32_t DMECH : 3; /*!< [2..0] DMAC Error channel */ + uint32_t : 5; + __IM uint32_t DMECHSAM : 1; /*!< [8..8] DMAC Error channel Security Attribution Monitor */ + uint32_t : 7; + __IOM uint32_t DMESTA : 1; /*!< [16..16] DMAC Error Status */ + uint32_t : 15; + } DMECHR_b; + }; + __IM uint32_t RESERVED3[15]; + + union + { + __IOM uint32_t DELSR[8]; /*!< (@ 0x00000080) DMAC Event Link Setting Register */ + + struct + { + __IOM uint32_t DELS : 9; /*!< [8..0] DMAC Event Link Select */ + uint32_t : 7; + __IOM uint32_t IR : 1; /*!< [16..16] Interrupt Status Flag for DMAC NOTE: Writing 1 to the + * IR flag is prohibited. */ + uint32_t : 15; + } DELSR_b[8]; + }; +} R_DMA_Type; /*!< Size = 160 (0xa0) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller (R_DMAC0) + */ + +typedef struct /*!< (@ 0x4000A000) R_DMAC0 Structure */ +{ + union + { + __IOM uint32_t DMSAR; /*!< (@ 0x00000000) DMA Source Address Register */ + + struct + { + __IOM uint32_t DMSAR : 32; /*!< [31..0] Specifies the transfer source start address. */ + } DMSAR_b; + }; + + union + { + __IOM uint32_t DMDAR; /*!< (@ 0x00000004) DMA Destination Address Register */ + + struct + { + __IOM uint32_t DMDAR : 32; /*!< [31..0] Specifies the transfer destination start address. */ + } DMDAR_b; + }; + + union + { + __IOM uint32_t DMCRA; /*!< (@ 0x00000008) DMA Transfer Count Register */ + + struct + { + __IOM uint32_t DMCRAL : 16; /*!< [15..0] Lower bits of transfer count */ + __IOM uint32_t DMCRAH : 10; /*!< [25..16] Upper bits of transfer count */ + uint32_t : 6; + } DMCRA_b; + }; + + union + { + __IOM uint32_t DMCRB; /*!< (@ 0x0000000C) DMA Block Transfer Count Register */ + + struct + { + __IOM uint32_t DMCRBL : 16; /*!< [15..0] Functions as a number of block, repeat or repeat-block + * transfer counter. */ + __IOM uint32_t DMCRBH : 16; /*!< [31..16] Specifies the number of block transfer operations or + * repeat transfer operations. */ + } DMCRB_b; + }; + + union + { + __IOM uint16_t DMTMD; /*!< (@ 0x00000010) DMA Transfer Mode Register */ + + struct + { + __IOM uint16_t DCTG : 2; /*!< [1..0] Transfer Request Source Select */ + uint16_t : 6; + __IOM uint16_t SZ : 2; /*!< [9..8] Transfer Data Size Select */ + __IOM uint16_t TKP : 1; /*!< [10..10] Transfer Keeping */ + uint16_t : 1; + __IOM uint16_t DTS : 2; /*!< [13..12] Repeat Area Select */ + __IOM uint16_t MD : 2; /*!< [15..14] Transfer Mode Select */ + } DMTMD_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t DMINT; /*!< (@ 0x00000013) DMA Interrupt Setting Register */ + + struct + { + __IOM uint8_t DARIE : 1; /*!< [0..0] Destination Address Extended Repeat Area Overflow Interrupt + * Enable */ + __IOM uint8_t SARIE : 1; /*!< [1..1] Source Address Extended Repeat Area Overflow Interrupt + * Enable */ + __IOM uint8_t RPTIE : 1; /*!< [2..2] Repeat Size End Interrupt Enable */ + __IOM uint8_t ESIE : 1; /*!< [3..3] Transfer Escape End Interrupt Enable */ + __IOM uint8_t DTIE : 1; /*!< [4..4] Transfer End Interrupt Enable */ + uint8_t : 3; + } DMINT_b; + }; + + union + { + __IOM uint16_t DMAMD; /*!< (@ 0x00000014) DMA Address Mode Register */ + + struct + { + __IOM uint16_t DARA : 5; /*!< [4..0] Destination Address Extended Repeat Area Specifies the + * extended repeat area on the destination address. For details + * on the settings. */ + __IOM uint16_t DADR : 1; /*!< [5..5] Destination Address Update Select After Reload */ + __IOM uint16_t DM : 2; /*!< [7..6] Destination Address Update Mode */ + __IOM uint16_t SARA : 5; /*!< [12..8] Source Address Extended Repeat Area Specifies the extended + * repeat area on the source address. For details on the settings. */ + __IOM uint16_t SADR : 1; /*!< [13..13] Source Address Update Select After Reload */ + __IOM uint16_t SM : 2; /*!< [15..14] Source Address Update Mode */ + } DMAMD_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t DMOFR; /*!< (@ 0x00000018) DMA Offset Register */ + + struct + { + __IOM uint32_t DMOFR : 32; /*!< [31..0] Specifies the offset when offset addition is selected + * as the address update mode for transfer source or destination. */ + } DMOFR_b; + }; + + union + { + __IOM uint8_t DMCNT; /*!< (@ 0x0000001C) DMA Transfer Enable Register */ + + struct + { + __IOM uint8_t DTE : 1; /*!< [0..0] DMA Transfer Enable */ + uint8_t : 7; + } DMCNT_b; + }; + + union + { + __IOM uint8_t DMREQ; /*!< (@ 0x0000001D) DMA Software Start Register */ + + struct + { + __IOM uint8_t SWREQ : 1; /*!< [0..0] DMA Software Start */ + uint8_t : 3; + __IOM uint8_t CLRS : 1; /*!< [4..4] DMA Software Start Bit Auto Clear Select */ + uint8_t : 3; + } DMREQ_b; + }; + + union + { + __IOM uint8_t DMSTS; /*!< (@ 0x0000001E) DMA Status Register */ + + struct + { + __IOM uint8_t ESIF : 1; /*!< [0..0] Transfer Escape End Interrupt Flag */ + uint8_t : 3; + __IOM uint8_t DTIF : 1; /*!< [4..4] Transfer End Interrupt Flag */ + uint8_t : 2; + __IM uint8_t ACT : 1; /*!< [7..7] DMA Active Flag */ + } DMSTS_b; + }; + __IM uint8_t RESERVED2; + __IOM uint32_t DMSRR; /*!< (@ 0x00000020) DMA Source Reload Address Register */ + __IOM uint32_t DMDRR; /*!< (@ 0x00000024) DMA Destination Reload Address Register */ + + union + { + __IOM uint32_t DMSBS; /*!< (@ 0x00000028) DMA Source Buffer Size Register */ + + struct + { + __IOM uint32_t DMSBSL : 16; /*!< [15..0] Functions as data transfer counter in repeat-block transfer + * mode */ + __IOM uint32_t DMSBSH : 16; /*!< [31..16] Specifies the repeat-area size in repeat-block transfer + * mode */ + } DMSBS_b; + }; + + union + { + __IOM uint32_t DMDBS; /*!< (@ 0x0000002C) DMA Destination Buffer Size Register */ + + struct + { + __IOM uint32_t DMDBSL : 16; /*!< [15..0] Functions as data transfer counter in repeat-block transfer + * mode */ + __IOM uint32_t DMDBSH : 16; /*!< [31..16] Specifies the repeat-area size in repeat-block transfer + * mode */ + } DMDBS_b; + }; + + union + { + __IOM uint8_t DMBWR; /*!< (@ 0x00000030) DMA Bufferable Write Enable Register */ + + struct + { + __IOM uint8_t BWE : 1; /*!< [0..0] Bufferable Write Enable */ + uint8_t : 7; + } DMBWR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; +} R_DMAC0_Type; /*!< Size = 52 (0x34) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC) + */ + +typedef struct /*!< (@ 0x40311000) R_DOC Structure */ +{ + union + { + __IOM uint8_t DOCR; /*!< (@ 0x00000000) DOC Control Register */ + + struct + { + __IOM uint8_t OMS : 2; /*!< [1..0] Operating Mode Select */ + __IOM uint8_t DCSEL : 1; /*!< [2..2] Detection Condition Select */ + uint8_t : 2; + __IM uint8_t DOPCF : 1; /*!< [5..5] Data Operation Circuit Flag */ + __IOM uint8_t DOPCFCL : 1; /*!< [6..6] DOPCF Clear */ + uint8_t : 1; + } DOCR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t DODIR; /*!< (@ 0x00000002) DOC Data Input Register */ + + struct + { + __IOM uint16_t DODIR : 16; /*!< [15..0] 16-bit read-write register in which 16-bit data for + * use in the operations are stored. */ + } DODIR_b; + }; + + union + { + __IOM uint16_t DODSR; /*!< (@ 0x00000004) DOC Data Setting Register */ + + struct + { + __IOM uint16_t DODSR : 16; /*!< [15..0] This register stores 16-bit data for use as a reference + * in data comparison mode. This register also stores the + * results of operations in data addition and data subtraction + * modes. */ + } DODSR_b; + }; +} R_DOC_Type; /*!< Size = 6 (0x6) */ + +/* =========================================================================================================================== */ +/* ================ R_DRW ================ */ +/* =========================================================================================================================== */ + +/** + * @brief 2D Drawing Engine (R_DRW) + */ + +typedef struct /*!< (@ 0x40344000) R_DRW Structure */ +{ + union + { + union + { + __OM uint32_t CONTROL; /*!< (@ 0x00000000) Geometry Control Register */ + + struct + { + __OM uint32_t LIM1ENABLE : 1; /*!< [0..0] Enable limiter 1 */ + __OM uint32_t LIM2ENABLE : 1; /*!< [1..1] Enable limiter 2 */ + __OM uint32_t LIM3ENABLE : 1; /*!< [2..2] Enable limiter 3 */ + __OM uint32_t LIM4ENABLE : 1; /*!< [3..3] Enable limiter 4 */ + __OM uint32_t LIM5ENABLE : 1; /*!< [4..4] Enable limiter 5 */ + __OM uint32_t LIM6ENABLE : 1; /*!< [5..5] Enable limiter 6 */ + __OM uint32_t QUAD1ENABLE : 1; /*!< [6..6] Enable quadratic coupling of limiters 1 and 2 */ + __OM uint32_t QUAD2ENABLE : 1; /*!< [7..7] Enable quadratic coupling of limiters 3 and 4 */ + __OM uint32_t QUAD3ENABLE : 1; /*!< [8..8] Enable quadratic coupling of limiters 5 and 6 */ + __OM uint32_t LIM1THRESHOLD : 1; /*!< [9..9] Enable limiter 1 threshold mode */ + __OM uint32_t LIM2THRESHOLD : 1; /*!< [10..10] Enable limiter 2 threshold mode */ + __OM uint32_t LIM3THRESHOLD : 1; /*!< [11..11] Enable limiter 3 threshold mode */ + __OM uint32_t LIM4THRESHOLD : 1; /*!< [12..12] Enable limiter 4 threshold mode */ + __OM uint32_t LIM5THRESHOLD : 1; /*!< [13..13] Enable limiter 5 threshold mode */ + __OM uint32_t LIM6THRESHOLD : 1; /*!< [14..14] Enable limiter 6 threshold mode */ + __OM uint32_t BAND1ENABLE : 1; /*!< [15..15] Enable band postprocess for limiter 1 (see L1BAND) */ + __OM uint32_t BAND2ENABLE : 1; /*!< [16..16] Enable band postprocess for limiter 1 (see L1BAND) */ + __OM uint32_t UNION12 : 1; /*!< [17..17] Combine limter 1 & 2 as union (output is called A) */ + __OM uint32_t UNION34 : 1; /*!< [18..18] Combine limter 3 & 4 as union (output is called B) */ + __OM uint32_t UNION56 : 1; /*!< [19..19] Combine limter 5 & 6 as union (output is called D) */ + __OM uint32_t UNIONAB : 1; /*!< [20..20] Combine outputs A & B as union (output is called C) */ + __OM uint32_t UNIONCD : 1; /*!< [21..21] Combine outputs C & D as union (output is final) */ + __OM uint32_t SPANABORT : 1; /*!< [22..22] Shape is horizontally convex, only a single span per + * scanline */ + __OM uint32_t SPANSTORE : 1; /*!< [23..23] Nextline span start is always equal or left to current-line + * span start */ + uint32_t : 8; + } CONTROL_b; + }; + + union + { + __IM uint32_t STATUS; /*!< (@ 0x00000000) Status Control Register */ + + struct + { + __IM uint32_t BUSYENUM : 1; /*!< [0..0] Enumeration unit status */ + __IM uint32_t BUSYWRITE : 1; /*!< [1..1] Framebuffer writeback status */ + __IM uint32_t CACHEDIRTY : 1; /*!< [2..2] Framebuffer cache status */ + __IM uint32_t DLISTACTIVE : 1; /*!< [3..3] Display list reader status */ + __IM uint32_t ENUMIRQ : 1; /*!< [4..4] enumeration finished interrupt triggered */ + __IM uint32_t DLISTIRQ : 1; /*!< [5..5] display list finished interrupt triggered */ + __IM uint32_t BUSIRQ : 1; /*!< [6..6] bus error interrupt triggered */ + uint32_t : 1; + __IM uint32_t BUSERRMFB : 1; /*!< [8..8] framebuffer bus error interrupt triggered */ + __IM uint32_t BUSERRMTXMRL : 1; /*!< [9..9] texture bus error interrupt triggered */ + __IM uint32_t BUSERRMDL : 1; /*!< [10..10] display list bus error interrupt triggered */ + uint32_t : 21; + } STATUS_b; + }; + }; + + union + { + union + { + __OM uint32_t CONTROL2; /*!< (@ 0x00000004) Surface Control Register */ + + struct + { + __OM uint32_t PATTERNENABLE : 1; /*!< [0..0] Pixel source is a pattern color (blend of COLOR1 and + * COLOR2 depending on PATTERN and pattern index) */ + __OM uint32_t TEXTUREENABLE : 1; /*!< [1..1] Pixel source is read from texture and used as an alpha + * to blend between COLOR1 and COLOR2 */ + __OM uint32_t PATTERNSOURCEL5 : 1; /*!< [2..2] Limiter 5 is used as pattern index instead of the default + * U limiter.Limiter 5 can be combined with limiter 6 to form + * a quadratic limiter which can be used to make quadratic + * pattern functions to draw radial patterns. */ + __OM uint32_t USEACB : 1; /*!< [3..3] Alpha blend mode */ + __OM uint32_t READFORMAT32 : 2; /*!< [5..4] Bit 4 and 3 of the texture buffer format.See READFORMAT + * above for description */ + __OM uint32_t BSFA : 1; /*!< [6..6] Blend source factor for alpha channel in alpha channel + * blending mode (USEACB = 1) */ + __OM uint32_t BDFA : 1; /*!< [7..7] Blend destinetion factor for alpha channel in alpha channel + * blending mode (USEACB = 1) */ + __OM uint32_t WRITEFORMAT2 : 1; /*!< [8..8] Bit 3 of framebuffer pixel formatSee WRITEFORMAT above + * description. */ + __OM uint32_t BSF : 1; /*!< [9..9] Blend source factorsrc factor is alpha (factor is 1 per + * default) */ + __OM uint32_t BDF : 1; /*!< [10..10] Blend destination factordst factor is alpha (factor + * is 1 per default) */ + __OM uint32_t BSI : 1; /*!< [11..11] Blend source factor is invertedsrc factor will be inverted + * (meaning 1-a or 1-1 depending on BSF) */ + __OM uint32_t BDI : 1; /*!< [12..12] Blend destination factor is inverteddst factor will + * be inverted (meaning 1-a or 1-1 depending on BDF) */ + __OM uint32_t BC2 : 1; /*!< [13..13] Blend color 2 instead of framebuffer pixel */ + __OM uint32_t TEXTURECLAMPX : 1; /*!< [14..14] Calculating U limiter outside use textureThe bit describes + * what happens if the U limiter (x direction in texture space) + * calculates a U value outside of the used texture */ + __OM uint32_t TEXTURECLAMPY : 1; /*!< [15..15] Calculating V limiter outside use textureThe bit describes + * what happens if the V limiter (y direction in texture space) + * calculates a V value outside of the used texture */ + __OM uint32_t TEXTUREFILTERX : 1; /*!< [16..16] Linear filtering on texture U axis */ + __OM uint32_t TEXTUREFILTERY : 1; /*!< [17..17] Linear filtering on texture V axis */ + __OM uint32_t READFORMAT10 : 2; /*!< [19..18] Pixel format of the texture buffer{READFORMAT32,READFORMAT10}0000: + * 8 bpp a(8)0001: 16 bpp RGB(565)0010: 32 bpp aRGB(8888)0011: + * 16 bpp aRGB(4444)0100: 16 bpp aRGB(1555)0101: 8 bpp aCLUT(44) + * 4 bit alpha and 4 bit indexed color1001: 8 bpp CLUT(8)/I(8), + * 8 bit indexed color/luminance1010: 4 bpp CLUT(4)/I(4), + * 4 bit indexed color/luminance1011: 2 bpp CLUT(2)/I(2), + * 2 bit indexed color/luminance 1100: 1 bpp CLUT(1)/I(1), + * 1 bit indexed color/luminance */ + __OM uint32_t WRITEFORMAT10 : 2; /*!< [21..20] Pixel format of the framebuffer */ + __OM uint32_t WRITEALPHA : 2; /*!< [23..22] Writeback alpha source for framebufferSet the 'alpha + * source' for the framebuffer(USEACB = 0)Blend alpha in color + * 2 instead of framebuffer alpha((USEACB = 1))In not alpha + * channel blending mode (USEACB = 0):Set the 'alpha source' + * for the framebuffer.In alpha channel blending mode (USEACB + * = 1):Blend alpha in color 2 instead of framebuffer alpha00B: + * BC2A = 1: use alpha from framebuffer as destination (DST_A)else: + * BC2A = 0: use alpha in color 2 as destination (DST_A) */ + __OM uint32_t RLEENABLE : 1; /*!< [24..24] RLE enable */ + __OM uint32_t CLUTENABLE : 1; /*!< [25..25] CLUT enable */ + __OM uint32_t COLKEYENABLE : 1; /*!< [26..26] color keying enable */ + __OM uint32_t CLUTFORMAT : 1; /*!< [27..27] Format of the CLUT */ + __OM uint32_t BSIA : 1; /*!< [28..28] Blend source factor inverted in alpha channel (USEACB + * = 1) */ + __OM uint32_t BDIA : 1; /*!< [29..29] Blend destination factor inverted in alpha channel + * (USEACB = 1) */ + __OM uint32_t RLEPIXELWIDTH : 2; /*!< [31..30] Texel width for RLE unit */ + } CONTROL2_b; + }; + + union + { + __IM uint32_t HWREVISION; /*!< (@ 0x00000004) Hardware Version and Feature Set ID Register */ + + struct + { + __IM uint32_t REV : 12; /*!< [11..0] Revision number */ + uint32_t : 5; + __IM uint32_t DLR : 1; /*!< [17..17] Display list reader feature */ + __IM uint32_t FBCACHE : 1; /*!< [18..18] Framebuffer cache feature */ + __IM uint32_t TXCACHE : 1; /*!< [19..19] Texture cache feature */ + __IM uint32_t PERFCOUNT : 1; /*!< [20..20] Two performance counter feature */ + __IM uint32_t TEXCLU : 1; /*!< [21..21] Texture CLUT with 16 or 256 entries feature */ + uint32_t : 1; + __IM uint32_t RLEUNIT : 1; /*!< [23..23] RLE unit feature */ + __IM uint32_t TEXCLUT256 : 1; /*!< [24..24] Texture CLUT feature */ + __IM uint32_t COLORKEY : 1; /*!< [25..25] Colorkey feature */ + uint32_t : 1; + __IM uint32_t ACBLEND : 1; /*!< [27..27] Alpha channel blending feature */ + uint32_t : 4; + } HWREVISION_b; + }; + }; + __IM uint32_t RESERVED[2]; + + union + { + __OM uint32_t L1START; /*!< (@ 0x00000010) Limiter 1 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L1START_b; + }; + + union + { + __OM uint32_t L2START; /*!< (@ 0x00000014) Limiter 2 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L2START_b; + }; + + union + { + __OM uint32_t L3START; /*!< (@ 0x00000018) Limiter 3 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L3START_b; + }; + + union + { + __OM uint32_t L4START; /*!< (@ 0x0000001C) Limiter 4 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L4START_b; + }; + + union + { + __OM uint32_t L5START; /*!< (@ 0x00000020) Limiter 5 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L5START_b; + }; + + union + { + __OM uint32_t L6START; /*!< (@ 0x00000024) Limiter 6 Start Value Register */ + + struct + { + __OM uint32_t LSTART : 32; /*!< [31..0] Start value of the n'th limiter(n=1-6) */ + } L6START_b; + }; + + union + { + __OM uint32_t L1XADD; /*!< (@ 0x00000028) Limiter 1 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L1XADD_b; + }; + + union + { + __OM uint32_t L2XADD; /*!< (@ 0x0000002C) Limiter 2 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L2XADD_b; + }; + + union + { + __OM uint32_t L3XADD; /*!< (@ 0x00000030) Limiter 3 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L3XADD_b; + }; + + union + { + __OM uint32_t L4XADD; /*!< (@ 0x00000034) Limiter 4 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L4XADD_b; + }; + + union + { + __OM uint32_t L5XADD; /*!< (@ 0x00000038) Limiter 5 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L5XADD_b; + }; + + union + { + __OM uint32_t L6XADD; /*!< (@ 0x0000003C) Limiter 6 X-Axis Increment Register */ + + struct + { + __OM uint32_t LXADD : 32; /*!< [31..0] X-axis increment */ + } L6XADD_b; + }; + + union + { + __OM uint32_t L1YADD; /*!< (@ 0x00000040) Limiter 1 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L1YADD_b; + }; + + union + { + __OM uint32_t L2YADD; /*!< (@ 0x00000044) Limiter 2 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L2YADD_b; + }; + + union + { + __OM uint32_t L3YADD; /*!< (@ 0x00000048) Limiter 3 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L3YADD_b; + }; + + union + { + __OM uint32_t L4YADD; /*!< (@ 0x0000004C) Limiter 4 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L4YADD_b; + }; + + union + { + __OM uint32_t L5YADD; /*!< (@ 0x00000050) Limiter 5 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L5YADD_b; + }; + + union + { + __OM uint32_t L6YADD; /*!< (@ 0x00000054) Limiter 6 Y-Axis Increment Register */ + + struct + { + __OM uint32_t LYADD : 32; /*!< [31..0] Y-axis increment */ + } L6YADD_b; + }; + + union + { + __OM uint32_t L1BAND; /*!< (@ 0x00000058) Limiter 1 Band Width Parameter Register */ + + struct + { + __OM uint32_t LBAND : 32; /*!< [31..0] Limiter m band width parameter */ + } L1BAND_b; + }; + + union + { + __OM uint32_t L2BAND; /*!< (@ 0x0000005C) Limiter 2 Band Width Parameter Register */ + + struct + { + __OM uint32_t LBAND : 32; /*!< [31..0] Limiter m band width parameter */ + } L2BAND_b; + }; + __IM uint32_t RESERVED1; + + union + { + __OM uint32_t COLOR1; /*!< (@ 0x00000064) Base Color Register */ + + struct + { + __OM uint32_t COLOR1B : 8; /*!< [7..0] Blue channel of color 1 */ + __OM uint32_t COLOR1G : 8; /*!< [15..8] Green channel of color 1 */ + __OM uint32_t COLOR1R : 8; /*!< [23..16] Red channel of color 1 */ + __OM uint32_t COLOR1A : 8; /*!< [31..24] Alpha channel of color 1(0x00: transparent. . . 0xFF: + * opaque) */ + } COLOR1_b; + }; + + union + { + __OM uint32_t COLOR2; /*!< (@ 0x00000068) Secondary Color Register */ + + struct + { + __OM uint32_t COLOR2B : 8; /*!< [7..0] Blue channel of color 2 */ + __OM uint32_t COLOR2G : 8; /*!< [15..8] Green channel of color 2 */ + __OM uint32_t COLOR2R : 8; /*!< [23..16] Red channel of color 2 */ + __OM uint32_t COLOR2A : 8; /*!< [31..24] Alpha channel of color 2(0x00: transparent. . . 0xFF: + * opaque) */ + } COLOR2_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __OM uint32_t PATTERN; /*!< (@ 0x00000074) Pattern Register */ + + struct + { + __OM uint32_t PATTERN : 8; /*!< [7..0] Bitmap of the pattern */ + uint32_t : 24; + } PATTERN_b; + }; + + union + { + __OM uint32_t SIZE; /*!< (@ 0x00000078) Bounding Box Dimension Register */ + + struct + { + __OM uint32_t SIZEX : 16; /*!< [15..0] Width of the bounding box in pixelsvalid range: 0 to + * 1024 */ + __OM uint32_t SIZEY : 16; /*!< [31..16] Height of the bounding box in pixelsvalid range: 0 + * to 1024 */ + } SIZE_b; + }; + + union + { + __OM uint32_t PITCH; /*!< (@ 0x0000007C) Framebuffer Pitch And Spanstore Delay Register */ + + struct + { + __OM uint32_t PITCH : 16; /*!< [15..0] pitch of the framebuffer. A negative width can be used + * to render bottom-up instead of top-down */ + __OM uint32_t SSD : 16; /*!< [31..16] Spanstore delay */ + } PITCH_b; + }; + + union + { + __OM uint32_t ORIGIN; /*!< (@ 0x00000080) Framebuffer Base Address Register */ + + struct + { + __OM uint32_t ORIGIN : 32; /*!< [31..0] Address of the first pixel in framebuffer */ + } ORIGIN_b; + }; + __IM uint32_t RESERVED3[3]; + + union + { + __OM uint32_t LUSTART; /*!< (@ 0x00000090) U Limiter Start Value Register */ + + struct + { + __OM uint32_t LUSTART : 32; /*!< [31..0] U limiter start value */ + } LUSTART_b; + }; + + union + { + __OM uint32_t LUXADD; /*!< (@ 0x00000094) U Limiter X-Axis Increment Register */ + + struct + { + __OM uint32_t LUXADD : 32; /*!< [31..0] U limiter x-axis increment */ + } LUXADD_b; + }; + + union + { + __OM uint32_t LUYADD; /*!< (@ 0x00000098) U Limiter Y-Axis Increment Register */ + + struct + { + __OM uint32_t LUYADD : 32; /*!< [31..0] U limiter y-axis increment */ + } LUYADD_b; + }; + + union + { + __OM uint32_t LVSTARTI; /*!< (@ 0x0000009C) V Limiter Start Value Integer Part Register */ + + struct + { + __OM uint32_t LVSTARTI : 32; /*!< [31..0] V limiter start value integer part */ + } LVSTARTI_b; + }; + + union + { + __OM uint32_t LVSTARTF; /*!< (@ 0x000000A0) V Limiter Start Value Fractional Part Register */ + + struct + { + __OM uint32_t LVSTARTF : 16; /*!< [15..0] V limiter start value fractional part */ + uint32_t : 16; + } LVSTARTF_b; + }; + + union + { + __OM uint32_t LVXADDI; /*!< (@ 0x000000A4) V Limiter X-Axis Increment Integer Part Register */ + + struct + { + __OM uint32_t LVXADDI : 32; /*!< [31..0] V limiter x-axis increment integer part */ + } LVXADDI_b; + }; + + union + { + __OM uint32_t LVYADDI; /*!< (@ 0x000000A8) V Limiter Y-Axis Increment Integer Part Register */ + + struct + { + __OM uint32_t LVYADDI : 32; /*!< [31..0] V limiter y-axis increment integer part */ + } LVYADDI_b; + }; + + union + { + __OM uint32_t LVYXADDF; /*!< (@ 0x000000AC) V Limiter Increment Fractional Parts Register */ + + struct + { + __OM uint32_t LVXADDF : 16; /*!< [15..0] V xlimiter increment fractional part */ + __OM uint32_t LVYADDF : 16; /*!< [31..16] V y limiter increment fractional part */ + } LVYXADDF_b; + }; + __IM uint32_t RESERVED4; + + union + { + __OM uint32_t TEXPITCH; /*!< (@ 0x000000B4) Texels Per Texture Line Register */ + + struct + { + __OM uint32_t TEXPITCH : 32; /*!< [31..0] Texels per texture linevalid range: 0 to 2048 */ + } TEXPITCH_b; + }; + + union + { + __OM uint32_t TEXMASK; /*!< (@ 0x000000B8) Texture Size or Texture Address Mask Register */ + + struct + { + __OM uint32_t TEXUMASK : 11; /*!< [10..0] U maskSet TEXUMASK[10:0] = texture_width -1In texture + * wrapping mode (CONTROL2.TEXTURECLAMPX = 0): texture_width + * must be a power of 2.In texture clamping mode (CONTROL2.TEXTURECLAMPX + * = 1):all widths up to 2048 are allowed. */ + __OM uint32_t TEXVMASK : 21; /*!< [31..11] V maskSet TEXVMASK[20:0] = TEXPITCH * (texture_height + * - 1).In texture wrapping mode (CONTROL2.TEXTURECLAMPY = + * 0): texture_height must be a power of 2In texture clamping + * mode (CONTROL2.TEXTURECLAMPY = 1):all heights up to 1024 + * are allowed. */ + } TEXMASK_b; + }; + + union + { + __OM uint32_t TEXORIGIN; /*!< (@ 0x000000BC) Texture Base Address Register */ + + struct + { + __OM uint32_t TEXORIGIN : 32; /*!< [31..0] Texture base address */ + } TEXORIGIN_b; + }; + + union + { + __OM uint32_t IRQCTL; /*!< (@ 0x000000C0) Interrupt Control Register */ + + struct + { + __OM uint32_t ENUMIRQEN : 1; /*!< [0..0] ENUMIRQ interrupt mask enable */ + __OM uint32_t DLISTIRQEN : 1; /*!< [1..1] DLISTIRQ interrupt mask enable */ + __OM uint32_t ENUMIRQCLR : 1; /*!< [2..2] Clear enumeration interrupt ENUMIRQ */ + __OM uint32_t DLISTIRQCLR : 1; /*!< [3..3] Clear display list interrupt DLISTIRQ */ + __OM uint32_t BUSIRQEN : 1; /*!< [4..4] BUSIRQ interrupt mask enable */ + __OM uint32_t BUSIRQCLR : 1; /*!< [5..5] Clear bus error interrupt BUSIRQ */ + uint32_t : 26; + } IRQCTL_b; + }; + + union + { + __OM uint32_t CACHECTL; /*!< (@ 0x000000C4) Cache Control Register */ + + struct + { + __OM uint32_t CENABLEFX : 1; /*!< [0..0] Framebuffer cache enable */ + __OM uint32_t CFLUSHFX : 1; /*!< [1..1] Flush framebuffer cache */ + __OM uint32_t CENABLETX : 1; /*!< [2..2] Texture cache enable */ + __OM uint32_t CFLUSHTX : 1; /*!< [3..3] Flush texture cache */ + uint32_t : 28; + } CACHECTL_b; + }; + + union + { + __OM uint32_t DLISTSTART; /*!< (@ 0x000000C8) Display List Start Address Register */ + + struct + { + __OM uint32_t DLISTSTART : 32; /*!< [31..0] Display list start address */ + } DLISTSTART_b; + }; + + union + { + __IOM uint32_t PERFCOUNT1; /*!< (@ 0x000000CC) Performance Counter 1 */ + + struct + { + __IOM uint32_t PERFCOUNT : 32; /*!< [31..0] Counter value.The counter is reset by writing PERFCOUNT + * = 0000 0000H. */ + } PERFCOUNT1_b; + }; + + union + { + __IOM uint32_t PERFCOUNT2; /*!< (@ 0x000000D0) Performance Counter 2 */ + + struct + { + __IOM uint32_t PERFCOUNT : 32; /*!< [31..0] Counter value.The counter is reset by writing PERFCOUNT + * = 0000 0000H. */ + } PERFCOUNT2_b; + }; + + union + { + __OM uint32_t PERFTRIGGER; /*!< (@ 0x000000D4) Performance Counters Control Register */ + + struct + { + __OM uint32_t PERFTRIGGER1 : 16; /*!< [15..0] Selects the internal event that will increment PERFCOUNT1 + * register. */ + __OM uint32_t PERFTRIGGER2 : 16; /*!< [31..16] Selects the internal event that will increment PERFCOUNT2 + * register */ + } PERFTRIGGER_b; + }; + __IM uint32_t RESERVED5; + + union + { + __OM uint32_t TEXCLADDR; /*!< (@ 0x000000DC) CLUT Start Address Register */ + + struct + { + __OM uint32_t CLADDR : 8; /*!< [7..0] Texture CLUT start address for indexed texture format */ + uint32_t : 24; + } TEXCLADDR_b; + }; + + union + { + __OM uint32_t TEXCLDATA; /*!< (@ 0x000000E0) CLUT Data Register */ + + struct + { + __OM uint32_t CLDATA : 32; /*!< [31..0] Texture CLUT data for Indexed texture format */ + } TEXCLDATA_b; + }; + + union + { + __OM uint32_t TEXCLOFFSET; /*!< (@ 0x000000E4) CLUT Offset Register */ + + struct + { + __OM uint32_t CLOFFSET : 8; /*!< [7..0] Texture CLUT offset for Indexed texture format. CLOFFSET[7:0] + * is or'ed with the original index */ + uint32_t : 24; + } TEXCLOFFSET_b; + }; + + union + { + __OM uint32_t COLKEY; /*!< (@ 0x000000E8) Color Key Register */ + + struct + { + __OM uint32_t COLKEYB : 8; /*!< [7..0] Blue channel of color key */ + __OM uint32_t COLKEYG : 8; /*!< [15..8] Green channel of color key */ + __OM uint32_t COLKEYR : 8; /*!< [23..16] Red channel of color key */ + uint32_t : 8; + } COLKEY_b; + }; +} R_DRW_Type; /*!< Size = 236 (0xec) */ + +/* =========================================================================================================================== */ +/* ================ R_DTC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Transfer Controller (R_DTC) + */ + +typedef struct /*!< (@ 0x4000AC00) R_DTC Structure */ +{ + union + { + __IOM uint8_t DTCCR; /*!< (@ 0x00000000) DTC Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t RRS : 1; /*!< [4..4] DTC Transfer Information Read Skip Enable. */ + uint8_t : 3; + } DTCCR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t DTCVBR; /*!< (@ 0x00000004) DTC Vector Base Register */ + + struct + { + __IOM uint32_t DTCVBR : 32; /*!< [31..0] DTC Vector Base Address.Note: A value cannot be set + * in the lower-order 10 bits. These bits are fixed to 0. */ + } DTCVBR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint8_t DTCST; /*!< (@ 0x0000000C) DTC Module Start Register */ + + struct + { + __IOM uint8_t DTCST : 1; /*!< [0..0] DTC Module Start */ + uint8_t : 7; + } DTCST_b; + }; + __IM uint8_t RESERVED3; + + union + { + __IM uint16_t DTCSTS; /*!< (@ 0x0000000E) DTC Status Register */ + + struct + { + __IM uint16_t VECN : 8; /*!< [7..0] DTC-Activating Vector Number MonitoringThese bits indicate + * the vector number for the activating source when DTC transfer + * is in progress.The value is only valid if DTC transfer + * is in progress (the value of the ACT flag is 1) */ + uint16_t : 7; + __IM uint16_t ACT : 1; /*!< [15..15] DTC Active Flag */ + } DTCSTS_b; + }; + + union + { + __IOM uint8_t DTCCR_SEC; /*!< (@ 0x00000010) DTC Control Register for secure Region */ + + struct + { + uint8_t : 4; + __IOM uint8_t RRSS : 1; /*!< [4..4] DTC Transfer Information Read Skip Enable for Secure */ + uint8_t : 3; + } DTCCR_SEC_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; + __IOM uint32_t DTCVBR_SEC; /*!< (@ 0x00000014) DTC Vector Base Register for secure Region */ + __IM uint32_t RESERVED6[2]; + + union + { + __IOM uint32_t DTEVR; /*!< (@ 0x00000020) DTC Error Vector Register */ + + struct + { + __IM uint32_t DTEV : 8; /*!< [7..0] DTC Error Vector Number */ + __IM uint32_t DTEVSAM : 1; /*!< [8..8] DTC Error Vector Number SA Monitor */ + uint32_t : 7; + __IOM uint32_t DTESTA : 1; /*!< [16..16] DTC Error Status Flag */ + uint32_t : 15; + } DTEVR_b; + }; +} R_DTC_Type; /*!< Size = 36 (0x24) */ + +/* =========================================================================================================================== */ +/* ================ R_ELC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Event Link Controller (R_ELC) + */ + +typedef struct /*!< (@ 0x40201000) R_ELC Structure */ +{ + union + { + __IOM uint8_t ELCR; /*!< (@ 0x00000000) Event Link Controller Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t ELCON : 1; /*!< [7..7] All Event Link Enable */ + } ELCR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IOM R_ELC_ELSEGR_Type ELSEGR[2]; /*!< (@ 0x00000004) Event Link Software Event Generation Register */ + __IM uint32_t RESERVED2[6]; + __IOM R_ELC_ELSR_Type ELSR[31]; /*!< (@ 0x00000020) Event Link Setting Register [0..30] */ + __IM uint32_t RESERVED3[17]; + + union + { + __IOM uint32_t ELCSARA; /*!< (@ 0x000000E0) Event Link Controller Security Attribution Register + * A */ + + struct + { + __IOM uint32_t ELCR : 1; /*!< [0..0] Event Link Controller RegisterSecurity Attribution */ + __IOM uint32_t ELSEGR0 : 1; /*!< [1..1] Event Link Software Event Generation Register 0 Security + * Attribution */ + __IOM uint32_t ELSEGR1 : 1; /*!< [2..2] Event Link Software Event Generation Register 1Security + * Attribution */ + uint32_t : 29; + } ELCSARA_b; + }; + + union + { + __IOM uint32_t ELCSARB; /*!< (@ 0x000000E4) Event Link Controller Security Attribution Register + * B */ + + struct + { + __IOM uint32_t ELSR0 : 1; /*!< [0..0] Event Link Setting Register 0 Security Attribution */ + __IOM uint32_t ELSR1 : 1; /*!< [1..1] Event Link Setting Register 1 Security Attribution */ + __IOM uint32_t ELSR2 : 1; /*!< [2..2] Event Link Setting Register 2 Security Attribution */ + __IOM uint32_t ELSR3 : 1; /*!< [3..3] Event Link Setting Register 3 Security Attribution */ + __IOM uint32_t ELSR4 : 1; /*!< [4..4] Event Link Setting Register 4 Security Attribution */ + __IOM uint32_t ELSR5 : 1; /*!< [5..5] Event Link Setting Register 5 Security Attribution */ + __IOM uint32_t ELSR6 : 1; /*!< [6..6] Event Link Setting Register 6 Security Attribution */ + __IOM uint32_t ELSR7 : 1; /*!< [7..7] Event Link Setting Register 7 Security Attribution */ + __IOM uint32_t ELSR8 : 1; /*!< [8..8] Event Link Setting Register 8 Security Attribution */ + __IOM uint32_t ELSR9 : 1; /*!< [9..9] Event Link Setting Register 9 Security Attribution */ + __IOM uint32_t ELSR10 : 1; /*!< [10..10] Event Link Setting Register 10 Security Attribution */ + __IOM uint32_t ELSR11 : 1; /*!< [11..11] Event Link Setting Register 11 Security Attribution */ + __IOM uint32_t ELSR12 : 1; /*!< [12..12] Event Link Setting Register 12 Security Attribution */ + __IOM uint32_t ELSR13 : 1; /*!< [13..13] Event Link Setting Register 13 Security Attribution */ + __IOM uint32_t ELSR14 : 1; /*!< [14..14] Event Link Setting Register 14 Security Attribution */ + __IOM uint32_t ELSR15 : 1; /*!< [15..15] Event Link Setting Register 15 Security Attribution */ + __IOM uint32_t ELSR16 : 1; /*!< [16..16] Event Link Setting Register 16 Security Attribution */ + __IOM uint32_t ELSR17 : 1; /*!< [17..17] Event Link Setting Register 17 Security Attribution */ + uint32_t : 12; + __IOM uint32_t ELSR30 : 1; /*!< [30..30] Event Link Setting Register 30 Security Attribution */ + uint32_t : 1; + } ELCSARB_b; + }; + __IM uint32_t RESERVED4[2]; + + union + { + __IOM uint32_t ELCPARA; /*!< (@ 0x000000F0) Event Link Controller Priviledge Attribution + * Register A */ + + struct + { + __IOM uint32_t ELCR : 1; /*!< [0..0] Event Link Controller Register Priviledge Attribution */ + __IOM uint32_t ELSEGR0 : 1; /*!< [1..1] Event Link Software Event Generation Register 0 Priviledge + * Attribution */ + __IOM uint32_t ELSEGR1 : 1; /*!< [2..2] Event Link Software Event Generation Register 1 Priviledge + * Attribution */ + uint32_t : 29; + } ELCPARA_b; + }; + + union + { + __IOM uint32_t ELCPARB; /*!< (@ 0x000000F4) Event Link Controller Priviledge Attribution + * Register B */ + + struct + { + __IOM uint32_t ELSR0 : 1; /*!< [0..0] Event Link Setting Register 0 Priviledge Attribution */ + __IOM uint32_t ELSR1 : 1; /*!< [1..1] Event Link Setting Register 1 Priviledge Attribution */ + __IOM uint32_t ELSR2 : 1; /*!< [2..2] Event Link Setting Register 2 Priviledge Attribution */ + __IOM uint32_t ELSR3 : 1; /*!< [3..3] Event Link Setting Register 3 Priviledge Attribution */ + __IOM uint32_t ELSR4 : 1; /*!< [4..4] Event Link Setting Register 4 Priviledge Attribution */ + __IOM uint32_t ELSR5 : 1; /*!< [5..5] Event Link Setting Register 5 Priviledge Attribution */ + __IOM uint32_t ELSR6 : 1; /*!< [6..6] Event Link Setting Register 6 Priviledge Attribution */ + __IOM uint32_t ELSR7 : 1; /*!< [7..7] Event Link Setting Register 7 Priviledge Attribution */ + __IOM uint32_t ELSR8 : 1; /*!< [8..8] Event Link Setting Register 8 Priviledge Attribution */ + __IOM uint32_t ELSR9 : 1; /*!< [9..9] Event Link Setting Register 9 Priviledge Attribution */ + __IOM uint32_t ELSR10 : 1; /*!< [10..10] Event Link Setting Register 10 Priviledge Attribution */ + __IOM uint32_t ELSR11 : 1; /*!< [11..11] Event Link Setting Register 11 Priviledge Attribution */ + __IOM uint32_t ELSR12 : 1; /*!< [12..12] Event Link Setting Register 12 Priviledge Attribution */ + __IOM uint32_t ELSR13 : 1; /*!< [13..13] Event Link Setting Register 13 Priviledge Attribution */ + __IOM uint32_t ELSR14 : 1; /*!< [14..14] Event Link Setting Register 14 Priviledge Attribution */ + __IOM uint32_t ELSR15 : 1; /*!< [15..15] Event Link Setting Register 15 Priviledge Attribution */ + __IOM uint32_t ELSR16 : 1; /*!< [16..16] Event Link Setting Register 16 Priviledge Attribution */ + __IOM uint32_t ELSR17 : 1; /*!< [17..17] Event Link Setting Register 17 Priviledge Attribution */ + uint32_t : 12; + __IOM uint32_t ELSR30 : 1; /*!< [30..30] Event Link Setting Register 30 Priviledge Attribution */ + uint32_t : 1; + } ELCPARB_b; + }; +} R_ELC_Type; /*!< Size = 248 (0xf8) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet MAC Controller (R_ETHERC0) + */ + +typedef struct /*!< (@ 0x40354100) R_ETHERC0 Structure */ +{ + union + { + __IOM uint32_t ECMR; /*!< (@ 0x00000000) ETHERC Mode Register */ + + struct + { + __IOM uint32_t PRM : 1; /*!< [0..0] Promiscuous Mode */ + __IOM uint32_t DM : 1; /*!< [1..1] Duplex Mode */ + __IOM uint32_t RTM : 1; /*!< [2..2] Bit Rate */ + __IOM uint32_t ILB : 1; /*!< [3..3] Internal Loopback Mode */ + uint32_t : 1; + __IOM uint32_t TE : 1; /*!< [5..5] Transmission Enable */ + __IOM uint32_t RE : 1; /*!< [6..6] Reception Enable */ + uint32_t : 2; + __IOM uint32_t MPDE : 1; /*!< [9..9] Magic Packet Detection Enable */ + uint32_t : 2; + __IOM uint32_t PRCEF : 1; /*!< [12..12] CRC Error Frame Receive Mode */ + uint32_t : 3; + __IOM uint32_t TXF : 1; /*!< [16..16] Transmit Flow Control Operating Mode */ + __IOM uint32_t RXF : 1; /*!< [17..17] Receive Flow Control Operating Mode */ + __IOM uint32_t PFR : 1; /*!< [18..18] PAUSE Frame Receive Mode */ + __IOM uint32_t ZPF : 1; /*!< [19..19] 0 Time PAUSE Frame Enable */ + __IOM uint32_t TPC : 1; /*!< [20..20] PAUSE Frame Transmit */ + uint32_t : 11; + } ECMR_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t RFLR; /*!< (@ 0x00000008) Receive Frame Maximum Length Register */ + + struct + { + __IOM uint32_t RFL : 12; /*!< [11..0] Receive Frame Maximum LengthThe set value becomes the + * maximum frame length. The minimum value that can be set + * is 1,518 bytes, and the maximum value that can be set is + * 2,048 bytes. Values that are less than 1,518 bytes are + * regarded as 1,518 bytes, and values larger than 2,048 bytes + * are regarded as 2,048 bytes. */ + uint32_t : 20; + } RFLR_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t ECSR; /*!< (@ 0x00000010) ETHERC Status Register */ + + struct + { + __IOM uint32_t ICD : 1; /*!< [0..0] False Carrier Detect Flag */ + __IOM uint32_t MPD : 1; /*!< [1..1] Magic Packet Detect Flag */ + __IOM uint32_t LCHNG : 1; /*!< [2..2] LCHNG Link Signal Change Flag */ + uint32_t : 1; + __IOM uint32_t PSRTO : 1; /*!< [4..4] PAUSE Frame Retransmit Over Flag */ + __IOM uint32_t BFR : 1; /*!< [5..5] Continuous Broadcast Frame Reception Flag */ + uint32_t : 26; + } ECSR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t ECSIPR; /*!< (@ 0x00000018) ETHERC Interrupt Enable Register */ + + struct + { + __IOM uint32_t ICDIP : 1; /*!< [0..0] False Carrier Detect Interrupt Enable */ + __IOM uint32_t MPDIP : 1; /*!< [1..1] Magic Packet Detect Interrupt Enable */ + __IOM uint32_t LCHNGIP : 1; /*!< [2..2] LINK Signal Change Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t PSRTOIP : 1; /*!< [4..4] PAUSE Frame Retransmit Over Interrupt Enable */ + __IOM uint32_t BFSIPR : 1; /*!< [5..5] Continuous Broadcast Frame Reception Interrupt Enable */ + uint32_t : 26; + } ECSIPR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t PIR; /*!< (@ 0x00000020) PHY Interface Register */ + + struct + { + __IOM uint32_t MDC : 1; /*!< [0..0] MII/RMII Management Data ClockThe MDC bit value is output + * from the ETn_MDC pin to supply the management data clock + * to the MII or RMII. */ + __IOM uint32_t MMD : 1; /*!< [1..1] MII/RMII Management Mode */ + __IOM uint32_t MDO : 1; /*!< [2..2] MII/RMII Management Data-OutThe MDO bit value is output + * from the ETn_MDIO pin when the MMD bit is 1 (write). The + * value is not output when the MMD bit is 0 (read). */ + __IM uint32_t MDI : 1; /*!< [3..3] MII/RMII Management Data-InThis bit indicates the level + * of the ETn_MDIO pin. The write value should be 0. */ + uint32_t : 28; + } PIR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IM uint32_t PSR; /*!< (@ 0x00000028) PHY Status Register */ + + struct + { + __IM uint32_t LMON : 1; /*!< [0..0] ETn_LINKSTA Pin Status FlagThe link status can be read + * by connecting the link signal output from the PHY-LSI to + * the ETn_LINKSTA pin. For details on the polarity, refer + * to the specifications of the connected PHY-LSI. */ + uint32_t : 31; + } PSR_b; + }; + __IM uint32_t RESERVED5[5]; + + union + { + __IOM uint32_t RDMLR; /*!< (@ 0x00000040) Random Number Generation Counter Upper Limit + * Setting Register */ + + struct + { + __IOM uint32_t RMD : 20; /*!< [19..0] Random Number Generation Counter */ + uint32_t : 12; + } RDMLR_b; + }; + __IM uint32_t RESERVED6[3]; + + union + { + __IOM uint32_t IPGR; /*!< (@ 0x00000050) IPG Register */ + + struct + { + __IOM uint32_t IPG : 5; /*!< [4..0] Interpacket Gap Range:'16bit time(0x00)'-'140bit time(0x1F)' */ + uint32_t : 27; + } IPGR_b; + }; + + union + { + __IOM uint32_t APR; /*!< (@ 0x00000054) Automatic PAUSE Frame Register */ + + struct + { + __IOM uint32_t AP : 16; /*!< [15..0] Automatic PAUSE Time SettingThese bits set the value + * of the pause_time parameter for a PAUSE frame that is automatically + * transmitted. Transmission is not performed until the set + * value multiplied by 512 bit time has elapsed. */ + uint32_t : 16; + } APR_b; + }; + + union + { + __OM uint32_t MPR; /*!< (@ 0x00000058) Manual PAUSE Frame Register */ + + struct + { + __OM uint32_t MP : 16; /*!< [15..0] Manual PAUSE Time SettingThese bits set the value of + * the pause_time parameter for a PAUSE frame that is manually + * transmitted. Transmission is not performed until the set + * value multiplied by 512 bit time has elapsed. The read + * value is undefined. */ + uint32_t : 16; + } MPR_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IM uint32_t RFCF; /*!< (@ 0x00000060) Received PAUSE Frame Counter */ + + struct + { + __IM uint32_t RPAUSE : 8; /*!< [7..0] Received PAUSE Frame CountNumber of received PAUSE frames */ + uint32_t : 24; + } RFCF_b; + }; + + union + { + __IOM uint32_t TPAUSER; /*!< (@ 0x00000064) PAUSE Frame Retransmit Count Setting Register */ + + struct + { + __IOM uint32_t TPAUSE : 16; /*!< [15..0] Automatic PAUSE Frame Retransmit Setting */ + uint32_t : 16; + } TPAUSER_b; + }; + __IM uint32_t TPAUSECR; /*!< (@ 0x00000068) PAUSE Frame Retransmit Counter */ + + union + { + __IOM uint32_t BCFRR; /*!< (@ 0x0000006C) Broadcast Frame Receive Count Setting Register */ + + struct + { + __IOM uint32_t BCF : 16; /*!< [15..0] Broadcast Frame Continuous Receive Count Setting */ + uint32_t : 16; + } BCFRR_b; + }; + __IM uint32_t RESERVED8[20]; + + union + { + __IOM uint32_t MAHR; /*!< (@ 0x000000C0) MAC Address Upper Bit Register */ + + struct + { + __IOM uint32_t MAHR : 32; /*!< [31..0] MAC Address Upper Bit RegisterThe MAHR register sets + * the upper 32 bits (b47 to b16) of the 48-bit MAC address. */ + } MAHR_b; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t MALR; /*!< (@ 0x000000C8) MAC Address Lower Bit Register */ + + struct + { + __IOM uint32_t MALR : 16; /*!< [15..0] MAC Address Lower Bit RegisterThe MALR register sets + * the lower 16 bits of the 48-bit MAC address. */ + uint32_t : 16; + } MALR_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IOM uint32_t TROCR; /*!< (@ 0x000000D0) Transmit Retry Over Counter Register */ + + struct + { + __IOM uint32_t TROCR : 32; /*!< [31..0] Transmit Retry Over Counter RegisterThe TROCR register + * is a counter indicating the number of frames that fail + * to be retransmitted. */ + } TROCR_b; + }; + __IOM uint32_t CDCR; /*!< (@ 0x000000D4) Late Collision Detect Counter Register */ + + union + { + __IOM uint32_t LCCR; /*!< (@ 0x000000D8) Lost Carrier Counter Register */ + + struct + { + __IOM uint32_t LCCR : 32; /*!< [31..0] Lost Carrier Counter RegisterThe LCCR register is a + * counter indicating the number of times a loss of carrier + * is detected during frame transmission. */ + } LCCR_b; + }; + + union + { + __IOM uint32_t CNDCR; /*!< (@ 0x000000DC) Carrier Not Detect Counter Register */ + + struct + { + __IOM uint32_t CNDCR : 32; /*!< [31..0] Carrier Not Detect Counter RegisterThe CNDCR register + * is a counter indicating the number of times a carrier is + * not detected during preamble transmission. */ + } CNDCR_b; + }; + __IM uint32_t RESERVED11; + + union + { + __IOM uint32_t CEFCR; /*!< (@ 0x000000E4) CRC Error Frame Receive Counter Register */ + + struct + { + __IOM uint32_t CEFCR : 32; /*!< [31..0] CRC Error Frame Receive Counter RegisterThe CEFCR register + * is a counter indicating the number of received frames where + * a CRC error has been detected. */ + } CEFCR_b; + }; + + union + { + __IOM uint32_t FRECR; /*!< (@ 0x000000E8) Frame Receive Error Counter Register */ + + struct + { + __IOM uint32_t FRECR : 32; /*!< [31..0] Frame Receive Error Counter RegisterThe FRECR register + * is a counter indicating the number of times a frame receive + * error has occurred. */ + } FRECR_b; + }; + + union + { + __IOM uint32_t TSFRCR; /*!< (@ 0x000000EC) Too-Short Frame Receive Counter Register */ + + struct + { + __IOM uint32_t TSFRCR : 32; /*!< [31..0] Too-Short Frame Receive Counter RegisterThe TSFRCR register + * is a counter indicating the number of times a short frame + * that is shorter than 64 bytes has been received. */ + } TSFRCR_b; + }; + + union + { + __IOM uint32_t TLFRCR; /*!< (@ 0x000000F0) Too-Long Frame Receive Counter Register */ + + struct + { + __IOM uint32_t TLFRCR : 32; /*!< [31..0] Too-Long Frame Receive Counter RegisterThe TLFRCR register + * is a counter indicating the number of times a long frame + * that is longer than the RFLR register value has been received. */ + } TLFRCR_b; + }; + + union + { + __IOM uint32_t RFCR; /*!< (@ 0x000000F4) Received Alignment Error Frame Counter Register */ + + struct + { + __IOM uint32_t RFCR : 32; /*!< [31..0] Received Alignment Error Frame Counter RegisterThe RFCR + * register is a counter indicating the number of times a + * frame has been received with the alignment error (frame + * is not an integral number of octets). */ + } RFCR_b; + }; + + union + { + __IOM uint32_t MAFCR; /*!< (@ 0x000000F8) Multicast Address Frame Receive Counter Register */ + + struct + { + __IOM uint32_t MAFCR : 32; /*!< [31..0] Multicast Address Frame Receive Counter RegisterThe + * MAFCR register is a counter indicating the number of times + * a frame where the multicast address is set has been received. */ + } MAFCR_b; + }; +} R_ETHERC0_Type; /*!< Size = 252 (0xfc) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EDMAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet DMA Controller (R_ETHERC_EDMAC) + */ + +typedef struct /*!< (@ 0x40354000) R_ETHERC_EDMAC Structure */ +{ + union + { + __IOM uint32_t EDMR; /*!< (@ 0x00000000) EDMAC Mode Register */ + + struct + { + __OM uint32_t SWR : 1; /*!< [0..0] Software Reset */ + uint32_t : 3; + __IOM uint32_t DL : 2; /*!< [5..4] Transmit/Receive DescriptorLength */ + __IOM uint32_t DE : 1; /*!< [6..6] Big Endian Mode/Little Endian ModeNOTE: This setting + * applies to data for the transmit/receive buffer. It does + * not apply to transmit/receive descriptors and registers. */ + uint32_t : 25; + } EDMR_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t EDTRR; /*!< (@ 0x00000008) EDMAC Transmit Request Register */ + + struct + { + __OM uint32_t TR : 1; /*!< [0..0] Transmit Request */ + uint32_t : 31; + } EDTRR_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t EDRRR; /*!< (@ 0x00000010) EDMAC Receive Request Register */ + + struct + { + __IOM uint32_t RR : 1; /*!< [0..0] Receive Request */ + uint32_t : 31; + } EDRRR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t TDLAR; /*!< (@ 0x00000018) Transmit Descriptor List Start Address Register */ + + struct + { + __IOM uint32_t TDLAR : 32; /*!< [31..0] The start address of the transmit descriptor list is + * set. Set the start address according to the descriptor + * length selected by the EDMR.DL[1:0] bits.16-byte boundary: + * Lower 4 bits = 0000b32-byte boundary: Lower 5 bits = 00000b64-byte + * boundary: Lower 6 bits = 000000b */ + } TDLAR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t RDLAR; /*!< (@ 0x00000020) Receive Descriptor List Start Address Register */ + + struct + { + __IOM uint32_t RDLAR : 32; /*!< [31..0] The start address of the receive descriptor list is + * set. Set the start address according to the descriptor + * length selected by the EDMR.DL[1:0] bits.16-byte boundary: + * Lower 4 bits = 0000b32-byte boundary: Lower 5 bits = 00000b64-byte + * boundary: Lower 6 bits = 000000b */ + } RDLAR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t EESR; /*!< (@ 0x00000028) ETHERC/EDMAC Status Register */ + + struct + { + __IOM uint32_t CERF : 1; /*!< [0..0] CRC Error Flag */ + __IOM uint32_t PRE : 1; /*!< [1..1] PHY-LSI Receive Error Flag */ + __IOM uint32_t RTSF : 1; /*!< [2..2] Frame-Too-Short Error Flag */ + __IOM uint32_t RTLF : 1; /*!< [3..3] Frame-Too-Long Error Flag */ + __IOM uint32_t RRF : 1; /*!< [4..4] Alignment Error Flag */ + uint32_t : 2; + __IOM uint32_t RMAF : 1; /*!< [7..7] Multicast Address Frame Receive Flag */ + __IOM uint32_t TRO : 1; /*!< [8..8] Transmit Retry Over Flag */ + __IOM uint32_t CD : 1; /*!< [9..9] Late Collision Detect Flag */ + __IOM uint32_t DLC : 1; /*!< [10..10] Loss of Carrier Detect Flag */ + __IOM uint32_t CND : 1; /*!< [11..11] Carrier Not Detect Flag */ + uint32_t : 4; + __IOM uint32_t RFOF : 1; /*!< [16..16] Receive FIFO Overflow Flag */ + __IOM uint32_t RDE : 1; /*!< [17..17] Receive Descriptor Empty Flag */ + __IOM uint32_t FR : 1; /*!< [18..18] Frame Receive Flag */ + __IOM uint32_t TFUF : 1; /*!< [19..19] Transmit FIFO Underflow Flag */ + __IOM uint32_t TDE : 1; /*!< [20..20] Transmit Descriptor Empty Flag */ + __IOM uint32_t TC : 1; /*!< [21..21] Frame Transfer Complete Flag */ + __IM uint32_t ECI : 1; /*!< [22..22] ETHERC Status Register Source FlagNOTE: When the source + * in the ETHERCn.ECSR register is cleared, the ECI flag is + * also cleared. */ + __IOM uint32_t ADE : 1; /*!< [23..23] Address Error Flag */ + __IOM uint32_t RFCOF : 1; /*!< [24..24] Receive Frame Counter Overflow Flag */ + __IOM uint32_t RABT : 1; /*!< [25..25] Receive Abort Detect Flag */ + __IOM uint32_t TABT : 1; /*!< [26..26] Transmit Abort Detect Flag */ + uint32_t : 3; + __IOM uint32_t TWB : 1; /*!< [30..30] Write-Back Complete Flag */ + uint32_t : 1; + } EESR_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t EESIPR; /*!< (@ 0x00000030) ETHERC/EDMAC Status Interrupt Enable Register */ + + struct + { + __IOM uint32_t CERFIP : 1; /*!< [0..0] CRC Error Interrupt Request Enable */ + __IOM uint32_t PREIP : 1; /*!< [1..1] PHY-LSI Receive Error Interrupt Request Enable */ + __IOM uint32_t RTSFIP : 1; /*!< [2..2] Frame-Too-Short Error Interrupt Request Enable */ + __IOM uint32_t RTLFIP : 1; /*!< [3..3] Frame-Too-Long Error Interrupt Request Enable */ + __IOM uint32_t RRFIP : 1; /*!< [4..4] Alignment Error Interrupt Request Enable */ + uint32_t : 2; + __IOM uint32_t RMAFIP : 1; /*!< [7..7] Multicast Address Frame Receive Interrupt Request Enable */ + __IOM uint32_t TROIP : 1; /*!< [8..8] Transmit Retry Over Interrupt Request Enable */ + __IOM uint32_t CDIP : 1; /*!< [9..9] Late Collision Detect Interrupt Request Enable */ + __IOM uint32_t DLCIP : 1; /*!< [10..10] Loss of Carrier Detect Interrupt Request Enable */ + __IOM uint32_t CNDIP : 1; /*!< [11..11] Carrier Not Detect Interrupt Request Enable */ + uint32_t : 4; + __IOM uint32_t RFOFIP : 1; /*!< [16..16] Receive FIFO Overflow Interrupt Request Enable */ + __IOM uint32_t RDEIP : 1; /*!< [17..17] Receive Descriptor Empty Interrupt Request Enable */ + __IOM uint32_t FRIP : 1; /*!< [18..18] Frame Receive Interrupt Request Enable */ + __IOM uint32_t TFUFIP : 1; /*!< [19..19] Transmit FIFO Underflow Interrupt Request Enable */ + __IOM uint32_t TDEIP : 1; /*!< [20..20] Transmit Descriptor Empty Interrupt Request Enable */ + __IOM uint32_t TCIP : 1; /*!< [21..21] Frame Transfer Complete Interrupt Request Enable */ + __IOM uint32_t ECIIP : 1; /*!< [22..22] ETHERC Status Register Source Interrupt Request Enable */ + __IOM uint32_t ADEIP : 1; /*!< [23..23] Address Error Interrupt Request Enable */ + __IOM uint32_t RFCOFIP : 1; /*!< [24..24] Receive Frame Counter Overflow Interrupt Request Enable */ + __IOM uint32_t RABTIP : 1; /*!< [25..25] Receive Abort Detect Interrupt Request Enable */ + __IOM uint32_t TABTIP : 1; /*!< [26..26] Transmit Abort Detect Interrupt Request Enable */ + uint32_t : 3; + __IOM uint32_t TWBIP : 1; /*!< [30..30] Write-Back Complete Interrupt Request Enable */ + uint32_t : 1; + } EESIPR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint32_t TRSCER; /*!< (@ 0x00000038) ETHERC/EDMAC Transmit/Receive Status Copy Enable + * Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t RRFCE : 1; /*!< [4..4] RRF Flag Copy Enable */ + uint32_t : 2; + __IOM uint32_t RMAFCE : 1; /*!< [7..7] RMAF Flag Copy Enable */ + uint32_t : 24; + } TRSCER_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IOM uint32_t RMFCR; /*!< (@ 0x00000040) Missed-Frame Counter Register */ + + struct + { + __IOM uint32_t MFC : 16; /*!< [15..0] Missed-Frame CounterThese bits indicate the number of + * frames that are discarded and not transferred to the receive + * buffer during reception. */ + uint32_t : 16; + } RMFCR_b; + }; + __IM uint32_t RESERVED8; + + union + { + __IOM uint32_t TFTR; /*!< (@ 0x00000048) Transmit FIFO Threshold Register */ + + struct + { + __IOM uint32_t TFT : 11; /*!< [10..0] Transmit FIFO Threshold00Dh to 200h: The threshold is + * the set value multiplied by 4. Example: 00Dh: 52 bytes + * 040h: 256 bytes 100h: 1024 bytes 200h: 2048 bytes */ + uint32_t : 21; + } TFTR_b; + }; + __IM uint32_t RESERVED9; + + union + { + __IOM uint32_t FDR; /*!< (@ 0x00000050) Transmit FIFO Threshold Register */ + + struct + { + __IOM uint32_t RFD : 5; /*!< [4..0] Transmit FIFO Depth */ + uint32_t : 3; + __IOM uint32_t TFD : 5; /*!< [12..8] Receive FIFO Depth */ + uint32_t : 19; + } FDR_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IOM uint32_t RMCR; /*!< (@ 0x00000058) Receive Method Control Register */ + + struct + { + __IOM uint32_t RNR : 1; /*!< [0..0] Receive Request Reset */ + uint32_t : 31; + } RMCR_b; + }; + __IM uint32_t RESERVED11[2]; + + union + { + __IOM uint32_t TFUCR; /*!< (@ 0x00000064) Transmit FIFO Underflow Counter */ + + struct + { + __IOM uint32_t UNDER : 16; /*!< [15..0] Transmit FIFO Underflow CountThese bits indicate how + * many times the transmit FIFO has underflowed. The counter + * stops when the counter value reaches FFFFh. */ + uint32_t : 16; + } TFUCR_b; + }; + + union + { + __IOM uint32_t RFOCR; /*!< (@ 0x00000068) Receive FIFO Overflow Counter */ + + struct + { + __IOM uint32_t OVER : 16; /*!< [15..0] Receive FIFO Overflow CountThese bits indicate how many + * times the receive FIFO has overflowed. The counter stops + * when the counter value reaches FFFFh. */ + uint32_t : 16; + } RFOCR_b; + }; + + union + { + __IOM uint32_t IOSR; /*!< (@ 0x0000006C) Independent Output Signal Setting Register */ + + struct + { + __IOM uint32_t ELB : 1; /*!< [0..0] External Loopback Mode */ + uint32_t : 31; + } IOSR_b; + }; + + union + { + __IOM uint32_t FCFTR; /*!< (@ 0x00000070) Flow Control Start FIFO Threshold Setting Register */ + + struct + { + __IOM uint32_t RFDO : 3; /*!< [2..0] Receive FIFO Data PAUSE Output Threshold(When (RFDO+1)x256-32 + * bytes of data is stored in the receive FIFO.) */ + uint32_t : 13; + __IOM uint32_t RFFO : 3; /*!< [18..16] Receive FIFO Frame PAUSE Output Threshold(When ((RFFO+1)x2) + * receive frames have been stored in the receive FIFO.) */ + uint32_t : 13; + } FCFTR_b; + }; + __IM uint32_t RESERVED12; + + union + { + __IOM uint32_t RPADIR; /*!< (@ 0x00000078) Receive Data Padding Insert Register */ + + struct + { + __IOM uint32_t PADR : 6; /*!< [5..0] Padding Slot */ + uint32_t : 10; + __IOM uint32_t PADS : 2; /*!< [17..16] Padding Size */ + uint32_t : 14; + } RPADIR_b; + }; + + union + { + __IOM uint32_t TRIMD; /*!< (@ 0x0000007C) Transmit Interrupt Setting Register */ + + struct + { + __IOM uint32_t TIS : 1; /*!< [0..0] Transmit Interrupt EnableSet the EESR.TWB flag to 1 in + * the mode selected by the TIM bit to notify an interrupt. */ + uint32_t : 3; + __IOM uint32_t TIM : 1; /*!< [4..4] Transmit Interrupt Mode */ + uint32_t : 27; + } TRIMD_b; + }; + __IM uint32_t RESERVED13[18]; + + union + { + __IOM uint32_t RBWAR; /*!< (@ 0x000000C8) Receive Buffer Write Address Register */ + + struct + { + __IM uint32_t RBWAR : 32; /*!< [31..0] Receive Buffer Write Address RegisterThe RBWAR register + * indicates the last address that the EDMAC has written data + * to when writing to the receive buffer.Refer to the address + * indicated by the RBWAR register to recognize which address + * in the receive buffer the EDMAC is writing data to. Note + * that the address that the EDMAC is outputting to the receive + * buffer may not match the read value of the RBWAR register + * during data reception. */ + } RBWAR_b; + }; + + union + { + __IOM uint32_t RDFAR; /*!< (@ 0x000000CC) Receive Descriptor Fetch Address Register */ + + struct + { + __IM uint32_t RDFAR : 32; /*!< [31..0] Receive Descriptor Fetch Address RegisterThe RDFAR register + * indicates the start address of the last fetched receive + * descriptor when the EDMAC fetches descriptor information + * from the receive descriptor.Refer to the address indicated + * by the RDFAR register to recognize which receive descriptor + * information the EDMAC is using for the current processing. + * Note that the address of the receive descriptor that the + * EDMAC fetches may not match the read value of the RDFAR + * register during data reception. */ + } RDFAR_b; + }; + __IM uint32_t RESERVED14; + + union + { + __IOM uint32_t TBRAR; /*!< (@ 0x000000D4) Transmit Buffer Read Address Register */ + + struct + { + __IM uint32_t TBRAR : 32; /*!< [31..0] Transmit Buffer Read Address RegisterThe TBRAR register + * indicates the last address that the EDMAC has read data + * from when reading data from the transmit buffer.Refer to + * the address indicated by the TBRAR register to recognize + * which address in the transmit buffer the EDMAC is reading + * from. Note that the address that the EDMAC is outputting + * to the transmit buffer may not match the read value of + * the TBRAR register. */ + } TBRAR_b; + }; + + union + { + __IM uint32_t TDFAR; /*!< (@ 0x000000D8) Transmit Descriptor Fetch Address Register */ + + struct + { + __IM uint32_t TDFAR : 32; /*!< [31..0] Transmit Descriptor Fetch Address RegisterThe TDFAR + * register indicates the start address of the last fetched + * transmit descriptor when the EDMAC fetches descriptor information + * from the transmit descriptor.Refer to the address indicated + * by the TDFAR register to recognize which transmit descriptor + * information the EDMAC is using for the current processing. + * Note that the address of the transmit descriptor that the + * EDMAC fetches may not match the read value of the TDFAR + * register. */ + } TDFAR_b; + }; +} R_ETHERC_EDMAC_Type; /*!< Size = 220 (0xdc) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP_CMD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Application Command Interface Command-Issuing Area (R_FACI_HP_CMD) + */ + +typedef struct /*!< (@ 0x40100000) R_FACI_HP_CMD Structure */ +{ + union + { + __IOM uint16_t FACI_CMD16; /*!< (@ 0x00000000) FACI Command Issuing Area (halfword access) */ + __IOM uint8_t FACI_CMD8; /*!< (@ 0x00000000) FACI Command Issuing Area (halfword access) */ + }; +} R_FACI_HP_CMD_Type; /*!< Size = 2 (0x2) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Application Command Interface (R_FACI_HP) + */ + +typedef struct /*!< (@ 0x4011E000) R_FACI_HP Structure */ +{ + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint8_t FASTAT; /*!< (@ 0x00000010) Flash Access Status */ + + struct + { + uint8_t : 3; + __IOM uint8_t DFAE : 1; /*!< [3..3] Data Flash Access Error */ + __IM uint8_t CMDLK : 1; /*!< [4..4] Command Lock */ + uint8_t : 2; + __IOM uint8_t CFAE : 1; /*!< [7..7] Code Flash Access Error */ + } FASTAT_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; + + union + { + __IOM uint8_t FAEINT; /*!< (@ 0x00000014) Flash Access Error Interrupt Enable */ + + struct + { + uint8_t : 3; + __IOM uint8_t DFAEIE : 1; /*!< [3..3] Data Flash Access Error Interrupt Enable */ + __IOM uint8_t CMDLKIE : 1; /*!< [4..4] Command Lock Interrupt Enable */ + uint8_t : 2; + __IOM uint8_t CFAEIE : 1; /*!< [7..7] Code Flash Access Error Interrupt Enable */ + } FAEINT_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + + union + { + __IOM uint8_t FRDYIE; /*!< (@ 0x00000018) Flash Ready Interrupt Enable */ + + struct + { + __IOM uint8_t FRDYIE : 1; /*!< [0..0] FRDY Interrupt Enable */ + uint8_t : 7; + } FRDYIE_b; + }; + __IM uint8_t RESERVED5; + __IM uint16_t RESERVED6; + __IM uint32_t RESERVED7[5]; + + union + { + __IOM uint32_t FSADDR; /*!< (@ 0x00000030) Flash Start Address */ + + struct + { + __IOM uint32_t FSA : 32; /*!< [31..0] Start Address of Flash Sequencer Command Target Area + * These bits can be written when FRDY bit of FSTATR register + * is '1'. Writing to these bits in FRDY = '0' is ignored. */ + } FSADDR_b; + }; + + union + { + __IOM uint32_t FEADDR; /*!< (@ 0x00000034) Flash End Address */ + + struct + { + __IOM uint32_t FEA : 32; /*!< [31..0] End Address of Flash Sequencer Command Target Area Specifies + * end address of target area in 'Blank Check' command. These + * bits can be written when FRDY bit of FSTATR register is + * '1'. Writing to these bits in FRDY = '0' is ignored. */ + } FEADDR_b; + }; + __IM uint32_t RESERVED8[3]; + + union + { + __IOM uint16_t FMEPROT; /*!< (@ 0x00000044) Flash P/E Mode Entry Protection Register */ + + struct + { + __IOM uint16_t CEPROT : 1; /*!< [0..0] Code Flash P/E Mode Entry ProtectionWriting to this bit + * is only possible when the FRDY bit in the FSTATR register + * is 1. Writing to this bit while the FRDY bit = 0 isignored.Writing + * to this bit is only possible when 16 bits are written and + * the value written to the KEY bits is D9h.Written values + * are not retained by these bits (always read as 0x00).Only + * secure access can write to this register. Both secure access + * and non-secure read access are allowed. Non-secure writeaccess + * is denied, but TrustZo */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FMEPROT_b; + }; + __IM uint16_t RESERVED9; + __IM uint32_t RESERVED10[12]; + + union + { + __IOM uint16_t FBPROT0; /*!< (@ 0x00000078) Flash Block Protection Register */ + + struct + { + __IOM uint16_t BPCN0 : 1; /*!< [0..0] Block Protection for Non-secure CancelThis bit can be + * written when the FRDY bit in the FSTATR register is 1. + * Writing to this bit is ignored when the FRDY bit is 0.Writing + * to this bit is only possible when 16 bits are written and + * the value written to the KEY[7:0] bits is 0x78.Written + * values are not retained by these bits (always read as 0x00). */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FBPROT0_b; + }; + __IM uint16_t RESERVED11; + + union + { + __IOM uint16_t FBPROT1; /*!< (@ 0x0000007C) Flash Block Protection for Secure Register */ + + struct + { + __IOM uint16_t BPCN1 : 1; /*!< [0..0] Block Protection for Secure CancelWriting to this bit + * is only possible when the FRDY bit in the FSTATR register + * is 1. Writing to this bit while FRDY bit = 0 is ignored.Writing + * to this bit is only possible when 16 bits are written and + * the value written to the KEY[7:0] bits is 0xB1.Written + * values are not retained by these bits (always read as 0x00). */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FBPROT1_b; + }; + __IM uint16_t RESERVED12; + + union + { + __IM uint32_t FSTATR; /*!< (@ 0x00000080) Flash Status */ + + struct + { + uint32_t : 6; + __IM uint32_t FLWEERR : 1; /*!< [6..6] Flash Write/Erase Protect Error Flag */ + uint32_t : 1; + __IM uint32_t PRGSPD : 1; /*!< [8..8] Programming-Suspended Status */ + __IM uint32_t ERSSPD : 1; /*!< [9..9] Erasure-Suspended Status */ + __IM uint32_t DBFULL : 1; /*!< [10..10] Data Buffer Full */ + __IM uint32_t SUSRDY : 1; /*!< [11..11] Suspend Ready */ + __IM uint32_t PRGERR : 1; /*!< [12..12] Programming Error */ + __IM uint32_t ERSERR : 1; /*!< [13..13] Erasure Error */ + __IM uint32_t ILGLERR : 1; /*!< [14..14] Illegal Command Error */ + __IM uint32_t FRDY : 1; /*!< [15..15] Flash Ready */ + uint32_t : 4; + __IM uint32_t OTERR : 1; /*!< [20..20] Other Error */ + __IOM uint32_t SECERR : 1; /*!< [21..21] Security Error */ + __IM uint32_t FESETERR : 1; /*!< [22..22] FENTRY Setting Error */ + __IM uint32_t ILGCOMERR : 1; /*!< [23..23] Illegal Command Error */ + uint32_t : 8; + } FSTATR_b; + }; + + union + { + __IOM uint16_t FENTRYR; /*!< (@ 0x00000084) Program/Erase Mode Entry */ + + struct + { + __IOM uint16_t FENTRYC : 1; /*!< [0..0] Code Flash P/E Mode Entry These bits can be written when + * FRDY bit in FSTATR register is '1'. Writing to this bit + * in FRDY = '0' is ignored. Writing to these bits is enabled + * only when this register is accessed in 16-bit size and + * H'AA is written to KEY bits */ + uint16_t : 6; + __IOM uint16_t FENTRYD : 1; /*!< [7..7] Data Flash P/E Mode Entry These bits can be written when + * FRDY bit in FSTATR register is '1'. Writing to this bit + * in FRDY = '0' is ignored. Writing to these bits is enabled + * only when this register is accessed in 16-bit size and + * H'AA is written to KEY bits. */ + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FENTRYR_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14; + + union + { + __IOM uint16_t FSUINITR; /*!< (@ 0x0000008C) Flash Sequencer Set-up Initialize */ + + struct + { + __IOM uint16_t SUINIT : 1; /*!< [0..0] Set-up Initialization This bit can be written when FRDY + * bit of FSTATR register is '1'. Writing to this bit in FRDY + * = '0' is ignored. Writing to these bits is enabled only + * when this register is accessed in 16-bit size and H'2D + * is written to KEY bits. */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FSUINITR_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16[4]; + + union + { + __IM uint16_t FCMDR; /*!< (@ 0x000000A0) Flash Sequencer Command */ + + struct + { + __IM uint16_t PCMDR : 8; /*!< [7..0] Previous Command Register */ + __IM uint16_t CMDR : 8; /*!< [15..8] Command Register */ + } FCMDR_b; + }; + __IM uint16_t RESERVED17; + __IM uint32_t RESERVED18[11]; + + union + { + __IOM uint8_t FBCCNT; /*!< (@ 0x000000D0) Blank Check Control */ + + struct + { + __IOM uint8_t BCDIR : 1; /*!< [0..0] Blank Check Direction */ + uint8_t : 7; + } FBCCNT_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20; + + union + { + __IM uint8_t FBCSTAT; /*!< (@ 0x000000D4) Blank Check Status */ + + struct + { + __IM uint8_t BCST : 1; /*!< [0..0] Blank Check Status Bit */ + uint8_t : 7; + } FBCSTAT_b; + }; + __IM uint8_t RESERVED21; + __IM uint16_t RESERVED22; + + union + { + __IM uint32_t FPSADDR; /*!< (@ 0x000000D8) Programmed Area Start Address */ + + struct + { + __IM uint32_t PSADR : 19; /*!< [18..0] Programmed Area Start Address NOTE: Indicates address + * of the first programmed data which is found in 'Blank Check' + * command execution. */ + uint32_t : 13; + } FPSADDR_b; + }; + + union + { + __IM uint32_t FAWMON; /*!< (@ 0x000000DC) Flash Access Window Monitor */ + + struct + { + __IM uint32_t FAWS : 11; /*!< [10..0] Start Sector Address for Access Window NOTE: These bits + * indicate the start sector address for setting the access + * window that is located in the configuration area. */ + uint32_t : 4; + __IM uint32_t FSPR : 1; /*!< [15..15] Protection Flag of programming the Access Window, Boot + * Flag and Temporary Boot Swap Control and 'Config Clear' + * command execution */ + __IM uint32_t FAWE : 11; /*!< [26..16] End Sector Address for Access Window NOTE: These bits + * indicate the end sector address for setting the access + * window that is located in the configuration area. */ + uint32_t : 4; + __IM uint32_t BTFLG : 1; /*!< [31..31] Flag of Start-Up area select for Boot Swap */ + } FAWMON_b; + }; + + union + { + __IOM uint16_t FCPSR; /*!< (@ 0x000000E0) FCU Process Switch */ + + struct + { + __IOM uint16_t ESUSPMD : 1; /*!< [0..0] Erasure-Suspended Mode */ + uint16_t : 15; + } FCPSR_b; + }; + __IM uint16_t RESERVED23; + + union + { + __IOM uint16_t FPCKAR; /*!< (@ 0x000000E4) Flash Sequencer Processing Clock Frequency Notification */ + + struct + { + __IOM uint16_t PCKA : 8; /*!< [7..0] Flash Sequencer Processing Clock Frequency These bits + * can be written when FRDY bit in FSTATR register is '1'. + * Writing to this bit in FRDY = '0' is ignored. Writing to + * these bits is enabled only when this register is accessed + * in 16-bit size and H'1E is written to KEY bits. */ + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FPCKAR_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint16_t FSUACR; /*!< (@ 0x000000E8) Flash Start-Up Area Control Register */ + + struct + { + __IOM uint16_t SAS : 2; /*!< [1..0] Start Up Area Select These bits can be written when FRDY + * bit in FSTATR register is '1'. Writing to this bit in FRDY + * = '0' is ignored. Writing to these bits is enabled only + * when this register is accessed in 16-bit size and H'66 + * is written to KEY bits. */ + uint16_t : 6; + __OM uint16_t KEY : 8; /*!< [15..8] KEY Code */ + } FSUACR_b; + }; + __IM uint16_t RESERVED25; +} R_FACI_HP_Type; /*!< Size = 236 (0xec) */ + +/* =========================================================================================================================== */ +/* ================ R_FCACHE ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Flash Cache (R_FCACHE) + */ + +typedef struct /*!< (@ 0x4001C100) R_FCACHE Structure */ +{ + union + { + __IOM uint16_t FCACHEE; /*!< (@ 0x00000000) Flash Cache Enable Register */ + + struct + { + __IOM uint16_t FCACHEEN : 1; /*!< [0..0] Flash Cache Enable */ + uint16_t : 15; + } FCACHEE_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t FCACHEIV; /*!< (@ 0x00000004) Flash Cache Invalidate Register */ + + struct + { + __IOM uint16_t FCACHEIV : 1; /*!< [0..0] Flash Cache Invalidate */ + uint16_t : 15; + } FCACHEIV_b; + }; + __IM uint16_t RESERVED1[11]; + + union + { + __IOM uint8_t FLWT; /*!< (@ 0x0000001C) Flash Wait Cycle Register */ + + struct + { + __IOM uint8_t FLWT : 3; /*!< [2..0] Flash Wait Cycle */ + uint8_t : 5; + } FLWT_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3[17]; + + union + { + __IOM uint16_t FSAR; /*!< (@ 0x00000040) Flash Security Attribution Register */ + + struct + { + __IOM uint16_t FLWTSA : 1; /*!< [0..0] FLWT Security Attribution */ + __IOM uint16_t FCACHEENSA : 1; /*!< [1..1] FCHACHEEN Security Attribution */ + uint16_t : 6; + __IOM uint16_t FCKMHZSA : 1; /*!< [8..8] FCKMHZ Security Attribution */ + __IOM uint16_t FACICOMISA : 1; /*!< [9..9] FACI command Issuing Security Attribution */ + __IOM uint16_t FACICOMRSA : 1; /*!< [10..10] FACI command Registers Security Attribution */ + __IOM uint16_t FACITRSA : 1; /*!< [11..11] FACI transfer Security Attribution */ + uint16_t : 4; + } FSAR_b; + }; +} R_FCACHE_Type; /*!< Size = 66 (0x42) */ + +/* =========================================================================================================================== */ +/* ================ R_GLCDC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Graphics LCD Controller (R_GLCDC) + */ + +typedef struct /*!< (@ 0x40342000) R_GLCDC Structure */ +{ + union + { + __IOM uint32_t GR1_CLUT0[256]; /*!< (@ 0x00000000) Color Palette 0 Plane for Graphics 1 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR1_CLUT0_b[256]; + }; + + union + { + __IOM uint32_t GR1_CLUT1[256]; /*!< (@ 0x00000400) Color Palette 1 Plane for Graphics 1 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR1_CLUT1_b[256]; + }; + + union + { + __IOM uint32_t GR2_CLUT0[256]; /*!< (@ 0x00000800) Color Palette 0 Plane for Graphics 2 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR2_CLUT0_b[256]; + }; + + union + { + __IOM uint32_t GR2_CLUT1[256]; /*!< (@ 0x00000C00) Color Palette 1 Plane for Graphics 2 Plane */ + + struct + { + __IOM uint32_t B : 8; /*!< [7..0] B Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t G : 8; /*!< [15..8] G Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t R : 8; /*!< [23..16] R Value of Color Palette n Plane for Graphics m Plane */ + __IOM uint32_t A : 8; /*!< [31..24] Alpha Blending Value of Color Palette n Plane for Graphics + * m Plane */ + } GR2_CLUT1_b[256]; + }; + __IOM R_GLCDC_BG_Type BG; /*!< (@ 0x00001000) Background Registers */ + __IM uint32_t RESERVED[57]; + __IOM R_GLCDC_GR_Type GR[2]; /*!< (@ 0x00001100) Layer Registers */ + __IOM R_GLCDC_GAM_Type GAM[3]; /*!< (@ 0x00001300) Gamma Settings */ + __IOM R_GLCDC_OUT_Type OUT; /*!< (@ 0x000013C0) Output Control Registers */ + __IM uint32_t RESERVED1[6]; + __IOM R_GLCDC_TCON_Type TCON; /*!< (@ 0x00001400) Timing Control Registers */ + __IM uint32_t RESERVED2[5]; + __IOM R_GLCDC_SYSCNT_Type SYSCNT; /*!< (@ 0x00001440) GLCDC System Control Registers */ +} R_GLCDC_Type; /*!< Size = 5204 (0x1454) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief General PWM Timer (R_GPT0) + */ + +typedef struct /*!< (@ 0x40322000) R_GPT0 Structure */ +{ + union + { + __IOM uint32_t GTWP; /*!< (@ 0x00000000) General PWM Timer Write-Protection Register */ + + struct + { + __IOM uint32_t WP : 1; /*!< [0..0] Register Write Disable */ + __IOM uint32_t STRWP : 1; /*!< [1..1] GTSTR.CSTRT Bit Write Disable */ + __IOM uint32_t STPWP : 1; /*!< [2..2] GTSTP.CSTOP Bit Write Disable */ + __IOM uint32_t CLRWP : 1; /*!< [3..3] GTCLR.CCLR Bit Write Disable */ + __IOM uint32_t CMNWP : 1; /*!< [4..4] Common Register Write Disabled */ + uint32_t : 3; + __OM uint32_t PRKEY : 8; /*!< [15..8] GTWP Key Code */ + uint32_t : 16; + } GTWP_b; + }; + + union + { + __IOM uint32_t GTSTR; /*!< (@ 0x00000004) General PWM Timer Software Start Register */ + + struct + { + __IOM uint32_t CSTRT0 : 1; /*!< [0..0] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT1 : 1; /*!< [1..1] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT2 : 1; /*!< [2..2] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT3 : 1; /*!< [3..3] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT4 : 1; /*!< [4..4] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT5 : 1; /*!< [5..5] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT6 : 1; /*!< [6..6] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT7 : 1; /*!< [7..7] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT8 : 1; /*!< [8..8] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT9 : 1; /*!< [9..9] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT10 : 1; /*!< [10..10] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT11 : 1; /*!< [11..11] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT12 : 1; /*!< [12..12] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT13 : 1; /*!< [13..13] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT14 : 1; /*!< [14..14] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT15 : 1; /*!< [15..15] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT16 : 1; /*!< [16..16] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT17 : 1; /*!< [17..17] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT18 : 1; /*!< [18..18] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT19 : 1; /*!< [19..19] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT20 : 1; /*!< [20..20] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT21 : 1; /*!< [21..21] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT22 : 1; /*!< [22..22] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT23 : 1; /*!< [23..23] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT24 : 1; /*!< [24..24] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT25 : 1; /*!< [25..25] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT26 : 1; /*!< [26..26] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT27 : 1; /*!< [27..27] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT28 : 1; /*!< [28..28] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT29 : 1; /*!< [29..29] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT30 : 1; /*!< [30..30] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + __IOM uint32_t CSTRT31 : 1; /*!< [31..31] Channel GTCNT Count StartRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter stop. 1 + * means counter running. */ + } GTSTR_b; + }; + + union + { + __IOM uint32_t GTSTP; /*!< (@ 0x00000008) General PWM Timer Software Stop Register */ + + struct + { + __IOM uint32_t CSTOP0 : 1; /*!< [0..0] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP1 : 1; /*!< [1..1] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP2 : 1; /*!< [2..2] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP3 : 1; /*!< [3..3] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP4 : 1; /*!< [4..4] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP5 : 1; /*!< [5..5] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP6 : 1; /*!< [6..6] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP7 : 1; /*!< [7..7] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP8 : 1; /*!< [8..8] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP9 : 1; /*!< [9..9] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP10 : 1; /*!< [10..10] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP11 : 1; /*!< [11..11] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP12 : 1; /*!< [12..12] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP13 : 1; /*!< [13..13] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP14 : 1; /*!< [14..14] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP15 : 1; /*!< [15..15] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP16 : 1; /*!< [16..16] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP17 : 1; /*!< [17..17] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP18 : 1; /*!< [18..18] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP19 : 1; /*!< [19..19] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP20 : 1; /*!< [20..20] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP21 : 1; /*!< [21..21] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP22 : 1; /*!< [22..22] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP23 : 1; /*!< [23..23] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP24 : 1; /*!< [24..24] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP25 : 1; /*!< [25..25] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP26 : 1; /*!< [26..26] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP27 : 1; /*!< [27..27] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP28 : 1; /*!< [28..28] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP29 : 1; /*!< [29..29] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP30 : 1; /*!< [30..30] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + __IOM uint32_t CSTOP31 : 1; /*!< [31..31] Channel GTCNT Count StopRead data shows each channel's + * counter status (GTCR.CST bit). 0 means counter runnning. + * 1 means counter stop. */ + } GTSTP_b; + }; + + union + { + __OM uint32_t GTCLR; /*!< (@ 0x0000000C) General PWM Timer Software Clear Register */ + + struct + { + __OM uint32_t CCLR0 : 1; /*!< [0..0] Channel GTCNT Count Clear */ + __OM uint32_t CCLR1 : 1; /*!< [1..1] Channel GTCNT Count Clear */ + __OM uint32_t CCLR2 : 1; /*!< [2..2] Channel GTCNT Count Clear */ + __OM uint32_t CCLR3 : 1; /*!< [3..3] Channel GTCNT Count Clear */ + __OM uint32_t CCLR4 : 1; /*!< [4..4] Channel GTCNT Count Clear */ + __OM uint32_t CCLR5 : 1; /*!< [5..5] Channel GTCNT Count Clear */ + __OM uint32_t CCLR6 : 1; /*!< [6..6] Channel GTCNT Count Clear */ + __OM uint32_t CCLR7 : 1; /*!< [7..7] Channel GTCNT Count Clear */ + __OM uint32_t CCLR8 : 1; /*!< [8..8] Channel GTCNT Count Clear */ + __OM uint32_t CCLR9 : 1; /*!< [9..9] Channel GTCNT Count Clear */ + __OM uint32_t CCLR10 : 1; /*!< [10..10] Channel GTCNT Count Clear */ + __OM uint32_t CCLR11 : 1; /*!< [11..11] Channel GTCNT Count Clear */ + __OM uint32_t CCLR12 : 1; /*!< [12..12] Channel GTCNT Count Clear */ + __OM uint32_t CCLR13 : 1; /*!< [13..13] Channel GTCNT Count Clear */ + __OM uint32_t CCLR14 : 1; /*!< [14..14] Channel GTCNT Count Clear */ + __OM uint32_t CCLR15 : 1; /*!< [15..15] Channel GTCNT Count Clear */ + __OM uint32_t CCLR16 : 1; /*!< [16..16] Channel GTCNT Count Clear */ + __OM uint32_t CCLR17 : 1; /*!< [17..17] Channel GTCNT Count Clear */ + __OM uint32_t CCLR18 : 1; /*!< [18..18] Channel GTCNT Count Clear */ + __OM uint32_t CCLR19 : 1; /*!< [19..19] Channel GTCNT Count Clear */ + __OM uint32_t CCLR20 : 1; /*!< [20..20] Channel GTCNT Count Clear */ + __OM uint32_t CCLR21 : 1; /*!< [21..21] Channel GTCNT Count Clear */ + __OM uint32_t CCLR22 : 1; /*!< [22..22] Channel GTCNT Count Clear */ + __OM uint32_t CCLR23 : 1; /*!< [23..23] Channel GTCNT Count Clear */ + __OM uint32_t CCLR24 : 1; /*!< [24..24] Channel GTCNT Count Clear */ + __OM uint32_t CCLR25 : 1; /*!< [25..25] Channel GTCNT Count Clear */ + __OM uint32_t CCLR26 : 1; /*!< [26..26] Channel GTCNT Count Clear */ + __OM uint32_t CCLR27 : 1; /*!< [27..27] Channel GTCNT Count Clear */ + __OM uint32_t CCLR28 : 1; /*!< [28..28] Channel GTCNT Count Clear */ + __OM uint32_t CCLR29 : 1; /*!< [29..29] Channel GTCNT Count Clear */ + __OM uint32_t CCLR30 : 1; /*!< [30..30] Channel GTCNT Count Clear */ + __OM uint32_t CCLR31 : 1; /*!< [31..31] Channel GTCNT Count Clear */ + } GTCLR_b; + }; + + union + { + __IOM uint32_t GTSSR; /*!< (@ 0x00000010) General PWM Timer Start Source Select Register */ + + struct + { + __IOM uint32_t SSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Start Enable */ + __IOM uint32_t SSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Start Enable */ + __IOM uint32_t SSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Start Enable */ + __IOM uint32_t SSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Start Enable */ + __IOM uint32_t SSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Start Enable */ + __IOM uint32_t SSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Start Enable */ + __IOM uint32_t SSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Start Enable */ + __IOM uint32_t SSELCA : 1; /*!< [16..16] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCB : 1; /*!< [17..17] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCC : 1; /*!< [18..18] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCD : 1; /*!< [19..19] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCE : 1; /*!< [20..20] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCF : 1; /*!< [21..21] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCG : 1; /*!< [22..22] ELC_GPT Event Source Counter Start Enable */ + __IOM uint32_t SSELCH : 1; /*!< [23..23] ELC_GPT Event Source Counter Start Enable */ + uint32_t : 7; + __IOM uint32_t CSTRT : 1; /*!< [31..31] Software Source Counter Start Enable */ + } GTSSR_b; + }; + + union + { + __IOM uint32_t GTPSR; /*!< (@ 0x00000014) General PWM Timer Stop Source Select Register */ + + struct + { + __IOM uint32_t PSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Stop Enable */ + __IOM uint32_t PSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Stop Enable */ + __IOM uint32_t PSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Stop Enable */ + __IOM uint32_t PSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Stop Enable */ + __IOM uint32_t PSELCA : 1; /*!< [16..16] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCB : 1; /*!< [17..17] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCC : 1; /*!< [18..18] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCD : 1; /*!< [19..19] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCE : 1; /*!< [20..20] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCF : 1; /*!< [21..21] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCG : 1; /*!< [22..22] ELC_GPTA Event Source Counter Stop Enable */ + __IOM uint32_t PSELCH : 1; /*!< [23..23] ELC_GPTA Event Source Counter Stop Enable */ + uint32_t : 7; + __IOM uint32_t CSTOP : 1; /*!< [31..31] Software Source Counter Stop Enable */ + } GTPSR_b; + }; + + union + { + __IOM uint32_t GTCSR; /*!< (@ 0x00000018) General PWM Timer Clear Source Select Register */ + + struct + { + __IOM uint32_t CSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Clear Enable */ + __IOM uint32_t CSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Clear Enable */ + __IOM uint32_t CSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Clear Enable */ + __IOM uint32_t CSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Clear Enable */ + __IOM uint32_t CSELCA : 1; /*!< [16..16] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCB : 1; /*!< [17..17] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCC : 1; /*!< [18..18] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCD : 1; /*!< [19..19] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCE : 1; /*!< [20..20] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCF : 1; /*!< [21..21] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCG : 1; /*!< [22..22] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSELCH : 1; /*!< [23..23] ELC_GPTA Event Source Counter Clear Enable */ + __IOM uint32_t CSCMSC : 3; /*!< [26..24] Compare Match/Input Capture/Synchronous counter clearing + * Source Counter Clear Enable. */ + __IOM uint32_t CP1CCE : 1; /*!< [27..27] Complementary PWM mode1 Crest Source Counter Clear + * Enable (This bit is only available in GPT324 to GPT329. + * In GPT320 to GPT323, this bit is read as 0. The write value + * should be 0.) */ + uint32_t : 3; + __IOM uint32_t CCLR : 1; /*!< [31..31] Software Source Counter Clear Enable */ + } GTCSR_b; + }; + + union + { + __IOM uint32_t GTUPSR; /*!< (@ 0x0000001C) General PWM Timer Up Count Source Select Register */ + + struct + { + __IOM uint32_t USGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Count Up Enable */ + __IOM uint32_t USGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Count Up Enable */ + __IOM uint32_t USCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Count Up Enable */ + __IOM uint32_t USCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Count Up Enable */ + __IOM uint32_t USELCA : 1; /*!< [16..16] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCB : 1; /*!< [17..17] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCC : 1; /*!< [18..18] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCD : 1; /*!< [19..19] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCE : 1; /*!< [20..20] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCF : 1; /*!< [21..21] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCG : 1; /*!< [22..22] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USELCH : 1; /*!< [23..23] ELC_GPT Event Source Counter Count Up Enable */ + __IOM uint32_t USILVL : 4; /*!< [27..24] External Input Level Source Count-Up Enable */ + uint32_t : 4; + } GTUPSR_b; + }; + + union + { + __IOM uint32_t GTDNSR; /*!< (@ 0x00000020) General PWM Timer Down Count Source Select Register */ + + struct + { + __IOM uint32_t DSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source Counter Count Down Enable */ + __IOM uint32_t DSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source Counter Count Down Enable */ + __IOM uint32_t DSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * Counter Count Down Enable */ + __IOM uint32_t DSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * Counter Count Down Enable */ + __IOM uint32_t DSELCA : 1; /*!< [16..16] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCB : 1; /*!< [17..17] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCC : 1; /*!< [18..18] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCD : 1; /*!< [19..19] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCE : 1; /*!< [20..20] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCF : 1; /*!< [21..21] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCG : 1; /*!< [22..22] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSELCH : 1; /*!< [23..23] ELC_GPT Event Source Counter Count Down Enable */ + __IOM uint32_t DSILVL : 4; /*!< [27..24] External Input Level Source Count-Down Enable */ + uint32_t : 4; + } GTDNSR_b; + }; + + union + { + __IOM uint32_t GTICASR; /*!< (@ 0x00000024) General PWM Timer Input Capture Source Select + * Register A */ + + struct + { + __IOM uint32_t ASGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source GTCCRA Input Capture + * Enable */ + __IOM uint32_t ASCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCA : 1; /*!< [16..16] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCB : 1; /*!< [17..17] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCC : 1; /*!< [18..18] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCD : 1; /*!< [19..19] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCE : 1; /*!< [20..20] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCF : 1; /*!< [21..21] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCG : 1; /*!< [22..22] ELC_GPT Event Source GTCCRA Input Capture Enable */ + __IOM uint32_t ASELCH : 1; /*!< [23..23] ELC_GPT Event Source GTCCRA Input Capture Enable */ + uint32_t : 8; + } GTICASR_b; + }; + + union + { + __IOM uint32_t GTICBSR; /*!< (@ 0x00000028) General PWM Timer Input Capture Source Select + * Register B */ + + struct + { + __IOM uint32_t BSGTRGAR : 1; /*!< [0..0] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGAF : 1; /*!< [1..1] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSGTRGBR : 1; /*!< [2..2] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGBF : 1; /*!< [3..3] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSGTRGCR : 1; /*!< [4..4] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGCF : 1; /*!< [5..5] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSGTRGDR : 1; /*!< [6..6] GTETRG Pin Rising Input Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSGTRGDF : 1; /*!< [7..7] GTETRG Pin Falling Input Source GTCCRB Input Capture + * Enable */ + __IOM uint32_t BSCARBL : 1; /*!< [8..8] GTIOCA Pin Rising Input during GTIOCB Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCARBH : 1; /*!< [9..9] GTIOCA Pin Rising Input during GTIOCB Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCAFBL : 1; /*!< [10..10] GTIOCA Pin Falling Input during GTIOCB Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCAFBH : 1; /*!< [11..11] GTIOCA Pin Falling Input during GTIOCB Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBRAL : 1; /*!< [12..12] GTIOCB Pin Rising Input during GTIOCA Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBRAH : 1; /*!< [13..13] GTIOCB Pin Rising Input during GTIOCA Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBFAL : 1; /*!< [14..14] GTIOCB Pin Falling Input during GTIOCA Value Low Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSCBFAH : 1; /*!< [15..15] GTIOCB Pin Falling Input during GTIOCA Value High Source + * GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCA : 1; /*!< [16..16] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCB : 1; /*!< [17..17] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCC : 1; /*!< [18..18] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCD : 1; /*!< [19..19] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCE : 1; /*!< [20..20] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCF : 1; /*!< [21..21] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCG : 1; /*!< [22..22] ELC_GPT Event Source GTCCRB Input Capture Enable */ + __IOM uint32_t BSELCH : 1; /*!< [23..23] ELC_GPT Event Source GTCCRB Input Capture Enable */ + uint32_t : 8; + } GTICBSR_b; + }; + + union + { + __IOM uint32_t GTCR; /*!< (@ 0x0000002C) General PWM Timer Control Register */ + + struct + { + __IOM uint32_t CST : 1; /*!< [0..0] Count Start */ + uint32_t : 7; + __IOM uint32_t ICDS : 1; /*!< [8..8] Input Capture Operation Select During Count Stop */ + __IOM uint32_t SCGTIOC : 1; /*!< [9..9] GTIOC input Source Synchronous Clear Enable */ + __IOM uint32_t SSCGRP : 2; /*!< [11..10] Synchronous Set/Clear Group Select */ + __IOM uint32_t CPSCD : 1; /*!< [12..12] Complementary PWM Mode Synchronous Clear Disable */ + uint32_t : 2; + __IOM uint32_t SSCEN : 1; /*!< [15..15] Synchronous Set/Clear Enable */ + __IOM uint32_t MD : 4; /*!< [19..16] Mode Select */ + uint32_t : 3; + __IOM uint32_t TPCS : 4; /*!< [26..23] Timer Prescaler Select */ + __IOM uint32_t CKEG : 2; /*!< [28..27] Clock Edge Select */ + uint32_t : 3; + } GTCR_b; + }; + + union + { + __IOM uint32_t GTUDDTYC; /*!< (@ 0x00000030) General PWM Timer Count Direction and Duty Setting + * Register */ + + struct + { + __IOM uint32_t UD : 1; /*!< [0..0] Count Direction Setting */ + __IOM uint32_t UDF : 1; /*!< [1..1] Forcible Count Direction Setting */ + uint32_t : 14; + __IOM uint32_t OADTY : 2; /*!< [17..16] GTIOCA Output Duty Setting */ + __IOM uint32_t OADTYF : 1; /*!< [18..18] Forcible GTIOCA Output Duty Setting */ + __IOM uint32_t OADTYR : 1; /*!< [19..19] GTIOCA Output Value Selecting after Releasing 0 percent/100 + * percent Duty Setting */ + uint32_t : 4; + __IOM uint32_t OBDTY : 2; /*!< [25..24] GTIOCB Output Duty Setting */ + __IOM uint32_t OBDTYF : 1; /*!< [26..26] Forcible GTIOCB Output Duty Setting */ + __IOM uint32_t OBDTYR : 1; /*!< [27..27] GTIOCB Output Value Selecting after Releasing 0 percent/100 + * percent Duty Setting */ + uint32_t : 4; + } GTUDDTYC_b; + }; + + union + { + __IOM uint32_t GTIOR; /*!< (@ 0x00000034) General PWM Timer I/O Control Register */ + + struct + { + __IOM uint32_t GTIOA : 5; /*!< [4..0] GTIOCA Pin Function Select */ + __IOM uint32_t CPSCIR : 1; /*!< [5..5] Complementary PWM Mode Initial Output at Synchronous + * Clear Disable.(This bit is only available in GPT324 to + * GPT329. In GPT320 to GPT323, this bit is read as 0. The + * write value should be 0.) */ + __IOM uint32_t OADFLT : 1; /*!< [6..6] GTIOCA Pin Output Value Setting at the Count Stop */ + __IOM uint32_t OAHLD : 1; /*!< [7..7] GTIOCA Pin Output Setting at the Start/Stop Count */ + __IOM uint32_t OAE : 1; /*!< [8..8] GTIOCA Pin Output Enable */ + __IOM uint32_t OADF : 2; /*!< [10..9] GTIOCA Pin Disable Value Setting */ + __IOM uint32_t OAEOCD : 1; /*!< [11..11] GTCCRA Compare Match Cycle End Output Invalidate.(This + * bit is only available in GPT324 to GPT329. In GPT320 to + * GPT323, this bit is read as 0. The write value should be + * 0.) */ + __IOM uint32_t PSYE : 1; /*!< [12..12] PWM Synchronous output Enable */ + __IOM uint32_t NFAEN : 1; /*!< [13..13] Noise Filter A Enable */ + __IOM uint32_t NFCSA : 2; /*!< [15..14] Noise Filter A Sampling Clock Select */ + __IOM uint32_t GTIOB : 5; /*!< [20..16] GTIOCB Pin Function Select */ + uint32_t : 1; + __IOM uint32_t OBDFLT : 1; /*!< [22..22] GTIOCB Pin Output Value Setting at the Count Stop */ + __IOM uint32_t OBHLD : 1; /*!< [23..23] GTIOCB Pin Output Setting at the Start/Stop Count */ + __IOM uint32_t OBE : 1; /*!< [24..24] GTIOCB Pin Output Enable */ + __IOM uint32_t OBDF : 2; /*!< [26..25] GTIOCB Pin Disable Value Setting */ + __IOM uint32_t OBEOCD : 1; /*!< [27..27] GTCCRB Compare Match Cycle End Output Invalidate.(This + * bit is only available in GPT324 to GPT329. In GPT320 to + * GPT323, this bit is read as 0. The write value should be + * 0.) */ + uint32_t : 1; + __IOM uint32_t NFBEN : 1; /*!< [29..29] Noise Filter B Enable */ + __IOM uint32_t NFCSB : 2; /*!< [31..30] Noise Filter B Sampling Clock Select */ + } GTIOR_b; + }; + + union + { + __IOM uint32_t GTINTAD; /*!< (@ 0x00000038) General PWM Timer Interrupt Output Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t SCFA : 1; /*!< [8..8] GTCCRn Register Compare Match/Input Capture Source Synchronous + * Clear Enable */ + __IOM uint32_t SCFB : 1; /*!< [9..9] GTCCRn Register Compare Match/Input Capture Source Synchronous + * Clear Enable */ + __IOM uint32_t SCFC : 1; /*!< [10..10] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFD : 1; /*!< [11..11] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFE : 1; /*!< [12..12] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFF : 1; /*!< [13..13] GTCCRn Register Compare Match/Input Capture Source + * Synchronous Clear Enable */ + __IOM uint32_t SCFPO : 1; /*!< [14..14] Overflow Source Synchronous Clear Enable */ + __IOM uint32_t SCFPU : 1; /*!< [15..15] Underflow Source Synchronous Clear Enable */ + __IOM uint32_t ADTRAUEN : 1; /*!< [16..16] GTADTRn Register Compare Match (Up-Counting) A/D Conversion + * Start Request Enable */ + __IOM uint32_t ADTRADEN : 1; /*!< [17..17] GTADTRn Register Compare Match (Down-Counting) A/D + * Conversion Start Request Enable */ + __IOM uint32_t ADTRBUEN : 1; /*!< [18..18] GTADTRn Register Compare Match (Up-Counting) A/D Conversion + * Start Request Enable */ + __IOM uint32_t ADTRBDEN : 1; /*!< [19..19] GTADTRn Register Compare Match (Down-Counting) A/D + * Conversion Start Request Enable */ + uint32_t : 4; + __IOM uint32_t GRP : 2; /*!< [25..24] Output Disable Source Select */ + uint32_t : 2; + __IOM uint32_t GRPDTE : 1; /*!< [28..28] Dead Time Error Output Disable Request Enable */ + __IOM uint32_t GRPABH : 1; /*!< [29..29] Same Time Output Level High Disable Request Enable */ + __IOM uint32_t GRPABL : 1; /*!< [30..30] Same Time Output Level Low Disable Request Enable */ + __IOM uint32_t GTINTPC : 1; /*!< [31..31] Period Count Function Finish Interrupt Enable */ + } GTINTAD_b; + }; + + union + { + __IOM uint32_t GTST; /*!< (@ 0x0000003C) General PWM Timer Status Register */ + + struct + { + __IOM uint32_t TCFA : 1; /*!< [0..0] Input Capture/Compare Match Flag A */ + __IOM uint32_t TCFB : 1; /*!< [1..1] Input Capture/Compare Match Flag B */ + __IOM uint32_t TCFC : 1; /*!< [2..2] Input Compare Match Flag C */ + __IOM uint32_t TCFD : 1; /*!< [3..3] Input Compare Match Flag D */ + __IOM uint32_t TCFE : 1; /*!< [4..4] Input Compare Match Flag E */ + __IOM uint32_t TCFF : 1; /*!< [5..5] Input Compare Match Flag F */ + __IOM uint32_t TCFPO : 1; /*!< [6..6] Overflow Flag */ + __IOM uint32_t TCFPU : 1; /*!< [7..7] Underflow Flag */ + __IM uint32_t ITCNT : 3; /*!< [10..8] GTCIV/GTCIU Interrupt Skipping Count Counter(Counter + * for counting the number of times a timer interrupt has + * been skipped.) */ + uint32_t : 4; + __IM uint32_t TUCF : 1; /*!< [15..15] Count Direction Flag */ + __IOM uint32_t ADTRAUF : 1; /*!< [16..16] GTADTRA Compare Match (Up-Counting) A/D Converter Start + * Request Interrupt Enable */ + __IOM uint32_t ADTRADF : 1; /*!< [17..17] GTADTRA Compare Match(Down-Counting) A/D Convertor + * Start Request Flag */ + __IOM uint32_t ADTRBUF : 1; /*!< [18..18] GTADTRB Compare Match(Up-Counting) A/D Convertor Start + * Request Flag */ + __IOM uint32_t ADTRBDF : 1; /*!< [19..19] GTADTRB Compare Match(Down-Counting) A/D Convertor + * Start Request Flag */ + uint32_t : 4; + __IM uint32_t ODF : 1; /*!< [24..24] Output Disable Flag */ + uint32_t : 3; + __IM uint32_t DTEF : 1; /*!< [28..28] Dead Time Error Flag */ + __IM uint32_t OABHF : 1; /*!< [29..29] Same Time Output Level High Disable Request Enable */ + __IM uint32_t OABLF : 1; /*!< [30..30] Same Time Output Level Low Disable Request Enable */ + __IOM uint32_t PCF : 1; /*!< [31..31] Period Count Function Finish Flag */ + } GTST_b; + }; + + union + { + __IOM uint32_t GTBER; /*!< (@ 0x00000040) General PWM Timer Buffer Enable Register */ + + struct + { + __IOM uint32_t BD0 : 1; /*!< [0..0] BD[0]: GTCCR Buffer Operation Disable */ + __IOM uint32_t BD1 : 1; /*!< [1..1] BD[1]: GTPR Buffer Operation Disable */ + __IOM uint32_t BD2 : 1; /*!< [2..2] BD[2]: GTADTR Buffer Operation DisableBD */ + __IOM uint32_t BD3 : 1; /*!< [3..3] BD[3]: GTDV Buffer Operation DisableBD[2] */ + uint32_t : 4; + __IOM uint32_t DBRTECA : 1; /*!< [8..8] GTCCRn Register Double Buffer Repeat Operation Enable */ + uint32_t : 1; + __IOM uint32_t DBRTECB : 1; /*!< [10..10] GTCCRn Register Double Buffer Repeat Operation Enable */ + uint32_t : 5; + __IOM uint32_t CCRA : 2; /*!< [17..16] GTCCRA Buffer Operation */ + __IOM uint32_t CCRB : 2; /*!< [19..18] GTCCRB Buffer Operation */ + __IOM uint32_t PR : 2; /*!< [21..20] GTPR Buffer Operation */ + __OM uint32_t CCRSWT : 1; /*!< [22..22] GTCCRA and GTCCRB Forcible Buffer OperationThis bit + * is read as 0. */ + uint32_t : 1; + __IOM uint32_t ADTTA : 2; /*!< [25..24] GTADTRA Buffer Transfer Timing Select in the Triangle + * wavesNOTE: In the Saw waves, values other than 0 0: Transfer + * at an underflow (in down-counting) or overflow (in up-counting) + * is performed. */ + __IOM uint32_t ADTDA : 1; /*!< [26..26] GTADTRA Double Buffer Operation */ + uint32_t : 1; + __IOM uint32_t ADTTB : 2; /*!< [29..28] GTADTRB Buffer Transfer Timing Select in the Triangle + * wavesNOTE: In the Saw waves, values other than 0 0: Transfer + * at an underflow (in down-counting) or overflow (in up-counting) + * is performed. */ + __IOM uint32_t ADTDB : 1; /*!< [30..30] GTADTRB Double Buffer Operation */ + uint32_t : 1; + } GTBER_b; + }; + + union + { + __IOM uint32_t GTITC; /*!< (@ 0x00000044) General PWM Timer Interrupt and A/D Converter + * Start Request Skipping Setting Register */ + + struct + { + __IOM uint32_t ITLA : 1; /*!< [0..0] GTCCRA Compare Match/Input Capture Interrupt Link */ + __IOM uint32_t ITLB : 1; /*!< [1..1] GTCCRB Compare Match/Input Capture Interrupt Link */ + __IOM uint32_t ITLC : 1; /*!< [2..2] GTCCRC Compare Match Interrupt Link */ + __IOM uint32_t ITLD : 1; /*!< [3..3] GTCCRD Compare Match Interrupt Link */ + __IOM uint32_t ITLE : 1; /*!< [4..4] GTCCRE Compare Match Interrupt Link */ + __IOM uint32_t ITLF : 1; /*!< [5..5] GTCCRF Compare Match Interrupt Link */ + __IOM uint32_t IVTC : 2; /*!< [7..6] GPT_OVF/GPT_UDF Interrupt Skipping Function Select */ + __IOM uint32_t IVTT : 3; /*!< [10..8] GPT_OVF/GPT_UDF Interrupt Skipping Count Select */ + uint32_t : 1; + __IOM uint32_t ADTAL : 1; /*!< [12..12] GTADTRA A/D Converter Start Request Link */ + uint32_t : 1; + __IOM uint32_t ADTBL : 1; /*!< [14..14] GTADTRB A/D Converter Start Request Link */ + uint32_t : 17; + } GTITC_b; + }; + + union + { + __IOM uint32_t GTCNT; /*!< (@ 0x00000048) General PWM Timer Counter */ + + struct + { + __IOM uint32_t GTCNT : 32; /*!< [31..0] Counter */ + } GTCNT_b; + }; + + union + { + __IOM uint32_t GTCCR[6]; /*!< (@ 0x0000004C) General PWM Timer Compare Capture Register */ + + struct + { + __IOM uint32_t GTCCR : 32; /*!< [31..0] Compare Capture Register A */ + } GTCCR_b[6]; + }; + + union + { + __IOM uint32_t GTPR; /*!< (@ 0x00000064) General PWM Timer Cycle Setting Register */ + + struct + { + __IOM uint32_t GTPR : 32; /*!< [31..0] Cycle Setting Register */ + } GTPR_b; + }; + + union + { + __IOM uint32_t GTPBR; /*!< (@ 0x00000068) General PWM Timer Cycle Setting Buffer Register */ + + struct + { + __IOM uint32_t GTPBR : 32; /*!< [31..0] Cycle Setting Buffer Register */ + } GTPBR_b; + }; + + union + { + __IOM uint32_t GTPDBR; /*!< (@ 0x0000006C) General PWM Timer Cycle Setting Double-Buffer + * Register */ + + struct + { + __IOM uint32_t GTPDBR : 32; /*!< [31..0] Cycle Setting Double-Buffer Register */ + } GTPDBR_b; + }; + + union + { + __IOM uint32_t GTADTRA; /*!< (@ 0x00000070) A/D Converter Start Request Timing Register A */ + + struct + { + __IOM uint32_t GTADTRA : 32; /*!< [31..0] A/D Converter Start Request Timing Register A */ + } GTADTRA_b; + }; + + union + { + __IOM uint32_t GTADTBRA; /*!< (@ 0x00000074) A/D Converter Start Request Timing Buffer Register + * A */ + + struct + { + __IOM uint32_t GTADTBRA : 32; /*!< [31..0] A/D Converter Start Request Timing Buffer Register A */ + } GTADTBRA_b; + }; + + union + { + __IOM uint32_t GTADTDBRA; /*!< (@ 0x00000078) A/D Converter Start Request Timing Double-Buffer + * Register A */ + + struct + { + __IOM uint32_t GTADTDBRA : 32; /*!< [31..0] A/D Converter Start Request Timing Double-Buffer Register + * A */ + } GTADTDBRA_b; + }; + + union + { + __IOM uint32_t GTADTRB; /*!< (@ 0x0000007C) A/D Converter Start Request Timing Register B */ + + struct + { + __IOM uint32_t GTADTRB : 32; /*!< [31..0] A/D Converter Start Request Timing Register B */ + } GTADTRB_b; + }; + + union + { + __IOM uint32_t GTADTBRB; /*!< (@ 0x00000080) A/D Converter Start Request Timing Buffer Register + * B */ + + struct + { + __IOM uint32_t GTADTBRB : 32; /*!< [31..0] A/D Converter Start Request Timing Buffer Register B */ + } GTADTBRB_b; + }; + + union + { + __IOM uint32_t GTADTDBRB; /*!< (@ 0x00000084) A/D Converter Start Request Timing Double-Buffer + * Register B */ + + struct + { + __IOM uint32_t GTADTDBRB : 32; /*!< [31..0] A/D Converter Start Request Timing Double-Buffer Register + * B */ + } GTADTDBRB_b; + }; + + union + { + __IOM uint32_t GTDTCR; /*!< (@ 0x00000088) General PWM Timer Dead Time Control Register */ + + struct + { + __IOM uint32_t TDE : 1; /*!< [0..0] Negative-Phase Waveform Setting */ + uint32_t : 3; + __IOM uint32_t TDBUE : 1; /*!< [4..4] GTDVU Buffer Operation Enable */ + __IOM uint32_t TDBDE : 1; /*!< [5..5] GTDVD Buffer Operation Enable */ + uint32_t : 2; + __IOM uint32_t TDFER : 1; /*!< [8..8] GTDVD Setting */ + uint32_t : 23; + } GTDTCR_b; + }; + + union + { + __IOM uint32_t GTDVU; /*!< (@ 0x0000008C) General PWM Timer Dead Time Value Register U */ + + struct + { + __IOM uint32_t GTDVU : 32; /*!< [31..0] Dead Time Value Register U */ + } GTDVU_b; + }; + + union + { + __IOM uint32_t GTDVD; /*!< (@ 0x00000090) General PWM Timer Dead Time Value Register D */ + + struct + { + __IOM uint32_t GTDVD : 32; /*!< [31..0] Dead Time Value Register D */ + } GTDVD_b; + }; + + union + { + __IOM uint32_t GTDBU; /*!< (@ 0x00000094) General PWM Timer Dead Time Buffer Register U */ + + struct + { + __IOM uint32_t GTDVU : 32; /*!< [31..0] Dead Time Buffer Register U */ + } GTDBU_b; + }; + + union + { + __IOM uint32_t GTDBD; /*!< (@ 0x00000098) General PWM Timer Dead Time Buffer Register D */ + + struct + { + __IOM uint32_t GTDBD : 32; /*!< [31..0] Dead Time Buffer Register D */ + } GTDBD_b; + }; + + union + { + __IM uint32_t GTSOS; /*!< (@ 0x0000009C) General PWM Timer Output Protection Function + * Status Register */ + + struct + { + __IM uint32_t SOS : 2; /*!< [1..0] Output Protection Function Status */ + uint32_t : 30; + } GTSOS_b; + }; + + union + { + __IOM uint32_t GTSOTR; /*!< (@ 0x000000A0) General PWM Timer Output Protection Function + * Temporary Release Register */ + + struct + { + __IOM uint32_t SOTR : 1; /*!< [0..0] Output Protection Function Temporary Release */ + uint32_t : 31; + } GTSOTR_b; + }; + + union + { + __IOM uint32_t GTADSMR; /*!< (@ 0x000000A4) General PWM Timer A/D Conversion Start Request + * Signal Monitoring Register */ + + struct + { + __IOM uint32_t ADSMS0 : 2; /*!< [1..0] A/D Conversion Start Request Signal Monitor 0 Selection */ + uint32_t : 6; + __IOM uint32_t ADSMEN0 : 1; /*!< [8..8] A/D Conversion Start Request Signal Monitor 0 Output + * Enabling */ + uint32_t : 7; + __IOM uint32_t ADSMS1 : 2; /*!< [17..16] A/D Conversion Start Request Signal Monitor 1 Selection */ + uint32_t : 6; + __IOM uint32_t ADSMEN1 : 1; /*!< [24..24] A/D Conversion Start Request Signal Monitor 1 Output + * Enabling */ + uint32_t : 7; + } GTADSMR_b; + }; + + union + { + __IOM uint32_t GTEITC; /*!< (@ 0x000000A8) General PWM Timer Extended Interrupt Skipping + * Counter Control Register */ + + struct + { + __IOM uint32_t EIVTC1 : 2; /*!< [1..0] Extended Interrupt Skipping Counter 1 Count Source Select */ + uint32_t : 2; + __IOM uint32_t EIVTT1 : 4; /*!< [7..4] Extended Interrupt Skipping 1 Skipping Count Setting */ + uint32_t : 4; + __IM uint32_t EITCNT1 : 4; /*!< [15..12] Extended Interrupt Skipping Counter 1 */ + __IOM uint32_t EIVTC2 : 2; /*!< [17..16] Extended Interrupt Skipping Counter 2 Count Source + * select */ + uint32_t : 2; + __IOM uint32_t EIVTT2 : 4; /*!< [23..20] Extended Interrupt Skipping 2 Skipping Count Setting */ + __IOM uint32_t EITCNT2IV : 4; /*!< [27..24] Extended Interrupt Skipping Counter 2 Initial Value */ + __IM uint32_t EITCNT2 : 4; /*!< [31..28] Extended Interrupt Skipping Counter 2 */ + } GTEITC_b; + }; + + union + { + __IOM uint32_t GTEITLI1; /*!< (@ 0x000000AC) General PWM Timer Extended Interrupt Skipping + * Setting Register 1 */ + + struct + { + __IOM uint32_t EITLA : 3; /*!< [2..0] GTCCRA Register Compare Match/Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLB : 3; /*!< [6..4] GTCCRB Register Compare Match/Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLC : 3; /*!< [10..8] GTCCRC Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLD : 3; /*!< [14..12] GTCCRD Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLE : 3; /*!< [18..16] GTCCRE Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLF : 3; /*!< [22..20] GTCCRF Register Compare Match Interrupt Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EITLV : 3; /*!< [26..24] Overflow Interrupt Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLU : 3; /*!< [30..28] Underflow Interrupt Extended Skipping Function Select */ + uint32_t : 1; + } GTEITLI1_b; + }; + + union + { + __IOM uint32_t GTEITLI2; /*!< (@ 0x000000B0) General PWM Timer Extended Interrupt Skipping + * Setting Register 2 */ + + struct + { + __IOM uint32_t EADTAL : 3; /*!< [2..0] GTADTRA Register A/D Conversion Start Request Extended + * Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EADTBL : 3; /*!< [6..4] GTADTRB Register A/D Conversion Start Request Extended + * Skipping Function Select */ + uint32_t : 25; + } GTEITLI2_b; + }; + + union + { + __IOM uint32_t GTEITLB; /*!< (@ 0x000000B4) General PWM Timer Extended Buffer Transfer Skipping + * Setting Register */ + + struct + { + __IOM uint32_t EBTLCA : 3; /*!< [2..0] GTCCRA Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + __IOM uint32_t EBTLCB : 3; /*!< [6..4] GTCCRB Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + __IOM uint32_t EBTLPR : 3; /*!< [10..8] GTPR Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 5; + __IOM uint32_t EBTLADA : 3; /*!< [18..16] GTADTRA Register Buffer Transfer Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EBTLADB : 3; /*!< [22..20] GTADTRB Register Buffer Transfer Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EBTLDVU : 3; /*!< [26..24] GTDVU Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + __IOM uint32_t EBTLDVD : 3; /*!< [30..28] GTDVD Register Buffer Transfer Extended Skipping Function + * Select */ + uint32_t : 1; + } GTEITLB_b; + }; + + union + { + __IOM uint32_t GTICLF; /*!< (@ 0x000000B8) General PWM Timer Inter Channel Logical Operation + * Function Setting Register */ + + struct + { + __IOM uint32_t ICLFA : 3; /*!< [2..0] GTIOCnA Output Logical Operation Function Select */ + uint32_t : 1; + __IOM uint32_t ICLFSELC : 6; /*!< [9..4] Inter Channel Signal C Select */ + uint32_t : 6; + __IOM uint32_t ICLFB : 3; /*!< [18..16] GTIOCnB Output Logical Operation Function Select */ + uint32_t : 1; + __IOM uint32_t ICLFSELD : 6; /*!< [25..20] Inter Channel Signal D Select */ + uint32_t : 6; + } GTICLF_b; + }; + + union + { + __IOM uint32_t GTPC; /*!< (@ 0x000000BC) General PWM Timer Period Count Register */ + + struct + { + __IOM uint32_t PCEN : 1; /*!< [0..0] Period Count Function Enable */ + uint32_t : 7; + __IOM uint32_t ASTP : 1; /*!< [8..8] Automatic Stop Function Enable */ + uint32_t : 7; + __IOM uint32_t PCNT : 12; /*!< [27..16] Period Counter */ + uint32_t : 4; + } GTPC_b; + }; + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint32_t GTSECSR; /*!< (@ 0x000000D0) General PWM Timer Operation Enable Bit Simultaneous + * Control Channel Select Register */ + + struct + { + __IOM uint32_t SECSEL0 : 1; /*!< [0..0] Channel 0 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL1 : 1; /*!< [1..1] Channel 1 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL2 : 1; /*!< [2..2] Channel 2 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL3 : 1; /*!< [3..3] Channel 3 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL4 : 1; /*!< [4..4] Channel 4 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL5 : 1; /*!< [5..5] Channel 5 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL6 : 1; /*!< [6..6] Channel 6 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL7 : 1; /*!< [7..7] Channel 7 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL8 : 1; /*!< [8..8] Channel 8 Operation Enable Bit Simultaneous Control Channel + * Select */ + __IOM uint32_t SECSEL9 : 1; /*!< [9..9] Channel 9 Operation Enable Bit Simultaneous Control Channel + * Select */ + uint32_t : 22; + } GTSECSR_b; + }; + + union + { + __IOM uint32_t GTSECR; /*!< (@ 0x000000D4) General PWM Timer Operation Enable Bit Simultaneous + * Control Register */ + + struct + { + __IOM uint32_t SBDCE : 1; /*!< [0..0] GTCCR Register Buffer Operation Simultaneous Enable */ + __IOM uint32_t SBDPE : 1; /*!< [1..1] GTPR Register Buffer Operation Simultaneous Enable */ + __IOM uint32_t SBDAE : 1; /*!< [2..2] GTADTR Register Buffer Operation Simultaneous Enable */ + __IOM uint32_t SBDDE : 1; /*!< [3..3] GTDV Register Buffer Operation Simultaneous Enable */ + uint32_t : 4; + __IOM uint32_t SBDCD : 1; /*!< [8..8] GTCCR Register Buffer Operation Simultaneous Disable */ + __IOM uint32_t SBDPD : 1; /*!< [9..9] GTPR Register Buffer Operation Simultaneous Disable */ + __IOM uint32_t SBDAD : 1; /*!< [10..10] GTADTR Register Buffer Operation Simultaneous Disable */ + __IOM uint32_t SBDDD : 1; /*!< [11..11] GTDV Register Buffer Operation Simultaneous Disable */ + uint32_t : 4; + __IOM uint32_t SPCE : 1; /*!< [16..16] Period Count Function Simultaneous Enable */ + __IOM uint32_t SSCE : 1; /*!< [17..17] Synchronous Set/Clear Simultaneous Enable */ + uint32_t : 6; + __IOM uint32_t SPCD : 1; /*!< [24..24] Period Count Function Simultaneous Disable */ + __IOM uint32_t SSCD : 1; /*!< [25..25] Synchronous Set/Clear Simultaneous Disable */ + uint32_t : 6; + } GTSECR_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t GTBER2; /*!< (@ 0x000000E0) General PWM Timer Buffer Enable Register 2 */ + + struct + { + __IOM uint32_t CCTCA : 1; /*!< [0..0] Counter Clear Source GTCCRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTCB : 1; /*!< [1..1] Counter Clear Source GTCCRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTPR : 1; /*!< [2..2] Counter Clear Source GTPR Register Buffer Transfer Disable */ + __IOM uint32_t CCTADA : 1; /*!< [3..3] Counter Clear Source GTADTRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTADB : 1; /*!< [4..4] Counter Clear Source GTADTRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CCTDV : 1; /*!< [5..5] Counter Clear Source GTDVU/GTDVD Register Buffer Transfer + * Disable */ + uint32_t : 2; + __IOM uint32_t CMTCA : 2; /*!< [9..8] Compare Match Source GTCCRA Register Buffer Transfer + * Enable */ + __IOM uint32_t CMTCB : 2; /*!< [11..10] Compare Match Source GTCCRB Register Buffer Transfer + * Enable */ + uint32_t : 1; + __IOM uint32_t CMTADA : 1; /*!< [13..13] Compare Match Source GTADTRA Register Buffer Transfer + * Enable */ + __IOM uint32_t CMTADB : 1; /*!< [14..14] Compare Match Source GTADTRA Register Buffer Transfer + * Enable */ + uint32_t : 1; + __IOM uint32_t CPTCA : 1; /*!< [16..16] Overflow/Underflow Source GTCCRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTCB : 1; /*!< [17..17] Overflow/Underflow Source GTCCRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTPR : 1; /*!< [18..18] Overflow/Underflow Source GTPR Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTADA : 1; /*!< [19..19] Overflow/Underflow Source GTADTRA Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTADB : 1; /*!< [20..20] Overflow/Underflow Source GTADTRB Register Buffer Transfer + * Disable */ + __IOM uint32_t CPTDV : 1; /*!< [21..21] Overflow/Underflow Source GTDVU/GTDVD Register Buffer + * Transfer Disable */ + uint32_t : 2; + __IOM uint32_t CP3DB : 1; /*!< [24..24] Complementary PWM mode 3,4 Double Buffer select */ + __IOM uint32_t CPBTD : 1; /*!< [25..25] Complementary PWM mode Buffer Transfer Disable */ + __IOM uint32_t OLTTA : 2; /*!< [27..26] GTIOCnA Output Level Buffer Transfer Timing Select */ + __IOM uint32_t OLTTB : 2; /*!< [29..28] GTIOCnB Output Level Buffer Transfer Timing Select */ + uint32_t : 2; + } GTBER2_b; + }; + + union + { + __IOM uint32_t GTOLBR; /*!< (@ 0x000000E4) General PWM Timer Output Level Buffer Register */ + + struct + { + __IOM uint32_t GTIOAB : 5; /*!< [4..0] GTIOA buffer bits */ + uint32_t : 11; + __IOM uint32_t GTIOBB : 5; /*!< [20..16] GTIOBB buffer bits */ + uint32_t : 11; + } GTOLBR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t GTICCR; /*!< (@ 0x000000EC) General PWM Timer Inter Channel Cooperation Input + * Capture Control Register */ + + struct + { + __IOM uint32_t ICAFA : 1; /*!< [0..0] Forwarding GTCCRA register Compare Match/Input Capture + * to Other Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFB : 1; /*!< [1..1] Forwarding GTCCRB register Compare Match/Input Capture + * to Other Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFC : 1; /*!< [2..2] Forwarding GTCCRC register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFD : 1; /*!< [3..3] Forwarding GTCCRD register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFE : 1; /*!< [4..4] Forwarding GTCCRE register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFF : 1; /*!< [5..5] Forwarding GTCCRF register Compare Match Capture to Other + * Channel GTCCRA Input Capture Source Enable */ + __IOM uint32_t ICAFPO : 1; /*!< [6..6] Forwarding Overflow to Other Channel GTCCRA Input Capture + * Source Enable */ + __IOM uint32_t ICAFPU : 1; /*!< [7..7] Forwarding Underflow to Other Channel GTCCRA Input Capture + * Source Enable */ + __IOM uint32_t ICACLK : 1; /*!< [8..8] Forwarding Count Clock to Other Channel GTCCRA Input + * Capture Source Enable */ + uint32_t : 5; + __IOM uint32_t ICAGRP : 2; /*!< [15..14] GTCCRA Input Capture Group Select */ + __IOM uint32_t ICBFA : 1; /*!< [16..16] Forwarding GTCCRA register Compare Match/Input Capture + * to Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFB : 1; /*!< [17..17] Forwarding GTCCRB register Compare Match/Input Capture + * to Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFC : 1; /*!< [18..18] Forwarding GTCCRC register Compare Match Capture to + * Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFD : 1; /*!< [19..19] Forwarding GTCCRD register Compare Match Capture to + * Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFE : 1; /*!< [20..20] Forwarding GTCCRE register Compare Match Capture to + * Other Channel GTCCRb Input Capture Source Enable */ + __IOM uint32_t ICBFF : 1; /*!< [21..21] Forwarding GTCCRF register Compare Match Capture to + * Other Channel GTCCRB Input Capture Source Enable */ + __IOM uint32_t ICBFPO : 1; /*!< [22..22] Forwarding Overflow to Other Channel GTCCRB Input Capture + * Source Enable */ + __IOM uint32_t ICBFPU : 1; /*!< [23..23] Forwarding Underflow to Other Channel GTCCRB Input + * Capture Source Enable */ + __IOM uint32_t ICBCLK : 1; /*!< [24..24] Forwarding Count Clock to Other Channel GTCCRB Input + * Capture Source Enable */ + uint32_t : 5; + __IOM uint32_t ICBGRP : 2; /*!< [31..30] GTCCRB Input Capture Group Select */ + } GTICCR_b; + }; +} R_GPT0_Type; /*!< Size = 240 (0xf0) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_OPS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Output Phase Switching for GPT (R_GPT_OPS) + */ + +typedef struct /*!< (@ 0x40323F00) R_GPT_OPS Structure */ +{ + union + { + __IOM uint32_t OPSCR; /*!< (@ 0x00000000) Output Phase Switching Control Register */ + + struct + { + __IOM uint32_t UF : 1; /*!< [0..0] Input Phase Soft Setting WFThis bit sets the input phase + * by the software settings.This bit setting is valid when + * the OPSCR.FB bit = 1. */ + __IOM uint32_t VF : 1; /*!< [1..1] Input Phase Soft Setting VFThis bit sets the input phase + * by the software settings.This bit setting is valid when + * the OPSCR.FB bit = 1. */ + __IOM uint32_t WF : 1; /*!< [2..2] Input Phase Soft Setting UFThis bit sets the input phase + * by the software settings.This bit setting is valid when + * the OPSCR.FB bit = 1. */ + uint32_t : 1; + __IM uint32_t U : 1; /*!< [4..4] Input U-Phase MonitorThis bit monitors the state of the + * input phase.OPSCR.FB=0:External input monitoring by PCLKOPSCR.FB=1:Softwa + * e settings (UF/VF/WF) */ + __IM uint32_t V : 1; /*!< [5..5] Input V-Phase MonitorThis bit monitors the state of the + * input phase.OPSCR.FB=0:External input monitoring by PCLKOPSCR.FB=1:Softwa + * e settings (UF/VF/WF) */ + __IM uint32_t W : 1; /*!< [6..6] Input W-Phase MonitorThis bit monitors the state of the + * input phase.OPSCR.FB=0:External input monitoring by PCLKOPSCR.FB=1:Softwa + * e settings (UF/VF/WF) */ + uint32_t : 1; + __IOM uint32_t EN : 1; /*!< [8..8] Enable-Phase Output Control */ + uint32_t : 7; + __IOM uint32_t FB : 1; /*!< [16..16] External Feedback Signal EnableThis bit selects the + * input phase from the software settings and external input. */ + __IOM uint32_t P : 1; /*!< [17..17] Positive-Phase Output (P) Control */ + __IOM uint32_t N : 1; /*!< [18..18] Negative-Phase Output (N) Control */ + __IOM uint32_t INV : 1; /*!< [19..19] Invert-Phase Output Control */ + __IOM uint32_t RV : 1; /*!< [20..20] Output phase rotation direction reversal */ + __IOM uint32_t ALIGN : 1; /*!< [21..21] Input phase alignment */ + uint32_t : 2; + __IOM uint32_t GRP : 2; /*!< [25..24] Output disabled source selection */ + __IOM uint32_t GODF : 1; /*!< [26..26] Group output disable function */ + uint32_t : 2; + __IOM uint32_t NFEN : 1; /*!< [29..29] External Input Noise Filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] External Input Noise Filter Clock selectionNoise filter + * sampling clock setting of the external input. */ + } OPSCR_b; + }; +} R_GPT_OPS_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_POEG0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Port Output Enable for GPT (R_GPT_POEG0) + */ + +typedef struct /*!< (@ 0x40212000) R_GPT_POEG0 Structure */ +{ + union + { + __IOM uint32_t POEGG; /*!< (@ 0x00000000) POEG Group Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] Real Time Overcurrent Detection Flag */ + __IOM uint32_t OSTPF : 1; /*!< [2..2] Oscillation Stop Detection Flag */ + __IOM uint32_t SSF : 1; /*!< [3..3] Software Stop Flag */ + __IOM uint32_t PIDE : 1; /*!< [4..4] Port Input Detection Enable. Note: Can be modified only + * once after a reset. */ + __IOM uint32_t IOCE : 1; /*!< [5..5] Enable for GPT Output-Disable Request. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Oscillation Stop Detection Enable. Note: Can be modified + * only once after a reset. */ + uint32_t : 1; + __IOM uint32_t CDRE0 : 1; /*!< [8..8] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE1 : 1; /*!< [9..9] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE2 : 1; /*!< [10..10] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE3 : 1; /*!< [11..11] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE4 : 1; /*!< [12..12] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + __IOM uint32_t CDRE5 : 1; /*!< [13..13] Comparator Disable Request Enable. Note: Can be modified + * only once after a reset. */ + uint32_t : 2; + __IM uint32_t ST : 1; /*!< [16..16] GTETRG Input Status Flag */ + uint32_t : 7; + __IOM uint32_t DERR0ST : 1; /*!< [24..24] DSMIF0 Error Detection Flag */ + __IOM uint32_t DERR1ST : 1; /*!< [25..25] DSMIF1 Error Detection Flag */ + __IOM uint32_t DERR0E : 1; /*!< [26..26] DSMIF0 Error Detection Enable */ + __IOM uint32_t DERR1E : 1; /*!< [27..27] DSMIF1 Error Detection Enable */ + __IOM uint32_t INV : 1; /*!< [28..28] GTETRG Input Reverse */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise Filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise Filter Clock Select */ + } POEGG_b; + }; + __IM uint32_t RESERVED[15]; + + union + { + __IOM uint16_t GTONCWP; /*!< (@ 0x00000040) GPT Output Stopping Control Group Write Protection + * Register */ + + struct + { + __IOM uint16_t WP : 1; /*!< [0..0] Register Writing Disable */ + uint16_t : 7; + __IOM uint16_t PRKEY : 8; /*!< [15..8] Key Code */ + } GTONCWP_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t GTONCCR; /*!< (@ 0x00000044) GPT Output Stopping Control Group Controlling + * Register */ + + struct + { + __IOM uint16_t NE : 1; /*!< [0..0] Direct Stopping Request Setting */ + uint16_t : 3; + __IOM uint16_t NFS : 4; /*!< [7..4] Direct Stopping Request Selection */ + __IOM uint16_t NFV : 1; /*!< [8..8] Direct Stopping Request Active Sense */ + uint16_t : 7; + } GTONCCR_b; + }; + __IM uint16_t RESERVED2; +} R_GPT_POEG0_Type; /*!< Size = 72 (0x48) */ + +/* =========================================================================================================================== */ +/* ================ R_ICU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Interrupt Controller Unit (R_ICU) + */ + +typedef struct /*!< (@ 0x40006000) R_ICU Structure */ +{ + union + { + __IOM uint8_t IRQCR[16]; /*!< (@ 0x00000000) IRQ Control Register [0..15] */ + + struct + { + __IOM uint8_t IRQMD : 2; /*!< [1..0] IRQ Detection Sense Select */ + uint8_t : 2; + __IOM uint8_t FCLKSEL : 2; /*!< [5..4] IRQ Digital Filter Sampling Clock Select */ + uint8_t : 1; + __IOM uint8_t FLTEN : 1; /*!< [7..7] IRQ Digital Filter Enable */ + } IRQCR_b[16]; + }; + + union + { + __IM uint8_t NMICR; /*!< (@ 0x00000010) NMI Pin Interrupt Control Register */ + + struct + { + __IOM uint8_t NMIMD : 1; /*!< [0..0] NMI Detection Set */ + uint8_t : 3; + __IOM uint8_t NFCLKSEL : 2; /*!< [5..4] NMI Digital Filter Sampling Clock */ + uint8_t : 1; + __IOM uint8_t NFLTEN : 1; /*!< [7..7] NMI Digital Filter Enable */ + } NMICR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[6143]; + + union + { + __IOM uint8_t SWIRQ_S; /*!< (@ 0x00006010) Software Interrupt Request Register for Secure + * Interrupt */ + + struct + { + __IOM uint8_t SWIRQS : 1; /*!< [0..0] Generates an interrupt for the other CPU subsystem. */ + uint8_t : 7; + } SWIRQ_S_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[3]; + + union + { + __IOM uint8_t SWIRQ_NS; /*!< (@ 0x00006020) Software Interrupt Request Register for Non-secure + * Interrupt */ + + struct + { + __IOM uint8_t SWIRQNS : 1; /*!< [0..0] Generates an interrupt for the other CPU subsystem. */ + uint8_t : 7; + } SWIRQ_NS_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; + __IM uint32_t RESERVED8[15]; + + union + { + __IOM uint16_t IENMIER; /*!< (@ 0x00006060) Integrated Error NMI Interrupt Enable Registe + * for CPU */ + + struct + { + __IOM uint16_t CMEN : 1; /*!< [0..0] Integrated Common Memory error nmi Enable */ + __IOM uint16_t LMEN : 1; /*!< [1..1] Integrated Local Memory error nmi Enable */ + __IOM uint16_t BUSEN : 1; /*!< [2..2] Integrated BUS error nmi Enable */ + uint16_t : 13; + } IENMIER_b; + }; + __IM uint16_t RESERVED9; + __IM uint32_t RESERVED10[39]; + + union + { + __IOM uint16_t NMIER; /*!< (@ 0x00006100) Non-Maskable Interrupt Enable Register */ + + struct + { + __IOM uint16_t IWDTEN : 1; /*!< [0..0] IWDT Underflow/Refresh Error Interrupt Enable */ + __IOM uint16_t WDTEN : 1; /*!< [1..1] WDT Underflow/Refresh Error Interrupt Enable */ + __IOM uint16_t LVD1EN : 1; /*!< [2..2] Voltage-Monitoring 1 Interrupt Enable */ + __IOM uint16_t LVD2EN : 1; /*!< [3..3] Voltage-Monitoring 2 Interrupt Enable */ + uint16_t : 2; + __IOM uint16_t OSTEN : 1; /*!< [6..6] Oscillation Stop Detection Interrupt Enable */ + __IOM uint16_t NMIEN : 1; /*!< [7..7] NMI Pin Interrupt Enable */ + uint16_t : 4; + __IOM uint16_t BUSEN : 1; /*!< [12..12] BUS error Interrupt Enable */ + __IOM uint16_t CMEN : 1; /*!< [13..13] Common Memory error Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t LUEN : 1; /*!< [15..15] LockUp Interrupt Enable */ + } NMIER_b; + }; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12[3]; + + union + { + __IOM uint16_t NMICLR; /*!< (@ 0x00006110) Non-Maskable Interrupt Status Clear Register */ + + struct + { + __IOM uint16_t IWDTCLR : 1; /*!< [0..0] IWDT Clear */ + __IOM uint16_t WDTCLR : 1; /*!< [1..1] WDT Clear */ + __IOM uint16_t LVD1CLR : 1; /*!< [2..2] PVD1 Clear */ + __IOM uint16_t LVD2CLR : 1; /*!< [3..3] PVD2 Clear */ + uint16_t : 2; + __IOM uint16_t OSTCLR : 1; /*!< [6..6] OST Clear */ + __IOM uint16_t NMICLR : 1; /*!< [7..7] NMI Clear */ + uint16_t : 4; + __IOM uint16_t BUSCLR : 1; /*!< [12..12] Bus Clear */ + __IOM uint16_t CMCLR : 1; /*!< [13..13] CM Clear */ + uint16_t : 1; + __IOM uint16_t LUCLR : 1; /*!< [15..15] LU Clear */ + } NMICLR_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14[3]; + + union + { + __IM uint16_t NMISR; /*!< (@ 0x00006120) Non-Maskable Interrupt Status Register */ + + struct + { + __IM uint16_t IWDTST : 1; /*!< [0..0] IWDT Underflow/Refresh Error Status Flag */ + __IM uint16_t WDTST : 1; /*!< [1..1] WDT Underflow/Refresh Error Status Flag */ + __IM uint16_t LVD1ST : 1; /*!< [2..2] Voltage-Monitoring 1 Interrupt Status Flag */ + __IM uint16_t LVD2ST : 1; /*!< [3..3] Voltage-Monitoring 2 Interrupt Status Flag */ + uint16_t : 2; + __IM uint16_t OSTST : 1; /*!< [6..6] Oscillation Stop Detection Interrupt Status Flag */ + __IM uint16_t NMIST : 1; /*!< [7..7] NMI Status Flag */ + uint16_t : 4; + __IM uint16_t BUSST : 1; /*!< [12..12] BUS error Interrupt Status Flag */ + __IM uint16_t CMST : 1; /*!< [13..13] Common Memory error Interrupt Status Flag */ + uint16_t : 1; + __IM uint16_t LUST : 1; /*!< [15..15] LockUp Interrupt Status Flag */ + } NMISR_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16[31]; + + union + { + __IOM uint32_t WUPEN; /*!< (@ 0x000061A0) Wake Up Interrupt Enable Register */ + + struct + { + __IOM uint32_t IRQWUPEN0 : 1; /*!< [0..0] IRQ0 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN1 : 1; /*!< [1..1] IRQ1 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN2 : 1; /*!< [2..2] IRQ2 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN3 : 1; /*!< [3..3] IRQ3 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN4 : 1; /*!< [4..4] IRQ4 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN5 : 1; /*!< [5..5] IRQ5 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN6 : 1; /*!< [6..6] IRQ6 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN7 : 1; /*!< [7..7] IRQ7 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN8 : 1; /*!< [8..8] IRQ8 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN9 : 1; /*!< [9..9] IRQ9 Interrupt Deep Sleep/Software Standby Returns Enable + * bit */ + __IOM uint32_t IRQWUPEN10 : 1; /*!< [10..10] IRQ10 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN11 : 1; /*!< [11..11] IRQ11 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN12 : 1; /*!< [12..12] IRQ12 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN13 : 1; /*!< [13..13] IRQ13 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN14 : 1; /*!< [14..14] IRQ14 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IRQWUPEN15 : 1; /*!< [15..15] IRQ15 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t IWDTWUPEN : 1; /*!< [16..16] IWDT Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + uint32_t : 1; + __IOM uint32_t LVD1WUPEN : 1; /*!< [18..18] PVD1 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t LVD2WUPEN : 1; /*!< [19..19] PVD2 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t VBATTWUPEN : 1; /*!< [20..20] VBATT Monitor Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + uint32_t : 3; + __IOM uint32_t RTCALMWUPEN : 1; /*!< [24..24] RTC Alarm Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t RTCPRDWUPEN : 1; /*!< [25..25] RCT Period Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t USBHSWUPEN : 1; /*!< [26..26] USBHS Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t USBFSWUPEN : 1; /*!< [27..27] USBFS0 Interrupt Deep Sleep/Software Standby Returns + * Enable bit */ + __IOM uint32_t AGT1UDWUPEN : 1; /*!< [28..28] AGT1 Underflow Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t AGT1CAWUPEN : 1; /*!< [29..29] AGT1 Compare Match A Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t AGT1CBWUPEN : 1; /*!< [30..30] AGT1 Compare Match B Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t RIIC0WUPEN : 1; /*!< [31..31] RIIC0 Address Match Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + } WUPEN_b; + }; + + union + { + __IOM uint32_t WUPEN1; /*!< (@ 0x000061A4) Wake Up Interrupt Enable Register 1 */ + + struct + { + uint32_t : 3; + __IOM uint32_t COMPHS0WUPEN : 1; /*!< [3..3] Comparator-HS0 Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + uint32_t : 4; + __IOM uint32_t ULP0UWUPEN : 1; /*!< [8..8] ULPT0 Underflow Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t ULP0AWUPEN : 1; /*!< [9..9] ULPT0 Compare Match A Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t ULP0BWUPEN : 1; /*!< [10..10] ULPT0 Compare Match B Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t I3CWUPEN : 1; /*!< [11..11] I3C Wakeup Condition Detection Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t ULP1UWUPEN : 1; /*!< [12..12] ULPT1 Underflow Interrupt Deep Sleep/Software Standby + * Returns Enable bit */ + __IOM uint32_t ULP1AWUPEN : 1; /*!< [13..13] ULPT1 Compare Match A Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + __IOM uint32_t ULP1BWUPEN : 1; /*!< [14..14] ULPT1 Compare Match B Interrupt Deep Sleep/Software + * Standby Returns Enable bit */ + uint32_t : 17; + } WUPEN1_b; + }; + __IM uint32_t RESERVED17[86]; + + union + { + __IOM uint32_t IELSR[96]; /*!< (@ 0x00006300) ICU Event Link Setting Register [0..95] */ + + struct + { + __IOM uint32_t IELS : 9; /*!< [8..0] ICU Event selection to NVICSet the number for the event + * signal to be linked . */ + uint32_t : 7; + __IOM uint32_t IR : 1; /*!< [16..16] Interrupt Status Flag */ + uint32_t : 7; + __IOM uint32_t DTCE : 1; /*!< [24..24] DTC Activation Enable */ + uint32_t : 7; + } IELSR_b[96]; + }; +} R_ICU_Type; /*!< Size = 25728 (0x6480) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I2C Bus Interface (R_IIC0) + */ + +typedef struct /*!< (@ 0x4025E000) R_IIC0 Structure */ +{ + union + { + __IOM uint8_t ICCR1; /*!< (@ 0x00000000) I2C Bus Control Register 1 */ + + struct + { + __IM uint8_t SDAI : 1; /*!< [0..0] SDA Line Monitor */ + __IM uint8_t SCLI : 1; /*!< [1..1] SCL Line Monitor */ + __IOM uint8_t SDAO : 1; /*!< [2..2] SDA Output Control/Monitor */ + __IOM uint8_t SCLO : 1; /*!< [3..3] SCL Output Control/Monitor */ + __IOM uint8_t SOWP : 1; /*!< [4..4] SCLO/SDAO Write Protect */ + __IOM uint8_t CLO : 1; /*!< [5..5] Extra SCL Clock Cycle Output */ + __IOM uint8_t IICRST : 1; /*!< [6..6] I2C Bus Interface Internal ResetNote:If an internal reset + * is initiated using the IICRST bit for a bus hang-up occurred + * during communication with the master device in slave mode, + * the states may become different between the slave device + * and the master device (due to the difference in the bit + * counter information). */ + __IOM uint8_t ICE : 1; /*!< [7..7] I2C Bus Interface Enable */ + } ICCR1_b; + }; + + union + { + __IOM uint8_t ICCR2; /*!< (@ 0x00000001) I2C Bus Control Register 2 */ + + struct + { + uint8_t : 1; + __IOM uint8_t ST : 1; /*!< [1..1] Start Condition Issuance RequestSet the ST bit to 1 (start + * condition issuance request) when the BBSY flag is set to + * 0 (bus free state). */ + __IOM uint8_t RS : 1; /*!< [2..2] Restart Condition Issuance RequestNote: Do not set the + * RS bit to 1 while issuing a stop condition. */ + __IOM uint8_t SP : 1; /*!< [3..3] Stop Condition Issuance RequestNote: Writing to the SP + * bit is not possible while the setting of the BBSY flag + * is 0 (bus free state).Note: Do not set the SP bit to 1 + * while a restart condition is being issued. */ + uint8_t : 1; + __IOM uint8_t TRS : 1; /*!< [5..5] Transmit/Receive Mode */ + __IOM uint8_t MST : 1; /*!< [6..6] Master/Slave Mode */ + __IM uint8_t BBSY : 1; /*!< [7..7] Bus Busy Detection Flag */ + } ICCR2_b; + }; + + union + { + __IOM uint8_t ICMR1; /*!< (@ 0x00000002) I2C Bus Mode Register 1 */ + + struct + { + __IOM uint8_t BC : 3; /*!< [2..0] Bit Counter */ + __OM uint8_t BCWP : 1; /*!< [3..3] BC Write Protect(This bit is read as 1.) */ + __IOM uint8_t CKS : 3; /*!< [6..4] Internal Reference Clock (fIIC) Selection ( fIIC = PCLKB + * / 2^CKS ) */ + __IOM uint8_t MTWP : 1; /*!< [7..7] MST/TRS Write Protect */ + } ICMR1_b; + }; + + union + { + __IOM uint8_t ICMR2; /*!< (@ 0x00000003) I2C Bus Mode Register 2 */ + + struct + { + __IOM uint8_t TMOS : 1; /*!< [0..0] Timeout Detection Time Select */ + __IOM uint8_t TMOL : 1; /*!< [1..1] Timeout L Count Control */ + __IOM uint8_t TMOH : 1; /*!< [2..2] Timeout H Count Control */ + uint8_t : 1; + __IOM uint8_t SDDL : 3; /*!< [6..4] SDA Output Delay Counter */ + __IOM uint8_t DLCS : 1; /*!< [7..7] SDA Output Delay Clock Source Select */ + } ICMR2_b; + }; + + union + { + __IOM uint8_t ICMR3; /*!< (@ 0x00000004) I2C Bus Mode Register 3 */ + + struct + { + __IOM uint8_t NF : 2; /*!< [1..0] Noise Filter Stage Selection */ + __IM uint8_t ACKBR : 1; /*!< [2..2] Receive Acknowledge */ + __IOM uint8_t ACKBT : 1; /*!< [3..3] Transmit Acknowledge */ + __IOM uint8_t ACKWP : 1; /*!< [4..4] ACKBT Write Protect */ + __IOM uint8_t RDRFS : 1; /*!< [5..5] RDRF Flag Set Timing Selection */ + __IOM uint8_t WAIT : 1; /*!< [6..6] WAITNote: When the value of the WAIT bit is to be read, + * be sure to read the ICDRR beforehand. */ + __IOM uint8_t SMBS : 1; /*!< [7..7] SMBus/I2C Bus Selection */ + } ICMR3_b; + }; + + union + { + __IOM uint8_t ICFER; /*!< (@ 0x00000005) I2C Bus Function Enable Register */ + + struct + { + __IOM uint8_t TMOE : 1; /*!< [0..0] Timeout Function Enable */ + __IOM uint8_t MALE : 1; /*!< [1..1] Master Arbitration-Lost Detection Enable */ + __IOM uint8_t NALE : 1; /*!< [2..2] NACK Transmission Arbitration-Lost Detection Enable */ + __IOM uint8_t SALE : 1; /*!< [3..3] Slave Arbitration-Lost Detection Enable */ + __IOM uint8_t NACKE : 1; /*!< [4..4] NACK Reception Transfer Suspension Enable */ + __IOM uint8_t NFE : 1; /*!< [5..5] Digital Noise Filter Circuit Enable */ + __IOM uint8_t SCLE : 1; /*!< [6..6] SCL Synchronous Circuit Enable */ + __IOM uint8_t FMPE : 1; /*!< [7..7] Fast-mode Plus Enable */ + } ICFER_b; + }; + + union + { + __IOM uint8_t ICSER; /*!< (@ 0x00000006) I2C Bus Status Enable Register */ + + struct + { + __IOM uint8_t SAR0E : 1; /*!< [0..0] Slave Address Register 0 Enable */ + __IOM uint8_t SAR1E : 1; /*!< [1..1] Slave Address Register 1 Enable */ + __IOM uint8_t SAR2E : 1; /*!< [2..2] Slave Address Register 2 Enable */ + __IOM uint8_t GCAE : 1; /*!< [3..3] General Call Address Enable */ + uint8_t : 1; + __IOM uint8_t DIDE : 1; /*!< [5..5] Device-ID Address Detection Enable */ + uint8_t : 1; + __IOM uint8_t HOAE : 1; /*!< [7..7] Host Address Enable */ + } ICSER_b; + }; + + union + { + __IOM uint8_t ICIER; /*!< (@ 0x00000007) I2C Bus Interrupt Enable Register */ + + struct + { + __IOM uint8_t TMOIE : 1; /*!< [0..0] Timeout Interrupt Request Enable */ + __IOM uint8_t ALIE : 1; /*!< [1..1] Arbitration-Lost Interrupt Request Enable */ + __IOM uint8_t STIE : 1; /*!< [2..2] Start Condition Detection Interrupt Request Enable */ + __IOM uint8_t SPIE : 1; /*!< [3..3] Stop Condition Detection Interrupt Request Enable */ + __IOM uint8_t NAKIE : 1; /*!< [4..4] NACK Reception Interrupt Request Enable */ + __IOM uint8_t RIE : 1; /*!< [5..5] Receive Data Full Interrupt Request Enable */ + __IOM uint8_t TEIE : 1; /*!< [6..6] Transmit End Interrupt Request Enable */ + __IOM uint8_t TIE : 1; /*!< [7..7] Transmit Data Empty Interrupt Request Enable */ + } ICIER_b; + }; + + union + { + __IOM uint8_t ICSR1; /*!< (@ 0x00000008) I2C Bus Status Register 1 */ + + struct + { + __IOM uint8_t AAS0 : 1; /*!< [0..0] Slave Address 0 Detection Flag */ + __IOM uint8_t AAS1 : 1; /*!< [1..1] Slave Address 1 Detection Flag */ + __IOM uint8_t AAS2 : 1; /*!< [2..2] Slave Address 2 Detection Flag */ + __IOM uint8_t GCA : 1; /*!< [3..3] General Call Address Detection Flag */ + uint8_t : 1; + __IOM uint8_t DID : 1; /*!< [5..5] Device-ID Address Detection Flag */ + uint8_t : 1; + __IOM uint8_t HOA : 1; /*!< [7..7] Host Address Detection Flag */ + } ICSR1_b; + }; + + union + { + __IOM uint8_t ICSR2; /*!< (@ 0x00000009) I2C Bus Status Register 2 */ + + struct + { + __IOM uint8_t TMOF : 1; /*!< [0..0] Timeout Detection Flag */ + __IOM uint8_t AL : 1; /*!< [1..1] Arbitration-Lost Flag */ + __IOM uint8_t START : 1; /*!< [2..2] Start Condition Detection Flag */ + __IOM uint8_t STOP : 1; /*!< [3..3] Stop Condition Detection Flag */ + __IOM uint8_t NACKF : 1; /*!< [4..4] NACK Detection Flag */ + __IOM uint8_t RDRF : 1; /*!< [5..5] Receive Data Full Flag */ + __IOM uint8_t TEND : 1; /*!< [6..6] Transmit End Flag */ + __IM uint8_t TDRE : 1; /*!< [7..7] Transmit Data Empty Flag */ + } ICSR2_b; + }; + __IOM R_IIC0_SAR_Type SAR[3]; /*!< (@ 0x0000000A) Slave Address Registers */ + + union + { + __IOM uint8_t ICBRL; /*!< (@ 0x00000010) I2C Bus Bit Rate Low-Level Register */ + + struct + { + __IOM uint8_t BRL : 5; /*!< [4..0] Bit Rate Low-Level Period(Low-level period of SCL clock) */ + uint8_t : 3; + } ICBRL_b; + }; + + union + { + __IOM uint8_t ICBRH; /*!< (@ 0x00000011) I2C Bus Bit Rate High-Level Register */ + + struct + { + __IOM uint8_t BRH : 5; /*!< [4..0] Bit Rate High-Level Period(High-level period of SCL clock) */ + uint8_t : 3; + } ICBRH_b; + }; + + union + { + __IOM uint8_t ICDRT; /*!< (@ 0x00000012) I2C Bus Transmit Data Register */ + + struct + { + __IOM uint8_t ICDRT : 8; /*!< [7..0] 8-bit read-write register that stores transmit data. */ + } ICDRT_b; + }; + + union + { + __IM uint8_t ICDRR; /*!< (@ 0x00000013) I2C Bus Receive Data Register */ + + struct + { + __IM uint8_t ICDRR : 8; /*!< [7..0] 8-bit register that stores the received data */ + } ICDRR_b; + }; + __IM uint8_t RESERVED[2]; + + union + { + __IOM uint8_t ICWUR; /*!< (@ 0x00000016) I2C Bus Wake Up Unit Register */ + + struct + { + __IOM uint8_t WUAFA : 1; /*!< [0..0] Wakeup Analog Filter Additional Selection */ + uint8_t : 3; + __IOM uint8_t WUACK : 1; /*!< [4..4] ACK bit for Wakeup Mode */ + __IOM uint8_t WUF : 1; /*!< [5..5] Wakeup Event Occurrence Flag */ + __IOM uint8_t WUIE : 1; /*!< [6..6] Wakeup Interrupt Request Enable */ + __IOM uint8_t WUE : 1; /*!< [7..7] Wakeup Function Enable */ + } ICWUR_b; + }; + + union + { + __IOM uint8_t ICWUR2; /*!< (@ 0x00000017) I2C Bus Wake up Unit Register 2 */ + + struct + { + __IOM uint8_t WUSEN : 1; /*!< [0..0] Wake-up Function Synchronous Enable */ + __IM uint8_t WUASYF : 1; /*!< [1..1] Wake-up Function Asynchronous Operation Status Flag */ + __IM uint8_t WUSYF : 1; /*!< [2..2] Wake-up Function Synchronous Operation Status Flag */ + uint8_t : 5; + } ICWUR2_b; + }; +} R_IIC0_Type; /*!< Size = 24 (0x18) */ + +/* =========================================================================================================================== */ +/* ================ R_IWDT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Independent Watchdog Timer (R_IWDT) + */ + +typedef struct /*!< (@ 0x40202200) R_IWDT Structure */ +{ + union + { + __IOM uint8_t IWDTRR; /*!< (@ 0x00000000) IWDT Refresh Register */ + + struct + { + __IOM uint8_t IWDTRR : 8; /*!< [7..0] The counter is refreshed by writing 0x00 and then writing + * 0xFF to this register. */ + } IWDTRR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t IWDTCR; /*!< (@ 0x00000002) IWDT Control Register */ + + struct + { + __IOM uint16_t TOPS : 2; /*!< [1..0] Timeout Period Selection */ + uint16_t : 2; + __IOM uint16_t CKS : 4; /*!< [7..4] Clock Division Ratio Selection */ + __IOM uint16_t RPES : 2; /*!< [9..8] Window End Position Selection */ + uint16_t : 2; + __IOM uint16_t RPSS : 2; /*!< [13..12] Window Start Position Selection */ + uint16_t : 2; + } IWDTCR_b; + }; + + union + { + __IOM uint16_t IWDTSR; /*!< (@ 0x00000004) IWDT Status Register */ + + struct + { + __IM uint16_t CNTVAL : 14; /*!< [13..0] Down-Counter Value */ + __IOM uint16_t UNDFF : 1; /*!< [14..14] Underflow Flag */ + __IOM uint16_t REFEF : 1; /*!< [15..15] Refresh Error Flag */ + } IWDTSR_b; + }; + + union + { + __IOM uint8_t IWDTRCR; /*!< (@ 0x00000006) IWDT Reset Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t RSTIRQS : 1; /*!< [7..7] Reset Interrupt Request Selection */ + } IWDTRCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t IWDTCSTPR; /*!< (@ 0x00000008) IWDT Count Stop Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t SLCSTP : 1; /*!< [7..7] Sleep-Mode Count Stop Control */ + } IWDTCSTPR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; +} R_IWDT_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_I3C0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I3C Bus Interface (R_I3C0) + */ + +typedef struct /*!< (@ 0x4035F000) R_I3C0 Structure */ +{ + union + { + __IOM uint32_t PRTS; /*!< (@ 0x00000000) Protocol Selection Register */ + + struct + { + __IOM uint32_t PRTMD : 1; /*!< [0..0] Protocol Mode */ + uint32_t : 31; + } PRTS_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t CECTL; /*!< (@ 0x00000010) Clock Enable Control Resisters */ + + struct + { + __IOM uint32_t CLKE : 1; /*!< [0..0] Clock Enable */ + uint32_t : 31; + } CECTL_b; + }; + + union + { + __IOM uint32_t BCTL; /*!< (@ 0x00000014) Bus Control Register */ + + struct + { + __IOM uint32_t INCBA : 1; /*!< [0..0] Include I3C Broadcast Address */ + uint32_t : 6; + __IOM uint32_t BMDS : 1; /*!< [7..7] Bus Mode Selection */ + __IOM uint32_t HJACKCTL : 1; /*!< [8..8] Hot-Join Acknowledge Control */ + uint32_t : 20; + __IOM uint32_t ABT : 1; /*!< [29..29] Abort */ + __IOM uint32_t RSM : 1; /*!< [30..30] Resume */ + __IOM uint32_t BUSE : 1; /*!< [31..31] Bus Enable */ + } BCTL_b; + }; + + union + { + __IOM uint32_t MSDVAD; /*!< (@ 0x00000018) Master Device Address Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t MDYAD : 7; /*!< [22..16] Master Dynamic Address */ + uint32_t : 8; + __IOM uint32_t MDYADV : 1; /*!< [31..31] Master Dynamic Address Valid */ + } MSDVAD_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t RSTCTL; /*!< (@ 0x00000020) Reset Control Register */ + + struct + { + __IOM uint32_t RI3CRST : 1; /*!< [0..0] I3C Software Reset */ + __IOM uint32_t CMDQRST : 1; /*!< [1..1] Command Queue Software Reset */ + __IOM uint32_t RSPQRST : 1; /*!< [2..2] Response Queue Software Reset */ + __IOM uint32_t TDBRST : 1; /*!< [3..3] Transmit Data Buffer Software Reset */ + __IOM uint32_t RDBRST : 1; /*!< [4..4] Receive Data Buffer Software Reset */ + __IOM uint32_t IBIQRST : 1; /*!< [5..5] IBI Queue Software Reset */ + __IOM uint32_t RSQRST : 1; /*!< [6..6] Receive Status Queue Software Reset */ + uint32_t : 9; + __IOM uint32_t INTLRST : 1; /*!< [16..16] Internal Software Reset */ + uint32_t : 15; + } RSTCTL_b; + }; + + union + { + __IOM uint32_t PRSST; /*!< (@ 0x00000024) Present State Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t CRMS : 1; /*!< [2..2] Current Master */ + uint32_t : 1; + __IM uint32_t TRMD : 1; /*!< [4..4] Transmit/Receive Mode */ + uint32_t : 2; + __OM uint32_t PRSSTWP : 1; /*!< [7..7] Present State Write Protect */ + uint32_t : 24; + } PRSST_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t INST; /*!< (@ 0x00000030) Internal Status Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t INEF : 1; /*!< [10..10] Internal Error Flag */ + uint32_t : 21; + } INST_b; + }; + + union + { + __IOM uint32_t INSTE; /*!< (@ 0x00000034) Internal Status Enable Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t INEE : 1; /*!< [10..10] Internal Error Enable */ + uint32_t : 21; + } INSTE_b; + }; + + union + { + __IOM uint32_t INIE; /*!< (@ 0x00000038) Internal Interrupt Enable Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t INEIE : 1; /*!< [10..10] Internal Error Interrupt Enable */ + uint32_t : 21; + } INIE_b; + }; + + union + { + __IOM uint32_t INSTFC; /*!< (@ 0x0000003C) Internal Status Force Register */ + + struct + { + uint32_t : 10; + __OM uint32_t INEFC : 1; /*!< [10..10] Internal Error Force */ + uint32_t : 21; + } INSTFC_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IM uint32_t DVCT; /*!< (@ 0x00000044) Device Characteristic Table Register */ + + struct + { + uint32_t : 19; + __IM uint32_t IDX : 5; /*!< [23..19] DCT Table Index */ + uint32_t : 8; + } DVCT_b; + }; + __IM uint32_t RESERVED4[4]; + + union + { + __IOM uint32_t IBINCTL; /*!< (@ 0x00000058) IBI Notify Control Register */ + + struct + { + __IOM uint32_t NRHJCTL : 1; /*!< [0..0] Notify Rejected Hot-Join Control */ + __IOM uint32_t NRMRCTL : 1; /*!< [1..1] Notify Rejected Master Request Control */ + uint32_t : 1; + __IOM uint32_t NRSIRCTL : 1; /*!< [3..3] Notify Rejected Slave Interrupt Request Control */ + uint32_t : 28; + } IBINCTL_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t BFCTL; /*!< (@ 0x00000060) Bus Function Control Register */ + + struct + { + __IOM uint32_t MALE : 1; /*!< [0..0] Master Arbitration-Lost Detection Enable */ + __IOM uint32_t NALE : 1; /*!< [1..1] NACK Transmission Arbitration-Lost Detection Enable */ + __IOM uint32_t SALE : 1; /*!< [2..2] Slave Arbitration-Lost Detection Enable */ + uint32_t : 5; + __IOM uint32_t SCSYNE : 1; /*!< [8..8] SCL Synchronous Circuit Enable */ + uint32_t : 3; + __IOM uint32_t SMBS : 1; /*!< [12..12] SMBus/I2C Bus Selection */ + uint32_t : 1; + __IOM uint32_t FMPE : 1; /*!< [14..14] Fast-mode Plus Enable */ + __IOM uint32_t HSME : 1; /*!< [15..15] High Speed Mode Enable */ + uint32_t : 16; + } BFCTL_b; + }; + + union + { + __IOM uint32_t SVCTL; /*!< (@ 0x00000064) Slave Control Register */ + + struct + { + __IOM uint32_t GCAE : 1; /*!< [0..0] General Call Address Enable */ + uint32_t : 4; + __IOM uint32_t HSMCE : 1; /*!< [5..5] Hs-mode Master Code Enable */ + __IOM uint32_t DVIDE : 1; /*!< [6..6] Device-ID Address Enable */ + uint32_t : 8; + __IOM uint32_t HOAE : 1; /*!< [15..15] Host Address Enable */ + __IOM uint32_t SVAEn : 1; /*!< [16..16] Slave Address Enable n (n = 0) */ + uint32_t : 15; + } SVCTL_b; + }; + __IM uint32_t RESERVED6[2]; + + union + { + __IOM uint32_t REFCKCTL; /*!< (@ 0x00000070) Reference Clock Control Register */ + + struct + { + __IOM uint32_t IREFCKS : 3; /*!< [2..0] Internal Reference Clock Selection */ + uint32_t : 29; + } REFCKCTL_b; + }; + + union + { + __IOM uint32_t STDBR; /*!< (@ 0x00000074) Standard Bit Rate Register */ + + struct + { + __IOM uint32_t SBRLO : 8; /*!< [7..0] Count value of the Low-level period of SCL clock */ + __IOM uint32_t SBRHO : 8; /*!< [15..8] Count value of the High-level period of SCL clock */ + __IOM uint32_t SBRLP : 6; /*!< [21..16] Standard Bit Rate Low-level Period Push-Pull */ + uint32_t : 2; + __IOM uint32_t SBRHP : 6; /*!< [29..24] Standard Bit Rate High-Level Period Push-Pull */ + uint32_t : 1; + __IOM uint32_t DSBRPO : 1; /*!< [31..31] Double the Standard Bit Rate Period for Open-Drain */ + } STDBR_b; + }; + + union + { + __IOM uint32_t EXTBR; /*!< (@ 0x00000078) Extended Bit Rate Register */ + + struct + { + __IOM uint32_t EBRLO : 8; /*!< [7..0] Extended Bit Rate Low-Level Period Open-Drain */ + __IOM uint32_t EBRHO : 8; /*!< [15..8] Extended Bit Rate High-Level Period Open-Drain */ + __IOM uint32_t EBRLP : 6; /*!< [21..16] Extended Bit Rate Low-Level Period Push-Pull */ + uint32_t : 2; + __IOM uint32_t EBRHP : 6; /*!< [29..24] Extended Bit Rate Low-Level Period Push-Pull */ + uint32_t : 2; + } EXTBR_b; + }; + + union + { + __IOM uint32_t BFRECDT; /*!< (@ 0x0000007C) Bus Free Condition Detection Time Register */ + + struct + { + __IOM uint32_t FRECYC : 9; /*!< [8..0] Bus Free Condition Detection Cycle */ + uint32_t : 23; + } BFRECDT_b; + }; + + union + { + __IOM uint32_t BAVLCDT; /*!< (@ 0x00000080) Bus Available Condition Detection Time Register */ + + struct + { + __IOM uint32_t AVLCYC : 9; /*!< [8..0] Bus Available Condition Detection Cycle */ + uint32_t : 23; + } BAVLCDT_b; + }; + + union + { + __IOM uint32_t BIDLCDT; /*!< (@ 0x00000084) Bus Idle Condition Detection Time Register */ + + struct + { + __IOM uint32_t IDLCYC : 18; /*!< [17..0] Bus Idle Condition Detection Cycle */ + uint32_t : 14; + } BIDLCDT_b; + }; + + union + { + __IOM uint32_t OUTCTL; /*!< (@ 0x00000088) Output Control Register */ + + struct + { + __IOM uint32_t SDOC : 1; /*!< [0..0] SDA Output Control */ + __IOM uint32_t SCOC : 1; /*!< [1..1] SCL Output Control */ + __OM uint32_t SOCWP : 1; /*!< [2..2] SCL/SDA Output Control Write Protect */ + uint32_t : 1; + __IOM uint32_t EXCYC : 1; /*!< [4..4] Extra SCL Clock Cycle Output */ + uint32_t : 3; + __IOM uint32_t SDOD : 3; /*!< [10..8] SDA Output Delay */ + uint32_t : 4; + __IOM uint32_t SDODCS : 1; /*!< [15..15] SDA Output Delay Clock Source Selection */ + uint32_t : 16; + } OUTCTL_b; + }; + + union + { + __IOM uint32_t INCTL; /*!< (@ 0x0000008C) Input Control Register */ + + struct + { + __IOM uint32_t DNFS : 4; /*!< [3..0] Digital Noise Filter Stage Selection */ + __IOM uint32_t DNFE : 1; /*!< [4..4] Digital Noise Filter Circuit Enable */ + uint32_t : 27; + } INCTL_b; + }; + + union + { + __IOM uint32_t TMOCTL; /*!< (@ 0x00000090) Timeout Control Register */ + + struct + { + __IOM uint32_t TODTS : 2; /*!< [1..0] Timeout Detection Time Selection */ + uint32_t : 2; + __IOM uint32_t TOLCTL : 1; /*!< [4..4] Timeout L Count Control */ + __IOM uint32_t TOHCTL : 1; /*!< [5..5] Timeout H Count Control */ + __IOM uint32_t TOMDS : 2; /*!< [7..6] Timeout Operation Mode Selection */ + uint32_t : 24; + } TMOCTL_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IOM uint32_t WUCTL; /*!< (@ 0x00000098) Wake Up Unit Control Register */ + + struct + { + __IOM uint32_t WUACKS : 1; /*!< [0..0] Wake-Up Acknowledge Selection */ + uint32_t : 3; + __IOM uint32_t WUANFS : 1; /*!< [4..4] Wake-Up Analog Noise Filter Selection */ + uint32_t : 1; + __IOM uint32_t WUFSYNE : 1; /*!< [6..6] Wake-Up function PCLKA Synchronous Enable */ + __IOM uint32_t WUFE : 1; /*!< [7..7] Wake-Up function Enable. */ + uint32_t : 24; + } WUCTL_b; + }; + __IM uint32_t RESERVED8; + + union + { + __IOM uint32_t ACKCTL; /*!< (@ 0x000000A0) Acknowledge Control Register */ + + struct + { + __IM uint32_t ACKR : 1; /*!< [0..0] Acknowledge Reception */ + __IOM uint32_t ACKT : 1; /*!< [1..1] Acknowledge Transmission */ + __OM uint32_t ACKTWP : 1; /*!< [2..2] ACKT Write Protect */ + uint32_t : 29; + } ACKCTL_b; + }; + + union + { + __IOM uint32_t SCSTRCTL; /*!< (@ 0x000000A4) SCL Stretch Control Register */ + + struct + { + __IOM uint32_t ACKTWE : 1; /*!< [0..0] Acknowledge Transmission Wait Enable */ + __IOM uint32_t RWE : 1; /*!< [1..1] Receive Wait Enable */ + uint32_t : 30; + } SCSTRCTL_b; + }; + __IM uint32_t RESERVED9[2]; + + union + { + __IOM uint32_t SCSTLCTL; /*!< (@ 0x000000B0) SCL Stalling Control Register */ + + struct + { + __IOM uint32_t STLCYC : 16; /*!< [15..0] Stalling Cycle */ + uint32_t : 12; + __IOM uint32_t AAPE : 1; /*!< [28..28] Assigend Address Phase Enable */ + __IOM uint32_t TRAPE : 1; /*!< [29..29] Transition Phase Enable */ + __IOM uint32_t PARPE : 1; /*!< [30..30] Parity Phase Enable */ + __IOM uint32_t ACKPE : 1; /*!< [31..31] ACK phase Enable */ + } SCSTLCTL_b; + }; + __IM uint32_t RESERVED10[3]; + + union + { + __IOM uint32_t SVTDLG0; /*!< (@ 0x000000C0) Slave Transfer Data Length Register 0 */ + + struct + { + uint32_t : 16; + __IOM uint32_t STDLG : 16; /*!< [31..16] Slave Transfer Data Length */ + } SVTDLG0_b; + }; + __IM uint32_t RESERVED11[31]; + + union + { + __IOM uint32_t CNDCTL; /*!< (@ 0x00000140) Condition Control Register */ + + struct + { + __IOM uint32_t STCND : 1; /*!< [0..0] START (S) Condition Issuance */ + __IOM uint32_t SRCND : 1; /*!< [1..1] Repeated START (Sr) Condition Issuance */ + __IOM uint32_t SPCND : 1; /*!< [2..2] STOP (P) Condition Issuance */ + uint32_t : 29; + } CNDCTL_b; + }; + __IM uint32_t RESERVED12[3]; + __OM uint32_t NCMDQP; /*!< (@ 0x00000150) Normal Command Queue Port Register */ + __IM uint32_t NRSPQP; /*!< (@ 0x00000154) Normal Response Queue Port Register */ + __IOM uint32_t NTDTBP0; /*!< (@ 0x00000158) Normal Transfer Data Buffer Port Register 0 */ + __IM uint32_t RESERVED13[8]; + __IOM uint32_t NIBIQP; /*!< (@ 0x0000017C) Normal IBI Queue Port Register */ + __IM uint32_t NRSQP; /*!< (@ 0x00000180) Normal Receive Status Queue Port Register */ + __IM uint32_t RESERVED14[3]; + + union + { + __IOM uint32_t NQTHCTL; /*!< (@ 0x00000190) Normal Queue Threshold Control Register */ + + struct + { + __IOM uint32_t CMDQTH : 8; /*!< [7..0] Normal Command Ready Queue Threshold */ + __IOM uint32_t RSPQTH : 8; /*!< [15..8] Normal Response Queue Threshold */ + __IOM uint32_t IBIDSSZ : 8; /*!< [23..16] Normal IBI Data Segment Size */ + __IOM uint32_t IBIQTH : 8; /*!< [31..24] Normal IBI Queue Threshold */ + } NQTHCTL_b; + }; + + union + { + __IOM uint32_t NTBTHCTL0; /*!< (@ 0x00000194) Normal Transfer Data Buffer Threshold Control + * Register 0 */ + + struct + { + __IOM uint32_t TXDBTH : 3; /*!< [2..0] Normal Transmit Data Buffer Threshold */ + uint32_t : 5; + __IOM uint32_t RXDBTH : 3; /*!< [10..8] Normal Receive Data Buffer Threshold */ + uint32_t : 5; + __IOM uint32_t TXSTTH : 3; /*!< [18..16] Normal Tx Start Threshold */ + uint32_t : 5; + __IOM uint32_t RXSTTH : 3; /*!< [26..24] Normal Rx Start Threshold */ + uint32_t : 5; + } NTBTHCTL0_b; + }; + __IM uint32_t RESERVED15[10]; + + union + { + __IOM uint32_t NRQTHCTL; /*!< (@ 0x000001C0) Normal Receive Status Queue Threshold Control + * Register */ + + struct + { + __IOM uint32_t RSQTH : 8; /*!< [7..0] Normal Receive Status Queue Threshold */ + uint32_t : 24; + } NRQTHCTL_b; + }; + __IM uint32_t RESERVED16[3]; + + union + { + __IOM uint32_t BST; /*!< (@ 0x000001D0) Bus Status Register */ + + struct + { + __IOM uint32_t STCNDDF : 1; /*!< [0..0] START condition Detection Flag */ + __IOM uint32_t SPCNDDF : 1; /*!< [1..1] STOP condition Detection Flag */ + __IOM uint32_t HDREXDF : 1; /*!< [2..2] HDR Exit Pattern Detection Flag */ + uint32_t : 1; + __IOM uint32_t NACKDF : 1; /*!< [4..4] NACK Detection Flag */ + uint32_t : 3; + __IOM uint32_t TENDF : 1; /*!< [8..8] Transmit End Flag */ + uint32_t : 7; + __IOM uint32_t ALF : 1; /*!< [16..16] Arbitration Lost Flag */ + uint32_t : 3; + __IOM uint32_t TODF : 1; /*!< [20..20] Timeout Detection Flag */ + uint32_t : 11; + } BST_b; + }; + + union + { + __IOM uint32_t BSTE; /*!< (@ 0x000001D4) Bus Status Enable Register */ + + struct + { + __IOM uint32_t STCNDDE : 1; /*!< [0..0] START condition Detection Enable */ + __IOM uint32_t SPCNDDE : 1; /*!< [1..1] STOP condition Detection Enable */ + __IOM uint32_t HDREXDE : 1; /*!< [2..2] HDR Exit Pattern Detection Enable */ + uint32_t : 1; + __IOM uint32_t NACKDE : 1; /*!< [4..4] NACK Detection Enable */ + uint32_t : 3; + __IOM uint32_t TENDE : 1; /*!< [8..8] Transmit End Enable */ + uint32_t : 7; + __IOM uint32_t ALE : 1; /*!< [16..16] Arbitration Lost Enable */ + uint32_t : 3; + __IOM uint32_t TODE : 1; /*!< [20..20] Timeout Detection Enable */ + uint32_t : 11; + } BSTE_b; + }; + + union + { + __IOM uint32_t BIE; /*!< (@ 0x000001D8) Bus Interrupt Enable Register */ + + struct + { + __IOM uint32_t STCNDDIE : 1; /*!< [0..0] START condition Detection Interrupt Enable */ + __IOM uint32_t SPCNDDIE : 1; /*!< [1..1] STOP condition Detection Interrupt Enable */ + __IOM uint32_t HDREXDIE : 1; /*!< [2..2] HDR Exit Pattern Detection Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t NACKDIE : 1; /*!< [4..4] NACK Detection Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TENDIE : 1; /*!< [8..8] Transmit End Interrupt Enable */ + uint32_t : 7; + __IOM uint32_t ALIE : 1; /*!< [16..16] Arbitration Lost Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TODIE : 1; /*!< [20..20] Timeout Detection Interrupt Enable */ + uint32_t : 11; + } BIE_b; + }; + + union + { + __IOM uint32_t BSTFC; /*!< (@ 0x000001DC) Bus Status Force Register */ + + struct + { + __OM uint32_t STCNDDFC : 1; /*!< [0..0] START condition Detection Force */ + __OM uint32_t SPCNDDFC : 1; /*!< [1..1] STOP condition Detection Force */ + __OM uint32_t HDREXDFC : 1; /*!< [2..2] HDR Exit Pattern Detection Force */ + uint32_t : 1; + __OM uint32_t NACKDFC : 1; /*!< [4..4] NACK Detection Force */ + uint32_t : 3; + __OM uint32_t TENDFC : 1; /*!< [8..8] Transmit End Force */ + uint32_t : 7; + __OM uint32_t ALFC : 1; /*!< [16..16] Arbitration Lost Force */ + uint32_t : 3; + __OM uint32_t TODFC : 1; /*!< [20..20] Timeout Detection Force */ + uint32_t : 11; + } BSTFC_b; + }; + + union + { + __IOM uint32_t NTST; /*!< (@ 0x000001E0) Normal Transfer Status Register */ + + struct + { + __IOM uint32_t TDBEF0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Flag 0 */ + __IOM uint32_t RDBFF0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Flag 0 */ + __IOM uint32_t IBIQEFF : 1; /*!< [2..2] Normal IBI Queue Empty/Full Flag */ + __IOM uint32_t CMDQEF : 1; /*!< [3..3] Normal Command Queue Empty Flag */ + __IOM uint32_t RSPQFF : 1; /*!< [4..4] Normal Response Queue Full Flag */ + __IOM uint32_t TABTF : 1; /*!< [5..5] Normal Transfer Abort Flag */ + uint32_t : 3; + __IOM uint32_t TEF : 1; /*!< [9..9] Normal Transfer Error Flag */ + uint32_t : 10; + __IOM uint32_t RSQFF : 1; /*!< [20..20] Normal Receive Status Queue Full Flag */ + uint32_t : 11; + } NTST_b; + }; + + union + { + __IOM uint32_t NTSTE; /*!< (@ 0x000001E4) Normal Transfer Status Enable Register */ + + struct + { + __IOM uint32_t TDBEE0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Enable 0 */ + __IOM uint32_t RDBFE0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Enable 0 */ + __IOM uint32_t IBIQEFE : 1; /*!< [2..2] Normal IBI Queue Empty/Full Enable */ + __IOM uint32_t CMDQEE : 1; /*!< [3..3] Normal Command Queue Empty Enable */ + __IOM uint32_t RSPQFE : 1; /*!< [4..4] Normal Response Queue Full Enable */ + __IOM uint32_t TABTE : 1; /*!< [5..5] Normal Transfer Abort Enable */ + uint32_t : 3; + __IOM uint32_t TEE : 1; /*!< [9..9] Normal Transfer Error Enable */ + uint32_t : 10; + __IOM uint32_t RSQFE : 1; /*!< [20..20] Normal Receive Status Queue Full Enable */ + uint32_t : 11; + } NTSTE_b; + }; + + union + { + __IOM uint32_t NTIE; /*!< (@ 0x000001E8) Normal Transfer Interrupt Enable Register */ + + struct + { + __IOM uint32_t TDBEIE0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Interrupt Enable 0 */ + __IOM uint32_t RDBFIE0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Interrupt Enable 0 */ + __IOM uint32_t IBIQEFIE : 1; /*!< [2..2] Normal IBI Queue Empty/Full Interrupt Enable */ + __IOM uint32_t CMDQEIE : 1; /*!< [3..3] Normal Command Queue Empty Interrupt Enable */ + __IOM uint32_t RSPQFIE : 1; /*!< [4..4] Normal Response Queue Full Interrupt Enable */ + __IOM uint32_t TABTIE : 1; /*!< [5..5] Normal Transfer Abort Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TEIE : 1; /*!< [9..9] Normal Transfer Error Interrupt Enable */ + uint32_t : 10; + __IOM uint32_t RSQFIE : 1; /*!< [20..20] Normal Receive Status Queue Full Interrupt Enable */ + uint32_t : 11; + } NTIE_b; + }; + + union + { + __IOM uint32_t NTSTFC; /*!< (@ 0x000001EC) Normal Transfer Status Force Register */ + + struct + { + __OM uint32_t TDBEFC0 : 1; /*!< [0..0] Normal Transmit Data Buffer Empty Force 0 */ + __OM uint32_t RDBFFC0 : 1; /*!< [1..1] Normal Receive Data Buffer Full Force 0 */ + __OM uint32_t IBIQEFFC : 1; /*!< [2..2] Normal IBI Queue Empty/Full Force */ + __OM uint32_t CMDQEFC : 1; /*!< [3..3] Normal Command Queue Empty Force */ + __OM uint32_t RSPQFFC : 1; /*!< [4..4] Normal Response Queue Full Force */ + __OM uint32_t TABTFC : 1; /*!< [5..5] Normal Transfer Abort Force */ + uint32_t : 3; + __OM uint32_t TEFC : 1; /*!< [9..9] Normal Transfer Error Force */ + uint32_t : 10; + __OM uint32_t RSQFFC : 1; /*!< [20..20] Normal Receive Status Queue Full Force */ + uint32_t : 11; + } NTSTFC_b; + }; + __IM uint32_t RESERVED17[8]; + + union + { + __IM uint32_t BCST; /*!< (@ 0x00000210) Bus Condition Status Register */ + + struct + { + __IM uint32_t BFREF : 1; /*!< [0..0] Bus Free Detection Flag */ + __IM uint32_t BAVLF : 1; /*!< [1..1] Bus Available Detection Flag */ + __IM uint32_t BIDLF : 1; /*!< [2..2] Bus Idle Detection Flag */ + uint32_t : 29; + } BCST_b; + }; + + union + { + __IOM uint32_t SVST; /*!< (@ 0x00000214) Slave Status Register */ + + struct + { + __IOM uint32_t GCAF : 1; /*!< [0..0] General Call Address Detection Flag */ + uint32_t : 4; + __IOM uint32_t HSMCF : 1; /*!< [5..5] Hs-mode Master Code Detection Flag */ + __IOM uint32_t DVIDF : 1; /*!< [6..6] Device-ID Address Detection Flag */ + uint32_t : 8; + __IOM uint32_t HOAF : 1; /*!< [15..15] Host Address Detection Flag */ + __IOM uint32_t SVAFn : 1; /*!< [16..16] Slave Address Detection Flag n (n = 0) */ + uint32_t : 15; + } SVST_b; + }; + + union + { + __IOM uint32_t WUST; /*!< (@ 0x00000218) Wake Up Unit Control Register */ + + struct + { + __IOM uint32_t WUASYNF : 1; /*!< [0..0] Wake-up function asynchronous operation status flag. */ + uint32_t : 31; + } WUST_b; + }; + __IM uint32_t RESERVED18[2]; + + union + { + __IOM uint32_t DATBAS0; /*!< (@ 0x00000224) Device Address Table Basic Register 0 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS0_b; + }; + __IM uint32_t RESERVED19; + + union + { + __IOM uint32_t DATBAS1; /*!< (@ 0x0000022C) Device Address Table Basic Register 1 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS1_b; + }; + __IM uint32_t RESERVED20; + + union + { + __IOM uint32_t DATBAS2; /*!< (@ 0x00000234) Device Address Table Basic Register 2 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS2_b; + }; + __IM uint32_t RESERVED21; + + union + { + __IOM uint32_t DATBAS3; /*!< (@ 0x0000023C) Device Address Table Basic Register 3 */ + + struct + { + __IOM uint32_t DVSTAD : 7; /*!< [6..0] Device Static Address */ + uint32_t : 5; + __IOM uint32_t DVIBIPL : 1; /*!< [12..12] Device IBI Payload */ + __IOM uint32_t DVSIRRJ : 1; /*!< [13..13] Device In-Band Slave Interrupt Request Reject */ + __IOM uint32_t DVMRRJ : 1; /*!< [14..14] Device In-Band Master Request Reject */ + __IOM uint32_t DVIBITS : 1; /*!< [15..15] Device IBI Time-stamp */ + __IOM uint32_t DVDYAD : 8; /*!< [23..16] Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t DVNACK : 2; /*!< [30..29] Device NACK Retry Count */ + __IOM uint32_t DVTYP : 1; /*!< [31..31] Device Type */ + } DATBAS3_b; + }; + __IM uint32_t RESERVED22[24]; + + union + { + __IOM uint32_t EXDATBAS; /*!< (@ 0x000002A0) Extended Device Address Table Basic Register */ + + struct + { + __IOM uint32_t EDSTAD : 7; /*!< [6..0] Extended Device Static Address */ + uint32_t : 9; + __IOM uint32_t EDDYAD : 8; /*!< [23..16] Extended Device I3C Dynamic Address */ + uint32_t : 5; + __IOM uint32_t EDNACK : 2; /*!< [30..29] Extended Device NACK Retry Count */ + __IOM uint32_t EDTYP : 1; /*!< [31..31] Extended Device Type */ + } EXDATBAS_b; + }; + __IM uint32_t RESERVED23[3]; + + union + { + __IOM uint32_t SDATBAS0; /*!< (@ 0x000002B0) Slave Device Address Table Basic Register 0 */ + + struct + { + __IOM uint32_t SDSTAD : 10; /*!< [9..0] Slave Device Static Address */ + __IOM uint32_t SDADLS : 1; /*!< [10..10] Slave Device Address Length Selection */ + uint32_t : 1; + __IOM uint32_t SDIBIPL : 1; /*!< [12..12] Slave Device IBI Payload */ + uint32_t : 3; + __IOM uint32_t SDDYAD : 7; /*!< [22..16] Slave Device I3C Dynamic Address */ + uint32_t : 9; + } SDATBAS0_b; + }; + + union + { + __IOM uint32_t SDATBAS1; /*!< (@ 0x000002B4) Slave Device Address Table Basic Register 1 */ + + struct + { + __IOM uint32_t SDSTAD : 10; /*!< [9..0] Slave Device Static Address */ + __IOM uint32_t SDADLS : 1; /*!< [10..10] Slave Device Address Length Selection */ + uint32_t : 1; + __IOM uint32_t SDIBIPL : 1; /*!< [12..12] Slave Device IBI Payload */ + uint32_t : 3; + __IOM uint32_t SDDYAD : 7; /*!< [22..16] Slave Device I3C Dynamic Address */ + uint32_t : 9; + } SDATBAS1_b; + }; + + union + { + __IOM uint32_t SDATBAS2; /*!< (@ 0x000002B8) Slave Device Address Table Basic Register 2 */ + + struct + { + __IOM uint32_t SDSTAD : 10; /*!< [9..0] Slave Device Static Address */ + __IOM uint32_t SDADLS : 1; /*!< [10..10] Slave Device Address Length Selection */ + uint32_t : 1; + __IOM uint32_t SDIBIPL : 1; /*!< [12..12] Slave Device IBI Payload */ + uint32_t : 3; + __IOM uint32_t SDDYAD : 7; /*!< [22..16] Slave Device I3C Dynamic Address */ + uint32_t : 9; + } SDATBAS2_b; + }; + __IM uint32_t RESERVED24[5]; + + union + { + __IOM uint32_t MSDCT0; /*!< (@ 0x000002D0) Master Device Characteristic Table Register 0 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT0_b; + }; + + union + { + __IOM uint32_t MSDCT1; /*!< (@ 0x000002D4) Master Device Characteristic Table Register 1 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT1_b; + }; + + union + { + __IOM uint32_t MSDCT2; /*!< (@ 0x000002D8) Master Device Characteristic Table Register 2 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT2_b; + }; + + union + { + __IOM uint32_t MSDCT3; /*!< (@ 0x000002DC) Master Device Characteristic Table Register 3 */ + + struct + { + uint32_t : 8; + __IOM uint32_t RBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t RBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t RBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t RBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t RBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } MSDCT3_b; + }; + __IM uint32_t RESERVED25[16]; + + union + { + __IOM uint32_t SVDCT; /*!< (@ 0x00000320) Slave Device Characteristic Table Register */ + + struct + { + __IOM uint32_t TDCR : 8; /*!< [7..0] Transfar Device Characteristic Register */ + __IOM uint32_t TBCR0 : 1; /*!< [8..8] Max Data Speed Limitation */ + __IOM uint32_t TBCR1 : 1; /*!< [9..9] IBI Request Capable */ + __IOM uint32_t TBCR2 : 1; /*!< [10..10] IBI Payload */ + __IOM uint32_t TBCR3 : 1; /*!< [11..11] Offline Capable */ + uint32_t : 2; + __IOM uint32_t TBCR76 : 2; /*!< [15..14] Device Role */ + uint32_t : 16; + } SVDCT_b; + }; + __IOM uint32_t SDCTPIDL; /*!< (@ 0x00000324) Slave Device Characteristic Table Provisional + * ID Low Register */ + __IOM uint32_t SDCTPIDH; /*!< (@ 0x00000328) Slave Device Characteristic Table Provisional + * ID High Register */ + __IM uint32_t RESERVED26; + + union + { + __IM uint32_t SVDVAD0; /*!< (@ 0x00000330) Slave Device Address Register 0 */ + + struct + { + uint32_t : 16; + __IM uint32_t SVAD : 10; /*!< [25..16] Slave Address */ + uint32_t : 1; + __IM uint32_t SADLG : 1; /*!< [27..27] Slave Address Length */ + uint32_t : 2; + __IM uint32_t SSTADV : 1; /*!< [30..30] Slave Static Address Valid */ + __IM uint32_t SDYADV : 1; /*!< [31..31] Slave Dynamic Address Valid */ + } SVDVAD0_b; + }; + __IM uint32_t RESERVED27[7]; + + union + { + __IOM uint32_t CSECMD; /*!< (@ 0x00000350) CCC Slave Events Command Register */ + + struct + { + __IOM uint32_t SVIRQE : 1; /*!< [0..0] Slave Interrupt Requests Enable */ + __IOM uint32_t MSRQE : 1; /*!< [1..1] Mastership Requests Enable */ + uint32_t : 1; + __IOM uint32_t HJEVE : 1; /*!< [3..3] Hot-Join Event Enable */ + uint32_t : 28; + } CSECMD_b; + }; + + union + { + __IOM uint32_t CEACTST; /*!< (@ 0x00000354) CCC Enter Activity State Register */ + + struct + { + __IOM uint32_t ACTST : 4; /*!< [3..0] Activity State */ + uint32_t : 28; + } CEACTST_b; + }; + + union + { + __IOM uint32_t CMWLG; /*!< (@ 0x00000358) CCC Max Write Length Register */ + + struct + { + __IOM uint32_t MWLG : 16; /*!< [15..0] Max Write Length */ + uint32_t : 16; + } CMWLG_b; + }; + + union + { + __IOM uint32_t CMRLG; /*!< (@ 0x0000035C) CCC Max Read Length Register */ + + struct + { + __IOM uint32_t MRLG : 16; /*!< [15..0] Max Read Length */ + __IOM uint32_t IBIPSZ : 8; /*!< [23..16] IBI Payload Size */ + uint32_t : 8; + } CMRLG_b; + }; + + union + { + __IM uint32_t CETSTMD; /*!< (@ 0x00000360) CCC Enter Test Mode Register */ + + struct + { + __IM uint32_t TSTMD : 8; /*!< [7..0] Test Mode */ + uint32_t : 24; + } CETSTMD_b; + }; + + union + { + __IOM uint32_t CGDVST; /*!< (@ 0x00000364) CCC Get Device Status Register */ + + struct + { + __IOM uint32_t PNDINT : 4; /*!< [3..0] Pending Interrupt */ + uint32_t : 1; + __IOM uint32_t PRTE : 1; /*!< [5..5] Protocol Error */ + __IOM uint32_t ACTMD : 2; /*!< [7..6] Slave Device's current Activity Mode */ + __IOM uint32_t VDRSV : 8; /*!< [15..8] Vendor Reserved */ + uint32_t : 16; + } CGDVST_b; + }; + + union + { + __IOM uint32_t CMDSPW; /*!< (@ 0x00000368) CCC Max Data Speed W (Write) Register */ + + struct + { + __IOM uint32_t MSWDR : 3; /*!< [2..0] Maximum Sustained Write Data Rate */ + uint32_t : 29; + } CMDSPW_b; + }; + + union + { + __IOM uint32_t CMDSPR; /*!< (@ 0x0000036C) CCC Max Data Speed R (Read) Register */ + + struct + { + __IOM uint32_t MSRDR : 3; /*!< [2..0] Maximum Sustained Read Data Rate */ + __IOM uint32_t CDTTIM : 3; /*!< [5..3] Clock to Data Turnaround Time (TSCO) */ + uint32_t : 26; + } CMDSPR_b; + }; + + union + { + __IOM uint32_t CMDSPT; /*!< (@ 0x00000370) CCC Max Data Speed T (Turnaround) Register */ + + struct + { + __IOM uint32_t MRTTIM : 24; /*!< [23..0] Maximum Read Turnaround Time */ + uint32_t : 7; + __IOM uint32_t MRTE : 1; /*!< [31..31] Maximum Read Turnaround Time Enable */ + } CMDSPT_b; + }; + + union + { + __IOM uint32_t CETSM; /*!< (@ 0x00000374) CCC Exchange Timing Support Information M (Mode) + * Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t FREQ : 8; /*!< [15..8] Frequency Byte */ + __IOM uint32_t INAC : 8; /*!< [23..16] Inaccuracy Byte */ + uint32_t : 8; + } CETSM_b; + }; + __IM uint32_t RESERVED28[2]; + + union + { + __IOM uint32_t BITCNT; /*!< (@ 0x00000380) Bit Count Register */ + + struct + { + __IOM uint32_t BCNT : 5; /*!< [4..0] Bit Counter */ + uint32_t : 2; + __OM uint32_t BCNTWP : 1; /*!< [7..7] BCNT Write Protect */ + uint32_t : 24; + } BITCNT_b; + }; + __IM uint32_t RESERVED29[4]; + + union + { + __IM uint32_t NQSTLV; /*!< (@ 0x00000394) Normal Queue Status Level Register */ + + struct + { + __IM uint32_t CMDQFLV : 8; /*!< [7..0] Normal Command Queue Free Level */ + __IM uint32_t RSPQLV : 8; /*!< [15..8] Normal Response Queue Level */ + __IM uint32_t IBIQLV : 8; /*!< [23..16] Normal IBI Queue Level */ + __IM uint32_t IBISCNT : 5; /*!< [28..24] Normal IBI Status Count */ + uint32_t : 3; + } NQSTLV_b; + }; + + union + { + __IM uint32_t NDBSTLV0; /*!< (@ 0x00000398) Normal Data Buffer Status Level Register */ + + struct + { + __IM uint32_t TDBFLV : 8; /*!< [7..0] Normal Transmit Data Buffer Free Level */ + __IM uint32_t RDBLV : 8; /*!< [15..8] Normal Receive Data Buffer Level */ + uint32_t : 16; + } NDBSTLV0_b; + }; + __IM uint32_t RESERVED30[9]; + + union + { + __IM uint32_t NRSQSTLV; /*!< (@ 0x000003C0) Normal Receive Status Queue Status Level Register */ + + struct + { + __IM uint32_t RSQLV : 8; /*!< [7..0] Normal Receive Status Queue Level */ + uint32_t : 24; + } NRSQSTLV_b; + }; + __IM uint32_t RESERVED31[2]; + + union + { + __IM uint32_t PRSTDBG; /*!< (@ 0x000003CC) Present State Debug Register */ + + struct + { + __IM uint32_t SCILV : 1; /*!< [0..0] SCL Line Signal Level */ + __IM uint32_t SDILV : 1; /*!< [1..1] SDA Line Signal Level */ + __IM uint32_t SCOLV : 1; /*!< [2..2] SCL Output Level */ + __IM uint32_t SDOLV : 1; /*!< [3..3] SDA Output Level */ + uint32_t : 28; + } PRSTDBG_b; + }; + + union + { + __IM uint32_t MSERRCNT; /*!< (@ 0x000003D0) Master Error Counters Register */ + + struct + { + __IM uint32_t M2ECNT : 8; /*!< [7..0] M2 Error Counter */ + uint32_t : 24; + } MSERRCNT_b; + }; +} R_I3C0_Type; /*!< Size = 980 (0x3d4) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_MMPU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus Master MPU (R_MPU_MMPU) + */ + +typedef struct /*!< (@ 0x40000000) R_MPU_MMPU Structure */ +{ + union + { + __IOM uint16_t OAD; /*!< (@ 0x00000000) MMPU Operation After Detection Register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Operation after detection */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } OAD_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t OADPT; /*!< (@ 0x00000004) MMPU Operation After Detection Protect Register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Write Keyword The data written to these bits are not + * stored. */ + } OADPT_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[62]; + __IOM R_MPU_MMPU_GROUP_Type DMAC0; /*!< (@ 0x00000100) DMAC0 MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type DMAC1; /*!< (@ 0x00000300) DMAC1 MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type EDMAC; /*!< (@ 0x00000500) EDMAC MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type GLCDC; /*!< (@ 0x00000700) GLCDC MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type DRW; /*!< (@ 0x00000900) DRW MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type MIPI_DSI; /*!< (@ 0x00000B00) MIPI_DSI MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type CEU; /*!< (@ 0x00000D00) CEU MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type MIPI_CSI; /*!< (@ 0x00000F00) MIPI_CSI MMPU Registers */ + __IOM R_MPU_MMPU_GROUP_Type NPU; /*!< (@ 0x00001100) NPU MMPU Registers */ +} R_MPU_MMPU_Type; /*!< Size = 4864 (0x1300) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SPMON ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CPU Stack Pointer Monitor (R_MPU_SPMON) + */ + +typedef struct /*!< (@ 0x40000D00) R_MPU_SPMON Structure */ +{ + __IOM R_MPU_SPMON_SP_Type SP[2]; /*!< (@ 0x00000000) Stack Pointer Monitor */ +} R_MPU_SPMON_Type; /*!< Size = 32 (0x20) */ + +/* =========================================================================================================================== */ +/* ================ R_MSTP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System-Module Stop (R_MSTP) + */ + +typedef struct /*!< (@ 0x40203000) R_MSTP Structure */ +{ + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x00000000) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPA0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPA1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPA2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPA3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPA4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPA5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPA6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPA7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPA8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPA9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPA10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t MSTPCRB; /*!< (@ 0x00000004) Module Stop Control Register B */ + + struct + { + __IOM uint32_t MSTPB0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPB1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPB2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPB3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPB4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPB5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPB6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPB7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPB8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPB9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPB10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPB31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRB_b; + }; + + union + { + __IOM uint32_t MSTPCRC; /*!< (@ 0x00000008) Module Stop Control Register C */ + + struct + { + __IOM uint32_t MSTPC0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPC1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPC2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPC3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPC4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPC5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPC6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPC7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPC8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPC9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPC10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPC31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRC_b; + }; + + union + { + __IOM uint32_t MSTPCRD; /*!< (@ 0x0000000C) Module Stop Control Register D */ + + struct + { + __IOM uint32_t MSTPD0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPD1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPD2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPD3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPD4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPD5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPD6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPD7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPD8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPD9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPD10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPD31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRD_b; + }; + + union + { + union + { + __IOM uint32_t MSTPCRE; /*!< (@ 0x00000010) Module Stop Control Register E */ + + struct + { + __IOM uint32_t MSTPE0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPE1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPE2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPE3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPE4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPE5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPE6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPE7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPE8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPE9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPE10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPE31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRE_b; + }; + + union + { + __IOM uint16_t LSMRWDIS; /*!< (@ 0x00000010) Low Speed Module R/W Disable Control Register */ + + struct + { + __IOM uint16_t RTCRWDIS : 1; /*!< [0..0] RTC Register R/W Enable Control */ + __IOM uint16_t WDTDIS : 1; /*!< [1..1] WDT Operate Clock Control */ + __IOM uint16_t IWDTIDS : 1; /*!< [2..2] IWDT Register Clock Control */ + uint16_t : 4; + __IOM uint16_t WREN : 1; /*!< [7..7] Write Enable for bits [2:0] */ + __OM uint16_t PRKEY : 8; /*!< [15..8] LSMRWDIS Key Code */ + } LSMRWDIS_b; + }; + }; +} R_MSTP_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports (R_PORT0) + */ + +typedef struct /*!< (@ 0x40400000) R_PORT0 Structure */ +{ + union + { + union + { + __IOM uint32_t PCNTR1; /*!< (@ 0x00000000) Port Control Register 1 */ + + struct + { + __IOM uint32_t PDR : 16; /*!< [15..0] Pmn Direction */ + __IOM uint32_t PODR : 16; /*!< [31..16] Pmn Output Data */ + } PCNTR1_b; + }; + + struct + { + union + { + __IOM uint16_t PDR; /*!< (@ 0x00000000) Data direction register */ + + struct + { + __IOM uint16_t PDR0 : 1; /*!< [0..0] Pmn Direction */ + __IOM uint16_t PDR1 : 1; /*!< [1..1] Pmn Direction */ + __IOM uint16_t PDR2 : 1; /*!< [2..2] Pmn Direction */ + __IOM uint16_t PDR3 : 1; /*!< [3..3] Pmn Direction */ + __IOM uint16_t PDR4 : 1; /*!< [4..4] Pmn Direction */ + __IOM uint16_t PDR5 : 1; /*!< [5..5] Pmn Direction */ + __IOM uint16_t PDR6 : 1; /*!< [6..6] Pmn Direction */ + __IOM uint16_t PDR7 : 1; /*!< [7..7] Pmn Direction */ + __IOM uint16_t PDR8 : 1; /*!< [8..8] Pmn Direction */ + __IOM uint16_t PDR9 : 1; /*!< [9..9] Pmn Direction */ + __IOM uint16_t PDR10 : 1; /*!< [10..10] Pmn Direction */ + __IOM uint16_t PDR11 : 1; /*!< [11..11] Pmn Direction */ + __IOM uint16_t PDR12 : 1; /*!< [12..12] Pmn Direction */ + __IOM uint16_t PDR13 : 1; /*!< [13..13] Pmn Direction */ + __IOM uint16_t PDR14 : 1; /*!< [14..14] Pmn Direction */ + __IOM uint16_t PDR15 : 1; /*!< [15..15] Pmn Direction */ + } PDR_b; + }; + + union + { + __IOM uint16_t PODR; /*!< (@ 0x00000002) Output data register */ + + struct + { + __IOM uint16_t PODR0 : 1; /*!< [0..0] Pmn Output Data */ + __IOM uint16_t PODR1 : 1; /*!< [1..1] Pmn Output Data */ + __IOM uint16_t PODR2 : 1; /*!< [2..2] Pmn Output Data */ + __IOM uint16_t PODR3 : 1; /*!< [3..3] Pmn Output Data */ + __IOM uint16_t PODR4 : 1; /*!< [4..4] Pmn Output Data */ + __IOM uint16_t PODR5 : 1; /*!< [5..5] Pmn Output Data */ + __IOM uint16_t PODR6 : 1; /*!< [6..6] Pmn Output Data */ + __IOM uint16_t PODR7 : 1; /*!< [7..7] Pmn Output Data */ + __IOM uint16_t PODR8 : 1; /*!< [8..8] Pmn Output Data */ + __IOM uint16_t PODR9 : 1; /*!< [9..9] Pmn Output Data */ + __IOM uint16_t PODR10 : 1; /*!< [10..10] Pmn Output Data */ + __IOM uint16_t PODR11 : 1; /*!< [11..11] Pmn Output Data */ + __IOM uint16_t PODR12 : 1; /*!< [12..12] Pmn Output Data */ + __IOM uint16_t PODR13 : 1; /*!< [13..13] Pmn Output Data */ + __IOM uint16_t PODR14 : 1; /*!< [14..14] Pmn Output Data */ + __IOM uint16_t PODR15 : 1; /*!< [15..15] Pmn Output Data */ + } PODR_b; + }; + }; + }; + + union + { + union + { + __IM uint32_t PCNTR2; /*!< (@ 0x00000004) Port Control Register 2 */ + + struct + { + __IM uint32_t PIDR : 16; /*!< [15..0] Pmn Input Data */ + __IM uint32_t EIDR : 16; /*!< [31..16] Pmn Event Input Data */ + } PCNTR2_b; + }; + + struct + { + union + { + __IM uint16_t PIDR; /*!< (@ 0x00000004) Input data register */ + + struct + { + __IM uint16_t PIDR0 : 1; /*!< [0..0] Pmn Input Data */ + __IM uint16_t PIDR1 : 1; /*!< [1..1] Pmn Input Data */ + __IM uint16_t PIDR2 : 1; /*!< [2..2] Pmn Input Data */ + __IM uint16_t PIDR3 : 1; /*!< [3..3] Pmn Input Data */ + __IM uint16_t PIDR4 : 1; /*!< [4..4] Pmn Input Data */ + __IM uint16_t PIDR5 : 1; /*!< [5..5] Pmn Input Data */ + __IM uint16_t PIDR6 : 1; /*!< [6..6] Pmn Input Data */ + __IM uint16_t PIDR7 : 1; /*!< [7..7] Pmn Input Data */ + __IM uint16_t PIDR8 : 1; /*!< [8..8] Pmn Input Data */ + __IM uint16_t PIDR9 : 1; /*!< [9..9] Pmn Input Data */ + __IM uint16_t PIDR10 : 1; /*!< [10..10] Pmn Input Data */ + __IM uint16_t PIDR11 : 1; /*!< [11..11] Pmn Input Data */ + __IM uint16_t PIDR12 : 1; /*!< [12..12] Pmn Input Data */ + __IM uint16_t PIDR13 : 1; /*!< [13..13] Pmn Input Data */ + __IM uint16_t PIDR14 : 1; /*!< [14..14] Pmn Input Data */ + __IM uint16_t PIDR15 : 1; /*!< [15..15] Pmn Input Data */ + } PIDR_b; + }; + + union + { + __IM uint16_t EIDR; /*!< (@ 0x00000006) Event input data register */ + + struct + { + __IM uint16_t EIDR0 : 1; /*!< [0..0] Pmn Event Input Data */ + __IM uint16_t EIDR1 : 1; /*!< [1..1] Pmn Event Input Data */ + __IM uint16_t EIDR2 : 1; /*!< [2..2] Pmn Event Input Data */ + __IM uint16_t EIDR3 : 1; /*!< [3..3] Pmn Event Input Data */ + __IM uint16_t EIDR4 : 1; /*!< [4..4] Pmn Event Input Data */ + __IM uint16_t EIDR5 : 1; /*!< [5..5] Pmn Event Input Data */ + __IM uint16_t EIDR6 : 1; /*!< [6..6] Pmn Event Input Data */ + __IM uint16_t EIDR7 : 1; /*!< [7..7] Pmn Event Input Data */ + __IM uint16_t EIDR8 : 1; /*!< [8..8] Pmn Event Input Data */ + __IM uint16_t EIDR9 : 1; /*!< [9..9] Pmn Event Input Data */ + __IM uint16_t EIDR10 : 1; /*!< [10..10] Pmn Event Input Data */ + __IM uint16_t EIDR11 : 1; /*!< [11..11] Pmn Event Input Data */ + __IM uint16_t EIDR12 : 1; /*!< [12..12] Pmn Event Input Data */ + __IM uint16_t EIDR13 : 1; /*!< [13..13] Pmn Event Input Data */ + __IM uint16_t EIDR14 : 1; /*!< [14..14] Pmn Event Input Data */ + __IM uint16_t EIDR15 : 1; /*!< [15..15] Pmn Event Input Data */ + } EIDR_b; + }; + }; + }; + + union + { + union + { + __OM uint32_t PCNTR3; /*!< (@ 0x00000008) Port Control Register 3 */ + + struct + { + __OM uint32_t POSR : 16; /*!< [15..0] Pmn Output Set */ + __OM uint32_t PORR : 16; /*!< [31..16] Pmn Output Reset */ + } PCNTR3_b; + }; + + struct + { + union + { + __OM uint16_t POSR; /*!< (@ 0x00000008) Output reset register */ + + struct + { + __OM uint16_t POSR0 : 1; /*!< [0..0] Pmn Output Set */ + __OM uint16_t POSR1 : 1; /*!< [1..1] Pmn Output Set */ + __OM uint16_t POSR2 : 1; /*!< [2..2] Pmn Output Set */ + __OM uint16_t POSR3 : 1; /*!< [3..3] Pmn Output Set */ + __OM uint16_t POSR4 : 1; /*!< [4..4] Pmn Output Set */ + __OM uint16_t POSR5 : 1; /*!< [5..5] Pmn Output Set */ + __OM uint16_t POSR6 : 1; /*!< [6..6] Pmn Output Set */ + __OM uint16_t POSR7 : 1; /*!< [7..7] Pmn Output Set */ + __OM uint16_t POSR8 : 1; /*!< [8..8] Pmn Output Set */ + __OM uint16_t POSR9 : 1; /*!< [9..9] Pmn Output Set */ + __OM uint16_t POSR10 : 1; /*!< [10..10] Pmn Output Set */ + __OM uint16_t POSR11 : 1; /*!< [11..11] Pmn Output Set */ + __OM uint16_t POSR12 : 1; /*!< [12..12] Pmn Output Set */ + __OM uint16_t POSR13 : 1; /*!< [13..13] Pmn Output Set */ + __OM uint16_t POSR14 : 1; /*!< [14..14] Pmn Output Set */ + __OM uint16_t POSR15 : 1; /*!< [15..15] Pmn Output Set */ + } POSR_b; + }; + + union + { + __OM uint16_t PORR; /*!< (@ 0x0000000A) Output set register */ + + struct + { + __OM uint16_t PORR0 : 1; /*!< [0..0] Pmn Output Reset */ + __OM uint16_t PORR1 : 1; /*!< [1..1] Pmn Output Reset */ + __OM uint16_t PORR2 : 1; /*!< [2..2] Pmn Output Reset */ + __OM uint16_t PORR3 : 1; /*!< [3..3] Pmn Output Reset */ + __OM uint16_t PORR4 : 1; /*!< [4..4] Pmn Output Reset */ + __OM uint16_t PORR5 : 1; /*!< [5..5] Pmn Output Reset */ + __OM uint16_t PORR6 : 1; /*!< [6..6] Pmn Output Reset */ + __OM uint16_t PORR7 : 1; /*!< [7..7] Pmn Output Reset */ + __OM uint16_t PORR8 : 1; /*!< [8..8] Pmn Output Reset */ + __OM uint16_t PORR9 : 1; /*!< [9..9] Pmn Output Reset */ + __OM uint16_t PORR10 : 1; /*!< [10..10] Pmn Output Reset */ + __OM uint16_t PORR11 : 1; /*!< [11..11] Pmn Output Reset */ + __OM uint16_t PORR12 : 1; /*!< [12..12] Pmn Output Reset */ + __OM uint16_t PORR13 : 1; /*!< [13..13] Pmn Output Reset */ + __OM uint16_t PORR14 : 1; /*!< [14..14] Pmn Output Reset */ + __OM uint16_t PORR15 : 1; /*!< [15..15] Pmn Output Reset */ + } PORR_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t PCNTR4; /*!< (@ 0x0000000C) Port Control Register 4 */ + + struct + { + __IOM uint32_t EOSR : 16; /*!< [15..0] Pmn Event Output Set */ + __IOM uint32_t EORR : 16; /*!< [31..16] Pmn Event Output Reset */ + } PCNTR4_b; + }; + + struct + { + union + { + __IOM uint16_t EOSR; /*!< (@ 0x0000000C) Event output reset register */ + + struct + { + __IOM uint16_t EOSR0 : 1; /*!< [0..0] Pmn Event Output Set */ + __IOM uint16_t EOSR1 : 1; /*!< [1..1] Pmn Event Output Set */ + __IOM uint16_t EOSR2 : 1; /*!< [2..2] Pmn Event Output Set */ + __IOM uint16_t EOSR3 : 1; /*!< [3..3] Pmn Event Output Set */ + __IOM uint16_t EOSR4 : 1; /*!< [4..4] Pmn Event Output Set */ + __IOM uint16_t EOSR5 : 1; /*!< [5..5] Pmn Event Output Set */ + __IOM uint16_t EOSR6 : 1; /*!< [6..6] Pmn Event Output Set */ + __IOM uint16_t EOSR7 : 1; /*!< [7..7] Pmn Event Output Set */ + __IOM uint16_t EOSR8 : 1; /*!< [8..8] Pmn Event Output Set */ + __IOM uint16_t EOSR9 : 1; /*!< [9..9] Pmn Event Output Set */ + __IOM uint16_t EOSR10 : 1; /*!< [10..10] Pmn Event Output Set */ + __IOM uint16_t EOSR11 : 1; /*!< [11..11] Pmn Event Output Set */ + __IOM uint16_t EOSR12 : 1; /*!< [12..12] Pmn Event Output Set */ + __IOM uint16_t EOSR13 : 1; /*!< [13..13] Pmn Event Output Set */ + __IOM uint16_t EOSR14 : 1; /*!< [14..14] Pmn Event Output Set */ + __IOM uint16_t EOSR15 : 1; /*!< [15..15] Pmn Event Output Set */ + } EOSR_b; + }; + + union + { + __IOM uint16_t EORR; /*!< (@ 0x0000000E) Event output set register */ + + struct + { + __IOM uint16_t EORR0 : 1; /*!< [0..0] Pmn Event Output Reset */ + __IOM uint16_t EORR1 : 1; /*!< [1..1] Pmn Event Output Reset */ + __IOM uint16_t EORR2 : 1; /*!< [2..2] Pmn Event Output Reset */ + __IOM uint16_t EORR3 : 1; /*!< [3..3] Pmn Event Output Reset */ + __IOM uint16_t EORR4 : 1; /*!< [4..4] Pmn Event Output Reset */ + __IOM uint16_t EORR5 : 1; /*!< [5..5] Pmn Event Output Reset */ + __IOM uint16_t EORR6 : 1; /*!< [6..6] Pmn Event Output Reset */ + __IOM uint16_t EORR7 : 1; /*!< [7..7] Pmn Event Output Reset */ + __IOM uint16_t EORR8 : 1; /*!< [8..8] Pmn Event Output Reset */ + __IOM uint16_t EORR9 : 1; /*!< [9..9] Pmn Event Output Reset */ + __IOM uint16_t EORR10 : 1; /*!< [10..10] Pmn Event Output Reset */ + __IOM uint16_t EORR11 : 1; /*!< [11..11] Pmn Event Output Reset */ + __IOM uint16_t EORR12 : 1; /*!< [12..12] Pmn Event Output Reset */ + __IOM uint16_t EORR13 : 1; /*!< [13..13] Pmn Event Output Reset */ + __IOM uint16_t EORR14 : 1; /*!< [14..14] Pmn Event Output Reset */ + __IOM uint16_t EORR15 : 1; /*!< [15..15] Pmn Event Output Reset */ + } EORR_b; + }; + }; + }; +} R_PORT0_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_PFS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports-PFS (R_PFS) + */ + +typedef struct /*!< (@ 0x40400800) R_PFS Structure */ +{ + __IOM R_PFS_PORT_Type PORT[15]; /*!< (@ 0x00000000) Port [0..14] */ +} R_PFS_Type; /*!< Size = 960 (0x3c0) */ + +/* =========================================================================================================================== */ +/* ================ R_PMISC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports-MISC (R_PMISC) + */ + +typedef struct /*!< (@ 0x40400D00) R_PMISC Structure */ +{ + union + { + __IOM uint8_t PFENET; /*!< (@ 0x00000000) Ethernet Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t PHYMODE0 : 1; /*!< [4..4] Ethernet Mode Setting ch0 */ + uint8_t : 3; + } PFENET_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1[5]; + + union + { + __IOM uint8_t PWPR; /*!< (@ 0x0000000C) Write-Protect Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t PFSWE : 1; /*!< [6..6] PmnPFS Register Write */ + __IOM uint8_t B0WI : 1; /*!< [7..7] PFSWE Bit Write Disable */ + } PWPR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3[3]; + + union + { + __IOM uint8_t PWPRS; /*!< (@ 0x00000014) Write-Protect Register for Secure */ + + struct + { + uint8_t : 6; + __IOM uint8_t PFSWE : 1; /*!< [6..6] PmnPFS Register Write */ + __IOM uint8_t B0WI : 1; /*!< [7..7] PFSWE Bit Write Disable */ + } PWPRS_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5[13]; + __IOM R_PMISC_PMSAR_Type PMSAR[15]; /*!< (@ 0x00000030) Port Security Attribution Register */ +} R_PMISC_Type; /*!< Size = 108 (0x6c) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Realtime Clock (R_RTC) + */ + +typedef struct /*!< (@ 0x40202000) R_RTC Structure */ +{ + union + { + __IM uint8_t R64CNT; /*!< (@ 0x00000000) 64-Hz Counter */ + + struct + { + __IM uint8_t F64HZ : 1; /*!< [0..0] 64Hz */ + __IM uint8_t F32HZ : 1; /*!< [1..1] 32Hz */ + __IM uint8_t F16HZ : 1; /*!< [2..2] 16Hz */ + __IM uint8_t F8HZ : 1; /*!< [3..3] 8Hz */ + __IM uint8_t F4HZ : 1; /*!< [4..4] 4Hz */ + __IM uint8_t F2HZ : 1; /*!< [5..5] 2Hz */ + __IM uint8_t F1HZ : 1; /*!< [6..6] 1Hz */ + uint8_t : 1; + } R64CNT_b; + }; + __IM uint8_t RESERVED; + + union + { + union + { + __IOM uint8_t BCNT0; /*!< (@ 0x00000002) Binary Counter 0 */ + + struct + { + __IOM uint8_t BCNT0 : 8; /*!< [7..0] The BCNT0 counter is a readable/writable 32-bit binary + * counter b7 to b0. */ + } BCNT0_b; + }; + + union + { + __IOM uint8_t RSECCNT; /*!< (@ 0x00000002) Second Counter */ + + struct + { + __IOM uint8_t SEC1 : 4; /*!< [3..0] 1-Second Count Counts from 0 to 9 every second. When + * a carry is generated, 1 is added to the tens place. */ + __IOM uint8_t SEC10 : 3; /*!< [6..4] 10-Second Count Counts from 0 to 5 for 60-second counting. */ + uint8_t : 1; + } RSECCNT_b; + }; + }; + __IM uint8_t RESERVED1; + + union + { + union + { + __IOM uint8_t BCNT1; /*!< (@ 0x00000004) Binary Counter 1 */ + + struct + { + __IOM uint8_t BCNT1 : 8; /*!< [7..0] The BCNT1 counter is a readable/writable 32-bit binary + * counter b15 to b8. */ + } BCNT1_b; + }; + + union + { + __IOM uint8_t RMINCNT; /*!< (@ 0x00000004) Minute Counter */ + + struct + { + __IOM uint8_t MIN1 : 4; /*!< [3..0] 1-Minute Count Counts from 0 to 9 every minute. When + * a carry is generated, 1 is added to the tens place. */ + __IOM uint8_t MIN10 : 3; /*!< [6..4] 10-Minute Count Counts from 0 to 5 for 60-minute counting. */ + uint8_t : 1; + } RMINCNT_b; + }; + }; + __IM uint8_t RESERVED2; + + union + { + union + { + __IOM uint8_t BCNT2; /*!< (@ 0x00000006) Binary Counter 2 */ + + struct + { + __IOM uint8_t BCNT2 : 8; /*!< [7..0] The BCNT2 counter is a readable/writable 32-bit binary + * counter b23 to b16. */ + } BCNT2_b; + }; + + union + { + __IOM uint8_t RHRCNT; /*!< (@ 0x00000006) Hour Counter */ + + struct + { + __IOM uint8_t HR1 : 4; /*!< [3..0] 1-Hour Count Counts from 0 to 9 once per hour. When a + * carry is generated, 1 is added to the tens place. */ + __IOM uint8_t HR10 : 2; /*!< [5..4] 10-Hour Count Counts from 0 to 2 once per carry from + * the ones place. */ + __IOM uint8_t PM : 1; /*!< [6..6] Time Counter Setting for a.m./p.m. */ + uint8_t : 1; + } RHRCNT_b; + }; + }; + __IM uint8_t RESERVED3; + + union + { + union + { + __IOM uint8_t BCNT3; /*!< (@ 0x00000008) Binary Counter 3 */ + + struct + { + __IOM uint8_t BCNT3 : 8; /*!< [7..0] The BCNT3 counter is a readable/writable 32-bit binary + * counter b31 to b24. */ + } BCNT3_b; + }; + + union + { + __IOM uint8_t RWKCNT; /*!< (@ 0x00000008) Day-of-Week Counter */ + + struct + { + __IOM uint8_t DAYW : 3; /*!< [2..0] Day-of-Week Counting */ + uint8_t : 5; + } RWKCNT_b; + }; + }; + __IM uint8_t RESERVED4; + + union + { + __IOM uint8_t RDAYCNT; /*!< (@ 0x0000000A) Day Counter */ + + struct + { + __IOM uint8_t DATE1 : 4; /*!< [3..0] 1-Day Count Counts from 0 to 9 once per day. When a carry + * is generated, 1 is added to the tens place. */ + __IOM uint8_t DATE10 : 2; /*!< [5..4] 10-Day Count Counts from 0 to 3 once per carry from the + * ones place. */ + uint8_t : 2; + } RDAYCNT_b; + }; + __IM uint8_t RESERVED5; + + union + { + __IOM uint8_t RMONCNT; /*!< (@ 0x0000000C) Month Counter */ + + struct + { + __IOM uint8_t MON1 : 4; /*!< [3..0] 1-Month Count Counts from 0 to 9 once per month. When + * a carry is generated, 1 is added to the tens place. */ + __IOM uint8_t MON10 : 1; /*!< [4..4] 10-Month Count Counts from 0 to 1 once per carry from + * the ones place. */ + uint8_t : 3; + } RMONCNT_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint16_t RYRCNT; /*!< (@ 0x0000000E) Year Counter */ + + struct + { + __IOM uint16_t YR1 : 4; /*!< [3..0] 1-Year Count Counts from 0 to 9 once per year. When a + * carry is generated, 1 is added to the tens place. */ + __IOM uint16_t YR10 : 4; /*!< [7..4] 10-Year Count Counts from 0 to 9 once per carry from + * ones place. When a carry is generated in the tens place, + * 1 is added to the hundreds place. */ + uint16_t : 8; + } RYRCNT_b; + }; + + union + { + union + { + __IOM uint8_t BCNT0AR; /*!< (@ 0x00000010) Binary Counter 0 Alarm Register */ + + struct + { + __IOM uint8_t BCNT0AR : 8; /*!< [7..0] he BCNT0AR counter is a readable/writable alarm register + * corresponding to 32-bit binary counter b7 to b0. */ + } BCNT0AR_b; + }; + + union + { + __IOM uint8_t RSECAR; /*!< (@ 0x00000010) Second Alarm Register */ + + struct + { + __OM uint8_t SEC1 : 4; /*!< [3..0] 1-Second Value for the ones place of seconds */ + __IOM uint8_t SEC10 : 3; /*!< [6..4] 10-Seconds Value for the tens place of seconds */ + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RSECAR_b; + }; + }; + __IM uint8_t RESERVED7; + + union + { + union + { + __IOM uint8_t BCNT1AR; /*!< (@ 0x00000012) Binary Counter 1 Alarm Register */ + + struct + { + __IOM uint8_t BCNT1AR : 8; /*!< [7..0] he BCNT1AR counter is a readable/writable alarm register + * corresponding to 32-bit binary counter b15 to b8. */ + } BCNT1AR_b; + }; + + union + { + __IOM uint8_t RMINAR; /*!< (@ 0x00000012) Minute Alarm Register */ + + struct + { + __IOM uint8_t MIN1 : 4; /*!< [3..0] 1-Minute Count Value for the ones place of minutes */ + __IOM uint8_t MIN10 : 3; /*!< [6..4] 10-Minute Count Value for the tens place of minutes */ + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RMINAR_b; + }; + }; + __IM uint8_t RESERVED8; + + union + { + union + { + __IOM uint8_t BCNT2AR; /*!< (@ 0x00000014) Binary Counter 2 Alarm Register */ + + struct + { + __IOM uint8_t BCNT2AR : 8; /*!< [7..0] The BCNT2AR counter is a readable/writable 32-bit binary + * counter b23 to b16. */ + } BCNT2AR_b; + }; + + union + { + __IOM uint8_t RHRAR; /*!< (@ 0x00000014) Hour Alarm Register */ + + struct + { + __IOM uint8_t HR1 : 4; /*!< [3..0] 1-Hour Count Value for the ones place of hours */ + __IOM uint8_t HR10 : 2; /*!< [5..4] 10-Hour Count Value for the tens place of hours */ + __IOM uint8_t PM : 1; /*!< [6..6] Time Counter Setting for a.m./p.m. */ + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RHRAR_b; + }; + }; + __IM uint8_t RESERVED9; + + union + { + union + { + __IOM uint8_t BCNT3AR; /*!< (@ 0x00000016) Binary Counter 3 Alarm Register */ + + struct + { + __IOM uint8_t BCNT3AR : 8; /*!< [7..0] The BCNT3AR counter is a readable/writable 32-bit binary + * counter b31 to b24. */ + } BCNT3AR_b; + }; + + union + { + __IOM uint8_t RWKAR; /*!< (@ 0x00000016) Day-of-Week Alarm Register */ + + struct + { + __IOM uint8_t DAYW : 3; /*!< [2..0] Day-of-Week Counting */ + uint8_t : 4; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RWKAR_b; + }; + }; + __IM uint8_t RESERVED10; + + union + { + union + { + __IOM uint8_t BCNT0AER; /*!< (@ 0x00000018) Binary Counter 0 Alarm Enable Register */ + + struct + { + __IOM uint8_t ENB : 8; /*!< [7..0] The BCNT0AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b7 to b0. */ + } BCNT0AER_b; + }; + + union + { + __IOM uint8_t RDAYAR; /*!< (@ 0x00000018) Date Alarm Register */ + + struct + { + __IOM uint8_t DATE1 : 4; /*!< [3..0] 1 Day Value for the ones place of days */ + __IOM uint8_t DATE10 : 2; /*!< [5..4] 10 Days Value for the tens place of days */ + uint8_t : 1; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RDAYAR_b; + }; + }; + __IM uint8_t RESERVED11; + + union + { + union + { + __IOM uint8_t BCNT1AER; /*!< (@ 0x0000001A) Binary Counter 1 Alarm Enable Register */ + + struct + { + __IOM uint8_t ENB : 8; /*!< [7..0] The BCNT1AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b15 to b8. */ + } BCNT1AER_b; + }; + + union + { + __IOM uint8_t RMONAR; /*!< (@ 0x0000001A) Month Alarm Register */ + + struct + { + __IOM uint8_t MON1 : 4; /*!< [3..0] 1 Month Value for the ones place of months */ + __IOM uint8_t MON10 : 1; /*!< [4..4] 10 Months Value for the tens place of months */ + uint8_t : 2; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RMONAR_b; + }; + }; + __IM uint8_t RESERVED12; + + union + { + union + { + __IOM uint16_t BCNT2AER; /*!< (@ 0x0000001C) Binary Counter 2 Alarm Enable Register */ + + struct + { + __IOM uint16_t ENB : 8; /*!< [7..0] The BCNT2AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b23 to b16. */ + uint16_t : 8; + } BCNT2AER_b; + }; + + union + { + __IOM uint16_t RYRAR; /*!< (@ 0x0000001C) Year Alarm Register */ + + struct + { + __IOM uint16_t YR1 : 4; /*!< [3..0] 1 Year Value for the ones place of years */ + __IOM uint16_t YR10 : 4; /*!< [7..4] 10 Years Value for the tens place of years */ + uint16_t : 8; + } RYRAR_b; + }; + }; + + union + { + union + { + __IOM uint8_t BCNT3AER; /*!< (@ 0x0000001E) Binary Counter 3 Alarm Enable Register */ + + struct + { + __IOM uint8_t ENB : 8; /*!< [7..0] The BCNT3AER register is a readable/writable register + * for setting the alarm enable corresponding to 32-bit binary + * counter b31 to b24. */ + } BCNT3AER_b; + }; + + union + { + __IOM uint8_t RYRAREN; /*!< (@ 0x0000001E) Year Alarm Enable Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t ENB : 1; /*!< [7..7] Compare enable */ + } RYRAREN_b; + }; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14; + + union + { + __IOM uint8_t RCR1; /*!< (@ 0x00000022) RTC Control Register 1 */ + + struct + { + __IOM uint8_t AIE : 1; /*!< [0..0] Alarm Interrupt Enable */ + __IOM uint8_t CIE : 1; /*!< [1..1] Carry Interrupt Enable */ + __IOM uint8_t PIE : 1; /*!< [2..2] Periodic Interrupt Enable */ + __IOM uint8_t RTCOS : 1; /*!< [3..3] RTCOUT Output Select */ + __IOM uint8_t PES : 4; /*!< [7..4] Periodic Interrupt Select */ + } RCR1_b; + }; + __IM uint8_t RESERVED15; + + union + { + __IOM uint8_t RCR2; /*!< (@ 0x00000024) RTC Control Register 2 */ + + struct + { + __IOM uint8_t START : 1; /*!< [0..0] Start */ + __IOM uint8_t RESET : 1; /*!< [1..1] RTC Software Reset */ + __IOM uint8_t ADJ30 : 1; /*!< [2..2] 30-Second Adjustment */ + __IOM uint8_t RTCOE : 1; /*!< [3..3] RTCOUT Output Enable */ + __IOM uint8_t AADJE : 1; /*!< [4..4] Automatic Adjustment Enable (When the LOCO clock is selected, + * the setting of this bit is disabled.) */ + __IOM uint8_t AADJP : 1; /*!< [5..5] Automatic Adjustment Period Select (When the LOCO clock + * is selected, the setting of this bit is disabled.) */ + __IOM uint8_t HR24 : 1; /*!< [6..6] Hours Mode */ + __IOM uint8_t CNTMD : 1; /*!< [7..7] Count Mode Select */ + } RCR2_b; + }; + __IM uint8_t RESERVED16; + __IM uint16_t RESERVED17; + + union + { + __IOM uint8_t RCR4; /*!< (@ 0x00000028) RTC Control Register 4 */ + + struct + { + __IOM uint8_t RCKSEL : 1; /*!< [0..0] Count Source Select */ + uint8_t : 6; + __IOM uint8_t ROPSEL : 1; /*!< [7..7] RTC Operation Mode Select */ + } RCR4_b; + }; + __IM uint8_t RESERVED18; + + union + { + __IOM uint16_t RFRH; /*!< (@ 0x0000002A) Frequency Register H */ + + struct + { + __IOM uint16_t RFC16 : 1; /*!< [0..0] Frequency Comparison Value (b16) To generate the operating + * clock from the LOCOclock, this bit sets the comparison + * value of the 128-Hz clock cycle. */ + uint16_t : 15; + } RFRH_b; + }; + + union + { + __IOM uint16_t RFRL; /*!< (@ 0x0000002C) Frequency Register L */ + + struct + { + __IOM uint16_t RFC : 16; /*!< [15..0] Frequency Comparison Value(b15-b0) To generate the operating + * clock from the main clock, this bit sets the comparison + * value of the 128-Hz clock cycle. */ + } RFRL_b; + }; + + union + { + __IOM uint8_t RADJ; /*!< (@ 0x0000002E) Time Error Adjustment Register */ + + struct + { + __IOM uint8_t ADJ : 6; /*!< [5..0] Adjustment Value These bits specify the adjustment value + * from the prescaler. */ + __IOM uint8_t PMADJ : 2; /*!< [7..6] Plus-Minus */ + } RADJ_b; + }; + __IM uint8_t RESERVED19; + __IM uint16_t RESERVED20[8]; + __IOM R_RTC_RTCCR_Type RTCCR[3]; /*!< (@ 0x00000040) Time Capture Control Register */ + __IM uint16_t RESERVED21[5]; + __IOM R_RTC_CP_Type CP[3]; /*!< (@ 0x00000050) Capture registers */ +} R_RTC_Type; /*!< Size = 128 (0x80) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Communications Interface (R_SCI0) + */ + +typedef struct /*!< (@ 0x40358000) R_SCI0 Structure */ +{ + union + { + union + { + __IOM uint8_t SMR; /*!< (@ 0x00000000) Serial Mode Register (SCMR.SMIF = 0) */ + + struct + { + __IOM uint8_t CKS : 2; /*!< [1..0] Clock Select */ + __IOM uint8_t MP : 1; /*!< [2..2] Multi-Processor Mode(Valid only in asynchronous mode) */ + __IOM uint8_t STOP : 1; /*!< [3..3] Stop Bit Length(Valid only in asynchronous mode) */ + __IOM uint8_t PM : 1; /*!< [4..4] Parity Mode (Valid only when the PE bit is 1) */ + __IOM uint8_t PE : 1; /*!< [5..5] Parity Enable(Valid only in asynchronous mode) */ + __IOM uint8_t CHR : 1; /*!< [6..6] Character Length(Valid only in asynchronous mode) */ + __IOM uint8_t CM : 1; /*!< [7..7] Communication Mode */ + } SMR_b; + }; + + union + { + __IOM uint8_t SMR_SMCI; /*!< (@ 0x00000000) Serial mode register (SCMR.SMIF = 1) */ + + struct + { + __IOM uint8_t CKS : 2; /*!< [1..0] Clock Select */ + __IOM uint8_t BCP : 2; /*!< [3..2] Base Clock Pulse(Valid only in asynchronous mode) */ + __IOM uint8_t PM : 1; /*!< [4..4] Parity Mode (Valid only when the PE bit is 1) */ + __IOM uint8_t PE : 1; /*!< [5..5] Parity Enable(Valid only in asynchronous mode) */ + __IOM uint8_t BLK : 1; /*!< [6..6] Block Transfer Mode */ + __IOM uint8_t GM : 1; /*!< [7..7] GSM Mode */ + } SMR_SMCI_b; + }; + }; + + union + { + __IOM uint8_t BRR; /*!< (@ 0x00000001) Bit Rate Register */ + + struct + { + __IOM uint8_t BRR : 8; /*!< [7..0] BRR is an 8-bit register that adjusts the bit rate. */ + } BRR_b; + }; + + union + { + union + { + __IOM uint8_t SCR; /*!< (@ 0x00000002) Serial Control Register (SCMR.SMIF = 0) */ + + struct + { + __IOM uint8_t CKE : 2; /*!< [1..0] Clock Enable */ + __IOM uint8_t TEIE : 1; /*!< [2..2] Transmit End Interrupt Enable */ + __IOM uint8_t MPIE : 1; /*!< [3..3] Multi-Processor Interrupt Enable(Valid in asynchronous + * mode when SMR.MP = 1) */ + __IOM uint8_t RE : 1; /*!< [4..4] Receive Enable */ + __IOM uint8_t TE : 1; /*!< [5..5] Transmit Enable */ + __IOM uint8_t RIE : 1; /*!< [6..6] Receive Interrupt Enable */ + __IOM uint8_t TIE : 1; /*!< [7..7] Transmit Interrupt Enable */ + } SCR_b; + }; + + union + { + __IOM uint8_t SCR_SMCI; /*!< (@ 0x00000002) Serial Control Register (SCMR.SMIF =1) */ + + struct + { + __IOM uint8_t CKE : 2; /*!< [1..0] Clock Enable */ + __IOM uint8_t TEIE : 1; /*!< [2..2] Transmit End Interrupt Enable */ + __IOM uint8_t MPIE : 1; /*!< [3..3] Multi-Processor Interrupt Enable */ + __IOM uint8_t RE : 1; /*!< [4..4] Receive Enable */ + __IOM uint8_t TE : 1; /*!< [5..5] Transmit Enable */ + __IOM uint8_t RIE : 1; /*!< [6..6] Receive Interrupt Enable */ + __IOM uint8_t TIE : 1; /*!< [7..7] Transmit Interrupt Enable */ + } SCR_SMCI_b; + }; + }; + + union + { + __IOM uint8_t TDR; /*!< (@ 0x00000003) Transmit Data Register */ + + struct + { + __IOM uint8_t TDR : 8; /*!< [7..0] TDR is an 8-bit register that stores transmit data. */ + } TDR_b; + }; + + union + { + union + { + __IOM uint8_t SSR; /*!< (@ 0x00000004) Serial Status Register(SCMR.SMIF = 0 and FCR.FM=0) */ + + struct + { + __IOM uint8_t MPBT : 1; /*!< [0..0] Multi-Processor Bit Transfer */ + __IM uint8_t MPB : 1; /*!< [1..1] Multi-Processor */ + __IM uint8_t TEND : 1; /*!< [2..2] Transmit End Flag */ + __IOM uint8_t PER : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t FER : 1; /*!< [4..4] Framing Error Flag */ + __IOM uint8_t ORER : 1; /*!< [5..5] Overrun Error Flag */ + __IOM uint8_t RDRF : 1; /*!< [6..6] Receive Data Full Flag */ + __IOM uint8_t TDRE : 1; /*!< [7..7] Transmit Data Empty Flag */ + } SSR_b; + }; + + union + { + __IOM uint8_t SSR_FIFO; /*!< (@ 0x00000004) Serial Status Register(SCMR.SMIF = 0 and FCR.FM=1) */ + + struct + { + __IOM uint8_t DR : 1; /*!< [0..0] Receive Data Ready flag(Valid only in asynchronous mode(including + * multi-processor) and FIFO selected) */ + uint8_t : 1; + __IOM uint8_t TEND : 1; /*!< [2..2] Transmit End Flag */ + __IOM uint8_t PER : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t FER : 1; /*!< [4..4] Framing Error Flag */ + __IOM uint8_t ORER : 1; /*!< [5..5] Overrun Error Flag */ + __IOM uint8_t RDF : 1; /*!< [6..6] Receive FIFO data full flag */ + __IOM uint8_t TDFE : 1; /*!< [7..7] Transmit FIFO data empty flag */ + } SSR_FIFO_b; + }; + + union + { + __IOM uint8_t SSR_SMCI; /*!< (@ 0x00000004) Serial Status Register(SCMR.SMIF = 1) */ + + struct + { + __IOM uint8_t MPBT : 1; /*!< [0..0] Multi-Processor Bit TransferThis bit should be 0 in smart + * card interface mode. */ + __IM uint8_t MPB : 1; /*!< [1..1] Multi-ProcessorThis bit should be 0 in smart card interface + * mode. */ + __IM uint8_t TEND : 1; /*!< [2..2] Transmit End Flag */ + __IOM uint8_t PER : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t ERS : 1; /*!< [4..4] Error Signal Status Flag */ + __IOM uint8_t ORER : 1; /*!< [5..5] Overrun Error Flag */ + __IOM uint8_t RDRF : 1; /*!< [6..6] Receive Data Full Flag */ + __IOM uint8_t TDRE : 1; /*!< [7..7] Transmit Data Empty Flag */ + } SSR_SMCI_b; + }; + }; + + union + { + __IM uint8_t RDR; /*!< (@ 0x00000005) Receive Data Register */ + + struct + { + __IM uint8_t RDR : 8; /*!< [7..0] RDR is an 8-bit register that stores receive data. */ + } RDR_b; + }; + + union + { + __IOM uint8_t SCMR; /*!< (@ 0x00000006) Smart Card Mode Register */ + + struct + { + __IOM uint8_t SMIF : 1; /*!< [0..0] Smart Card Interface Mode Select */ + uint8_t : 1; + __IOM uint8_t SINV : 1; /*!< [2..2] Transmitted/Received Data InvertSet this bit to 0 if + * operation is to be in simple I2C mode. */ + __IOM uint8_t SDIR : 1; /*!< [3..3] Transmitted/Received Data Transfer DirectionNOTE: The + * setting is invalid and a fixed data length of 8 bits is + * used in modes other than asynchronous mode.Set this bit + * to 1 if operation is to be in simple I2C mode. */ + __IOM uint8_t CHR1 : 1; /*!< [4..4] Character Length 1(Only valid in asynchronous mode) */ + uint8_t : 2; + __IOM uint8_t BCP2 : 1; /*!< [7..7] Base Clock Pulse 2Selects the number of base clock cycles + * in combination with the SMR.BCP[1:0] bits */ + } SCMR_b; + }; + + union + { + __IOM uint8_t SEMR; /*!< (@ 0x00000007) Serial Extended Mode Register */ + + struct + { + __IOM uint8_t ACS0 : 1; /*!< [0..0] Asynchronous Mode Clock Source Select (Valid only in + * asynchronous mode). */ + __IOM uint8_t PADIS : 1; /*!< [1..1] Preamble function Disable (Valid only in asynchronous + * mode). */ + __IOM uint8_t BRME : 1; /*!< [2..2] Bit Rate Modulation Enable */ + __IOM uint8_t ABCSE : 1; /*!< [3..3] Asynchronous Mode Extended Base Clock Select 1(Valid + * only in asynchronous mode and SCR.CKE[1]=0) */ + __IOM uint8_t ABCS : 1; /*!< [4..4] Asynchronous Mode Base Clock Select(Valid only in asynchronous + * mode) */ + __IOM uint8_t NFEN : 1; /*!< [5..5] Digital Noise Filter Function Enable(The NFEN bit should + * be 0 without simple I2C mode and asynchronous mode.)In + * asynchronous mode, for RXDn input only. In simple I2C mode, + * for RXDn/TxDn input. */ + __IOM uint8_t BGDM : 1; /*!< [6..6] Baud Rate Generator Double-Speed Mode Select(Only valid + * the CKE[1] bit in SCR is 0 in asynchronous mode). */ + __IOM uint8_t RXDESEL : 1; /*!< [7..7] Asynchronous Start Bit Edge Detection Select(Valid only + * in asynchronous mode) */ + } SEMR_b; + }; + + union + { + __IOM uint8_t SNFR; /*!< (@ 0x00000008) Noise Filter Setting Register */ + + struct + { + __IOM uint8_t NFCS : 3; /*!< [2..0] Noise Filter Clock Select */ + uint8_t : 5; + } SNFR_b; + }; + + union + { + __IOM uint8_t SIMR1; /*!< (@ 0x00000009) I2C Mode Register 1 */ + + struct + { + __IOM uint8_t IICM : 1; /*!< [0..0] Simple I2C Mode Select */ + uint8_t : 2; + __IOM uint8_t IICDL : 5; /*!< [7..3] SDA Delay Output SelectCycles below are of the clock + * signal from the on-chip baud rate generator. */ + } SIMR1_b; + }; + + union + { + __IOM uint8_t SIMR2; /*!< (@ 0x0000000A) I2C Mode Register 2 */ + + struct + { + __IOM uint8_t IICINTM : 1; /*!< [0..0] I2C Interrupt Mode Select */ + __IOM uint8_t IICCSC : 1; /*!< [1..1] Clock Synchronization */ + uint8_t : 3; + __IOM uint8_t IICACKT : 1; /*!< [5..5] ACK Transmission Data */ + uint8_t : 2; + } SIMR2_b; + }; + + union + { + __IOM uint8_t SIMR3; /*!< (@ 0x0000000B) I2C Mode Register 3 */ + + struct + { + __IOM uint8_t IICSTAREQ : 1; /*!< [0..0] Start Condition Generation */ + __IOM uint8_t IICRSTAREQ : 1; /*!< [1..1] Restart Condition Generation */ + __IOM uint8_t IICSTPREQ : 1; /*!< [2..2] Stop Condition Generation */ + __IOM uint8_t IICSTIF : 1; /*!< [3..3] Issuing of Start, Restart, or Stop Condition Completed + * Flag(When 0 is written to IICSTIF, it is cleared to 0.) */ + __IOM uint8_t IICSDAS : 2; /*!< [5..4] SDA Output Select */ + __IOM uint8_t IICSCLS : 2; /*!< [7..6] SCL Output Select */ + } SIMR3_b; + }; + + union + { + __IM uint8_t SISR; /*!< (@ 0x0000000C) I2C Status Register */ + + struct + { + __IM uint8_t IICACKR : 1; /*!< [0..0] ACK Reception Data Flag */ + uint8_t : 7; + } SISR_b; + }; + + union + { + __IOM uint8_t SPMR; /*!< (@ 0x0000000D) SPI Mode Register */ + + struct + { + __IOM uint8_t SSE : 1; /*!< [0..0] SSn Pin Function Enable */ + __IOM uint8_t CTSE : 1; /*!< [1..1] CTS Enable */ + __IOM uint8_t MSS : 1; /*!< [2..2] Master Slave Select */ + __IOM uint8_t CSTPEN : 1; /*!< [3..3] CTS external pin Enable */ + __IOM uint8_t MFF : 1; /*!< [4..4] Mode Fault Flag */ + uint8_t : 1; + __IOM uint8_t CKPOL : 1; /*!< [6..6] Clock Polarity Select */ + __IOM uint8_t CKPH : 1; /*!< [7..7] Clock Phase Select */ + } SPMR_b; + }; + + union + { + union + { + __IOM uint16_t TDRHL; /*!< (@ 0x0000000E) Transmit 9-bit Data Register */ + + struct + { + __OM uint16_t TDRHL : 16; /*!< [15..0] TDRHL is a 16-bit register that stores transmit data. */ + } TDRHL_b; + }; + + union + { + __OM uint16_t FTDRHL; /*!< (@ 0x0000000E) Transmit FIFO Data Register HL */ + + struct + { + __OM uint16_t TDAT : 9; /*!< [8..0] Serial transmit data (Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + __OM uint16_t MPBT : 1; /*!< [9..9] Multi-processor transfer bit flag(Valid only in asynchronous + * mode and SMR.MP=1 and FIFO selected) */ + uint16_t : 6; + } FTDRHL_b; + }; + + struct + { + union + { + __OM uint8_t FTDRH; /*!< (@ 0x0000000E) Transmit FIFO Data Register H */ + + struct + { + __OM uint8_t TDATH : 1; /*!< [0..0] Serial transmit data (b8) (Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * and FIFO selected) */ + __OM uint8_t MPBT : 1; /*!< [1..1] Multi-processor transfer bit flag(Valid only in asynchronous + * mode and SMR.MP=1 and FIFO selected) */ + uint8_t : 6; + } FTDRH_b; + }; + + union + { + __OM uint8_t FTDRL; /*!< (@ 0x0000000F) Transmit FIFO Data Register L */ + + struct + { + __OM uint8_t TDATL : 8; /*!< [7..0] Serial transmit data(b7-b0) (Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * and FIFO selected) */ + } FTDRL_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RDRHL; /*!< (@ 0x00000010) Receive 9-bit Data Register */ + + struct + { + __IM uint16_t RDRHL : 16; /*!< [15..0] RDRHL is an 16-bit register that stores receive data. */ + } RDRHL_b; + }; + + union + { + __IM uint16_t FRDRHL; /*!< (@ 0x00000010) Receive FIFO Data Register HL */ + + struct + { + __IM uint16_t RDAT : 9; /*!< [8..0] Serial receive data(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + __IM uint16_t MPB : 1; /*!< [9..9] Multi-processor bit flag(Valid only in asynchronous mode + * with SMR.MP=1 and FIFO selected) It can read multi-processor + * bit corresponded to serial receive data(RDATA[8:0]) */ + __IM uint16_t DR : 1; /*!< [10..10] Receive data ready flag(It is same as SSR.DR) */ + __IM uint16_t PER : 1; /*!< [11..11] Parity error flag */ + __IM uint16_t FER : 1; /*!< [12..12] Framing error flag */ + __IM uint16_t ORER : 1; /*!< [13..13] Overrun error flag(It is same as SSR.ORER) */ + __IM uint16_t RDF : 1; /*!< [14..14] Receive FIFO data full flag(It is same as SSR.RDF) */ + uint16_t : 1; + } FRDRHL_b; + }; + + struct + { + union + { + __IM uint8_t FRDRH; /*!< (@ 0x00000010) Receive FIFO Data Register H */ + + struct + { + __IM uint8_t RDATH : 1; /*!< [0..0] Serial receive data(b8)(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + __IM uint8_t MPB : 1; /*!< [1..1] Multi-processor bit flag(Valid only in asynchronous mode + * with SMR.MP=1 and FIFO selected) It can read multi-processor + * bit corresponded to serial receive data(RDATA[8:0]) */ + __IM uint8_t DR : 1; /*!< [2..2] Receive data ready flag(It is same as SSR.DR) */ + __IM uint8_t PER : 1; /*!< [3..3] Parity error flag */ + __IM uint8_t FER : 1; /*!< [4..4] Framing error flag */ + __IM uint8_t ORER : 1; /*!< [5..5] Overrun error flag(It is same as SSR.ORER) */ + __IM uint8_t RDF : 1; /*!< [6..6] Receive FIFO data full flag(It is same as SSR.RDF) */ + uint8_t : 1; + } FRDRH_b; + }; + + union + { + __IM uint8_t FRDRL; /*!< (@ 0x00000011) Receive FIFO Data Register L */ + + struct + { + __IM uint8_t RDATL : 8; /*!< [7..0] Serial receive data(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected)NOTE: + * When reading both of FRDRH register and FRDRL register, + * please read by an order of the FRDRH register and the FRDRL + * register. */ + } FRDRL_b; + }; + }; + }; + + union + { + __IOM uint8_t MDDR; /*!< (@ 0x00000012) Modulation Duty Register */ + + struct + { + __IOM uint8_t MDDR : 8; /*!< [7..0] MDDR corrects the bit rate adjusted by the BRR register. */ + } MDDR_b; + }; + + union + { + __IOM uint8_t DCCR; /*!< (@ 0x00000013) Data Compare Match Control Register */ + + struct + { + __IOM uint8_t DCMF : 1; /*!< [0..0] Data Compare Match Flag */ + uint8_t : 2; + __IOM uint8_t DPER : 1; /*!< [3..3] Data Compare Match Parity Error Flag */ + __IOM uint8_t DFER : 1; /*!< [4..4] Data Compare Match Framing Error Flag */ + uint8_t : 1; + __IOM uint8_t IDSEL : 1; /*!< [6..6] ID frame select(Valid only in asynchronous mode(including + * multi-processor) */ + __IOM uint8_t DCME : 1; /*!< [7..7] Data Compare Match Enable(Valid only in asynchronous + * mode(including multi-processor) */ + } DCCR_b; + }; + + union + { + __IOM uint16_t FCR; /*!< (@ 0x00000014) FIFO Control Register */ + + struct + { + __IOM uint16_t FM : 1; /*!< [0..0] FIFO Mode Select(Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode) */ + __IOM uint16_t RFRST : 1; /*!< [1..1] Receive FIFO Data Register Reset(Valid only in FCR.FM=1) */ + __IOM uint16_t TFRST : 1; /*!< [2..2] Transmit FIFO Data Register Reset(Valid only in FCR.FM=1) */ + __IOM uint16_t DRES : 1; /*!< [3..3] Receive data ready error select bit(When detecting a + * reception data ready, the interrupt request is selected.) */ + __IOM uint16_t TTRG : 4; /*!< [7..4] Transmit FIFO data trigger number(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode) */ + __IOM uint16_t RTRG : 4; /*!< [11..8] Receive FIFO data trigger number(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode) */ + __IOM uint16_t RSTRG : 4; /*!< [15..12] RTS Output Active Trigger Number Select(Valid only + * in asynchronous mode(including multi-processor) or clock + * synchronous mode) */ + } FCR_b; + }; + + union + { + __IM uint16_t FDR; /*!< (@ 0x00000016) FIFO Data Count Register */ + + struct + { + __IM uint16_t R : 5; /*!< [4..0] Receive FIFO Data CountIndicate the quantity of receive + * data stored in FRDRH and FRDRL(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * while FCR.FM=1) */ + uint16_t : 3; + __IM uint16_t T : 5; /*!< [12..8] Transmit FIFO Data CountIndicate the quantity of non-transmit + * data stored in FTDRH and FTDRL(Valid only in asynchronous + * mode(including multi-processor) or clock synchronous mode, + * while FCR.FM=1) */ + uint16_t : 3; + } FDR_b; + }; + + union + { + __IM uint16_t LSR; /*!< (@ 0x00000018) Line Status Register */ + + struct + { + __IM uint16_t ORER : 1; /*!< [0..0] Overrun Error Flag (Valid only in asynchronous mode(including + * multi-processor) or clock synchronous mode, and FIFO selected) */ + uint16_t : 1; + __IM uint16_t FNUM : 5; /*!< [6..2] Framing Error CountIndicates the quantity of data with + * a framing error among the receive data stored in the receive + * FIFO data register (FRDRH and FRDRL). */ + uint16_t : 1; + __IM uint16_t PNUM : 5; /*!< [12..8] Parity Error CountIndicates the quantity of data with + * a parity error among the receive data stored in the receive + * FIFO data register (FRDRH and FRDRL). */ + uint16_t : 3; + } LSR_b; + }; + + union + { + __IOM uint16_t CDR; /*!< (@ 0x0000001A) Compare Match Data Register */ + + struct + { + __IOM uint16_t CMPD : 9; /*!< [8..0] Compare Match DataCompare data pattern for address match + * wake-up function */ + uint16_t : 7; + } CDR_b; + }; + + union + { + __IOM uint8_t SPTR; /*!< (@ 0x0000001C) Serial Port Register */ + + struct + { + __IM uint8_t RXDMON : 1; /*!< [0..0] Serial input data monitor bit(The state of the RXD terminal + * is shown.) */ + __IOM uint8_t SPB2DT : 1; /*!< [1..1] Serial port break data select bit(The output level of + * TxD terminal is selected when SCR.TE = 0.) */ + __IOM uint8_t SPB2IO : 1; /*!< [2..2] Serial port break I/O bit(It's selected whether the value + * of SPB2DT is output to TxD terminal.) */ + uint8_t : 1; + __IOM uint8_t RINV : 1; /*!< [4..4] RXD invert bit */ + __IOM uint8_t TINV : 1; /*!< [5..5] TXD invert bit */ + __IOM uint8_t ASEN : 1; /*!< [6..6] Adjust receive sampling timing enable */ + __IOM uint8_t ATEN : 1; /*!< [7..7] Adjust transmit timing enable */ + } SPTR_b; + }; + + union + { + __IOM uint8_t ACTR; /*!< (@ 0x0000001D) Adjustment Communication Timing Register */ + + struct + { + __IOM uint8_t AST : 3; /*!< [2..0] Adjustment value for receive Sampling Timing */ + __IOM uint8_t AJD : 1; /*!< [3..3] Adjustment Direction for receive sampling timing */ + __IOM uint8_t ATT : 3; /*!< [6..4] Adjustment value for Transmit timing */ + __IOM uint8_t AET : 1; /*!< [7..7] Adjustment edge for transmit timing */ + } ACTR_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint8_t ESMER; /*!< (@ 0x00000020) Extended Serial Module Enable Register */ + + struct + { + __IOM uint8_t ESME : 1; /*!< [0..0] Extended Serial Mode Enable */ + uint8_t : 7; + } ESMER_b; + }; + + union + { + __IOM uint8_t CR0; /*!< (@ 0x00000021) Control Register 0 */ + + struct + { + uint8_t : 1; + __IM uint8_t SFSF : 1; /*!< [1..1] Start Frame Status Flag */ + __IM uint8_t RXDSF : 1; /*!< [2..2] RXDXn Input Status Flag */ + __IOM uint8_t BRME : 1; /*!< [3..3] Bit Rate Measurement Enable */ + uint8_t : 4; + } CR0_b; + }; + + union + { + __IOM uint8_t CR1; /*!< (@ 0x00000022) Control Register 1 */ + + struct + { + __IOM uint8_t BFE : 1; /*!< [0..0] Break Field Enable */ + __IOM uint8_t CF0RE : 1; /*!< [1..1] Control Field 0 Reception Enable */ + __IOM uint8_t CF1DS : 2; /*!< [3..2] Control Field 1 Data Register Select */ + __IOM uint8_t PIBE : 1; /*!< [4..4] Priority Interrupt Bit Enable */ + __IOM uint8_t PIBS : 3; /*!< [7..5] Priority Interrupt Bit Select */ + } CR1_b; + }; + + union + { + __IOM uint8_t CR2; /*!< (@ 0x00000023) Control Register 2 */ + + struct + { + __IOM uint8_t DFCS : 3; /*!< [2..0] RXDXn Signal Digital Filter Clock Select */ + uint8_t : 1; + __IOM uint8_t BCCS : 2; /*!< [5..4] Bus Collision Detection Clock Select */ + __IOM uint8_t RTS : 2; /*!< [7..6] RXDXn Reception Sampling Timing Select */ + } CR2_b; + }; + + union + { + __IOM uint8_t CR3; /*!< (@ 0x00000024) Control Register 3 */ + + struct + { + __IOM uint8_t SDST : 1; /*!< [0..0] Start Frame Detection Start */ + uint8_t : 7; + } CR3_b; + }; + + union + { + __IOM uint8_t PCR; /*!< (@ 0x00000025) Port Control Register */ + + struct + { + __IOM uint8_t TXDXPS : 1; /*!< [0..0] TXDXn Signal Polarity Select */ + __IOM uint8_t RXDXPS : 1; /*!< [1..1] RXDXn Signal Polarity Select */ + uint8_t : 2; + __IOM uint8_t SHARPS : 1; /*!< [4..4] TXDXn/RXDXn Pin Multiplexing Select */ + uint8_t : 3; + } PCR_b; + }; + + union + { + __IOM uint8_t ICR; /*!< (@ 0x00000026) Interrupt Control Register */ + + struct + { + __IOM uint8_t BFDIE : 1; /*!< [0..0] Break Field Low Width Detected Interrupt Enable */ + __IOM uint8_t CF0MIE : 1; /*!< [1..1] Control Field 0 Match Detected Interrupt Enable */ + __IOM uint8_t CF1MIE : 1; /*!< [2..2] Control Field 1 Match Detected Interrupt Enable */ + __IOM uint8_t PIBDIE : 1; /*!< [3..3] Priority Interrupt Bit Detected Interrupt Enable */ + __IOM uint8_t BCDIE : 1; /*!< [4..4] Bus Collision Detected Interrupt Enable */ + __IOM uint8_t AEDIE : 1; /*!< [5..5] Valid Edge Detected Interrupt Enable */ + uint8_t : 2; + } ICR_b; + }; + + union + { + __IM uint8_t STR; /*!< (@ 0x00000027) Status Register */ + + struct + { + __IM uint8_t BFDF : 1; /*!< [0..0] Break Field Low Width Detection Flag */ + __IM uint8_t CF0MF : 1; /*!< [1..1] Control Field 0 Match Flag */ + __IM uint8_t CF1MF : 1; /*!< [2..2] Control Field 1 Match Flag */ + __IM uint8_t PIBDF : 1; /*!< [3..3] Priority Interrupt Bit Detection Flag */ + __IM uint8_t BCDF : 1; /*!< [4..4] Bus Collision Detected Flag */ + __IM uint8_t AEDF : 1; /*!< [5..5] Valid Edge Detection Flag */ + uint8_t : 2; + } STR_b; + }; + + union + { + __IOM uint8_t STCR; /*!< (@ 0x00000028) Status Clear Register */ + + struct + { + __IOM uint8_t BFDCL : 1; /*!< [0..0] BFDF Clear */ + __IOM uint8_t CF0MCL : 1; /*!< [1..1] CF0MF Clear */ + __IOM uint8_t CF1MCL : 1; /*!< [2..2] CF1MF Clear */ + __IOM uint8_t PIBDCL : 1; /*!< [3..3] PIBDF Clear */ + __IOM uint8_t BCDCL : 1; /*!< [4..4] BCDF Clear */ + __IOM uint8_t AEDCL : 1; /*!< [5..5] AEDF Clear */ + uint8_t : 2; + } STCR_b; + }; + __IOM uint8_t CF0DR; /*!< (@ 0x00000029) Control Field 0 Data Register */ + + union + { + __IOM uint8_t CF0CR; /*!< (@ 0x0000002A) Control Field 0 Compare Enable Register */ + + struct + { + __IOM uint8_t CF0CE0 : 1; /*!< [0..0] Control Field 0 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE1 : 1; /*!< [1..1] Control Field 1 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE2 : 1; /*!< [2..2] Control Field 2 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE3 : 1; /*!< [3..3] Control Field 3 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE4 : 1; /*!< [4..4] Control Field 4 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE5 : 1; /*!< [5..5] Control Field 5 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE6 : 1; /*!< [6..6] Control Field 6 Bit 0 Compare Enable */ + __IOM uint8_t CF0CE7 : 1; /*!< [7..7] Control Field 7 Bit 0 Compare Enable */ + } CF0CR_b; + }; + __IOM uint8_t CF0RR; /*!< (@ 0x0000002B) Control Field 0 Receive Data Register */ + __IOM uint8_t PCF1DR; /*!< (@ 0x0000002C) Primary Control Field 1 Data Register */ + __IOM uint8_t SCF1DR; /*!< (@ 0x0000002D) Secondary Control Field 1 Data Register */ + + union + { + __IOM uint8_t CF1CR; /*!< (@ 0x0000002E) Control Field 1 Compare Enable Register */ + + struct + { + __IOM uint8_t CF1CE0 : 1; /*!< [0..0] Control Field 1 Bit 0 Compare Enable */ + __IOM uint8_t CF1CE1 : 1; /*!< [1..1] Control Field 1 Bit 1 Compare Enable */ + __IOM uint8_t CF1CE2 : 1; /*!< [2..2] Control Field 1 Bit 2 Compare Enable */ + __IOM uint8_t CF1CE3 : 1; /*!< [3..3] Control Field 1 Bit 3 Compare Enable */ + __IOM uint8_t CF1CE4 : 1; /*!< [4..4] Control Field 1 Bit 4 Compare Enable */ + __IOM uint8_t CF1CE5 : 1; /*!< [5..5] Control Field 1 Bit 5 Compare Enable */ + __IOM uint8_t CF1CE6 : 1; /*!< [6..6] Control Field 1 Bit 6 Compare Enable */ + __IOM uint8_t CF1CE7 : 1; /*!< [7..7] Control Field 1 Bit 7 Compare Enable */ + } CF1CR_b; + }; + __IOM uint8_t CF1RR; /*!< (@ 0x0000002F) Control Field 1 Receive Data Register */ + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000030) Timer Control Register */ + + struct + { + __IOM uint8_t TCST : 1; /*!< [0..0] Timer Count Start */ + uint8_t : 7; + } TCR_b; + }; + + union + { + __IOM uint8_t TMR; /*!< (@ 0x00000031) Timer Mode Register */ + + struct + { + __IOM uint8_t TOMS : 2; /*!< [1..0] Timer Operating Mode Select */ + uint8_t : 1; + __IOM uint8_t TWRC : 1; /*!< [3..3] Counter Write Control */ + __IOM uint8_t TCSS : 3; /*!< [6..4] Timer Count Clock Source Select */ + uint8_t : 1; + } TMR_b; + }; + __IOM uint8_t TPRE; /*!< (@ 0x00000032) Timer Prescaler Register */ + __IOM uint8_t TCNT; /*!< (@ 0x00000033) Timer Count Register */ +} R_SCI0_Type; /*!< Size = 52 (0x34) */ + +/* =========================================================================================================================== */ +/* ================ R_SDHI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief SD/MMC Host Interface (R_SDHI0) + */ + +typedef struct /*!< (@ 0x40252000) R_SDHI0 Structure */ +{ + union + { + __IOM uint32_t SD_CMD; /*!< (@ 0x00000000) Command Type Register */ + + struct + { + __IOM uint32_t CMDIDX : 6; /*!< [5..0] Command IndexThese bits specify Command Format[45:40] + * (command index).[Examples]CMD6: SD_CMD[7:0] = 8'b00_000110CMD18: + * SD_CMD[7:0] = 8'b00_010010ACMD13: SD_CMD[7:0] = 8'b01_001101 */ + __IOM uint32_t ACMD : 2; /*!< [7..6] Command Type Select */ + __IOM uint32_t RSPTP : 3; /*!< [10..8] Mode/Response TypeNOTE: As some commands cannot be used + * in normal mode, see section 1.4.10, Example of SD_CMD Register + * Setting to select mode/response type. */ + __IOM uint32_t CMDTP : 1; /*!< [11..11] Data Mode (Command Type) */ + __IOM uint32_t CMDRW : 1; /*!< [12..12] Write/Read Mode (enabled when the command with data + * is handled) */ + __IOM uint32_t TRSTP : 1; /*!< [13..13] Single/Multiple Block Transfer (enabled when the command + * with data is handled) */ + __IOM uint32_t CMD12AT : 2; /*!< [15..14] Multiple Block Transfer Mode (enabled at multiple block + * transfer) */ + uint32_t : 16; + } SD_CMD_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t SD_ARG; /*!< (@ 0x00000008) SD Command Argument Register */ + + struct + { + __IOM uint32_t SD_ARG : 32; /*!< [31..0] Argument RegisterSet command format[39:8] (argument) */ + } SD_ARG_b; + }; + + union + { + __IOM uint32_t SD_ARG1; /*!< (@ 0x0000000C) SD Command Argument Register 1 */ + + struct + { + __IOM uint32_t SD_ARG1 : 16; /*!< [15..0] Argument Register 1Set command format[39:24] (argument) */ + uint32_t : 16; + } SD_ARG1_b; + }; + + union + { + __IOM uint32_t SD_STOP; /*!< (@ 0x00000010) Data Stop Register */ + + struct + { + __IOM uint32_t STP : 1; /*!< [0..0] Stop- When STP is set to 1 during multiple block transfer, + * CMD12 is issued to halt the transfer through the SD host + * interface.However, if a command sequence is halted because + * of a communications error or timeout, CMD12 is not issued. + * Although continued buffer access is possible even after + * STP has been set to 1, the buffer access error bit (ERR5 + * or ERR4) in SD_INFO2 will be set accordingly.- When STP + * has been set to 1 during transfer for single block write, + * the access end flag is set when SD_BUF becomes emp */ + uint32_t : 7; + __IOM uint32_t SEC : 1; /*!< [8..8] Block Count EnableSet SEC to 1 at multiple block transfer.When + * SD_CMD is set as follows to start the command sequence + * while SEC is set to 1, CMD12 is automatically issued to + * stop multi-block transfer with the number of blocks which + * is set to SD_SECCNT.1. CMD18 or CMD25 in normal mode (SD_CMD[10:8] + * = 000)2. SD_CMD[15:13] = 001 in extended mode (CMD12 is + * automatically issued, multiple block transfer)When the + * command sequence is halted because of a communications + * error or timeout, CMD12 is not automatically i */ + uint32_t : 23; + } SD_STOP_b; + }; + + union + { + __IOM uint32_t SD_SECCNT; /*!< (@ 0x00000014) Block Count Register */ + + struct + { + __IOM uint32_t SD_SECCNT : 32; /*!< [31..0] Number of Transfer BlocksNOTE: Do not change the value + * of this bit when the CBSY bit in SD_INFO2 is set to 1. */ + } SD_SECCNT_b; + }; + + union + { + __IM uint32_t SD_RSP10; /*!< (@ 0x00000018) SD Card Response Register 10 */ + + struct + { + __IM uint32_t SD_RSP10 : 32; /*!< [31..0] Store the response from the SD card/MMC */ + } SD_RSP10_b; + }; + + union + { + __IM uint32_t SD_RSP1; /*!< (@ 0x0000001C) SD Card Response Register 1 */ + + struct + { + __IM uint32_t SD_RSP1 : 16; /*!< [15..0] Store the response from the SD card/MMC */ + uint32_t : 16; + } SD_RSP1_b; + }; + + union + { + __IM uint32_t SD_RSP32; /*!< (@ 0x00000020) SD Card Response Register 32 */ + + struct + { + __IM uint32_t SD_RSP32 : 32; /*!< [31..0] Store the response from the SD card/MMC */ + } SD_RSP32_b; + }; + + union + { + __IM uint32_t SD_RSP3; /*!< (@ 0x00000024) SD Card Response Register 3 */ + + struct + { + __IM uint32_t SD_RSP3 : 16; /*!< [15..0] Store the response from the SD card/MMC */ + uint32_t : 16; + } SD_RSP3_b; + }; + + union + { + __IM uint32_t SD_RSP54; /*!< (@ 0x00000028) SD Card Response Register 54 */ + + struct + { + __IM uint32_t SD_RSP54 : 32; /*!< [31..0] Store the response from the SD card/MMC */ + } SD_RSP54_b; + }; + + union + { + __IM uint32_t SD_RSP5; /*!< (@ 0x0000002C) SD Card Response Register 5 */ + + struct + { + __IM uint32_t SD_RSP5 : 16; /*!< [15..0] Store the response from the SD card/MMC */ + uint32_t : 16; + } SD_RSP5_b; + }; + + union + { + __IM uint32_t SD_RSP76; /*!< (@ 0x00000030) SD Card Response Register 76 */ + + struct + { + __IM uint32_t SD_RSP76 : 24; /*!< [23..0] Store the response from the SD card/MMC */ + uint32_t : 8; + } SD_RSP76_b; + }; + + union + { + __IM uint32_t SD_RSP7; /*!< (@ 0x00000034) SD Card Response Register 7 */ + + struct + { + __IM uint32_t SD_RSP7 : 8; /*!< [7..0] Store the response from the SD card/MMC */ + uint32_t : 24; + } SD_RSP7_b; + }; + + union + { + __IOM uint32_t SD_INFO1; /*!< (@ 0x00000038) SD Card Interrupt Flag Register 1 */ + + struct + { + __IOM uint32_t RSPEND : 1; /*!< [0..0] Response End Detection */ + uint32_t : 1; + __IOM uint32_t ACEND : 1; /*!< [2..2] Access End */ + __IOM uint32_t SDCDRM : 1; /*!< [3..3] SDnCD Card Removal */ + __IOM uint32_t SDCDIN : 1; /*!< [4..4] SDnCD Card Insertion */ + __IM uint32_t SDCDMON : 1; /*!< [5..5] Indicates the SDnCD state */ + uint32_t : 1; + __IM uint32_t SDWPMON : 1; /*!< [7..7] Indicates the SDnWP state */ + __IOM uint32_t SDD3RM : 1; /*!< [8..8] SDnDAT3 Card Removal */ + __IOM uint32_t SDD3IN : 1; /*!< [9..9] SDnDAT3 Card Insertion */ + __IM uint32_t SDD3MON : 1; /*!< [10..10] Inticates the SDnDAT3 State */ + uint32_t : 21; + } SD_INFO1_b; + }; + + union + { + __IOM uint32_t SD_INFO2; /*!< (@ 0x0000003C) SD Card Interrupt Flag Register 2 */ + + struct + { + __IOM uint32_t CMDE : 1; /*!< [0..0] Command Error */ + __IOM uint32_t CRCE : 1; /*!< [1..1] CRC Error */ + __IOM uint32_t ENDE : 1; /*!< [2..2] END Error */ + __IOM uint32_t DTO : 1; /*!< [3..3] Data Timeout */ + __IOM uint32_t ILW : 1; /*!< [4..4] SD_BUF Illegal Write Access */ + __IOM uint32_t ILR : 1; /*!< [5..5] SD_BUF Illegal Read Access */ + __IOM uint32_t RSPTO : 1; /*!< [6..6] Response Timeout */ + __IM uint32_t SDD0MON : 1; /*!< [7..7] SDDAT0Indicates the SDDAT0 state of the port specified + * by SD_PORTSEL. */ + __IOM uint32_t BRE : 1; /*!< [8..8] SD_BUF Read Enable */ + __IOM uint32_t BWE : 1; /*!< [9..9] SD_BUF Write Enable */ + uint32_t : 3; + __IM uint32_t SD_CLK_CTRLEN : 1; /*!< [13..13] When a command sequence is started by writing to SD_CMD, + * the CBSY bit is set to 1 and, at the same time, the SCLKDIVEN + * bit is set to 0. The SCLKDIVEN bit is set to 1 after 8 + * cycles of SDCLK have elapsed after setting of the CBSY + * bit to 0 due to completion of the command sequence. */ + __IM uint32_t CBSY : 1; /*!< [14..14] Command Type Register Busy */ + __IOM uint32_t ILA : 1; /*!< [15..15] Illegal Access Error */ + uint32_t : 16; + } SD_INFO2_b; + }; + + union + { + __IOM uint32_t SD_INFO1_MASK; /*!< (@ 0x00000040) SD_INFO1 Interrupt Mask Register */ + + struct + { + __IOM uint32_t RSPENDM : 1; /*!< [0..0] Response End Interrupt Request Mask */ + uint32_t : 1; + __IOM uint32_t ACENDM : 1; /*!< [2..2] Access End Interrupt Request Mask */ + __IOM uint32_t SDCDRMM : 1; /*!< [3..3] SDnCD card Removal Interrupt Request Mask */ + __IOM uint32_t SDCDINM : 1; /*!< [4..4] SDnCD card Insertion Interrupt Request Mask */ + uint32_t : 3; + __IOM uint32_t SDD3RMM : 1; /*!< [8..8] SDnDAT3 Card Removal Interrupt Request Mask */ + __IOM uint32_t SDD3INM : 1; /*!< [9..9] SDnDAT3 Card Insertion Interrupt Request Mask */ + uint32_t : 22; + } SD_INFO1_MASK_b; + }; + + union + { + __IOM uint32_t SD_INFO2_MASK; /*!< (@ 0x00000044) SD_INFO2 Interrupt Mask Register */ + + struct + { + __IOM uint32_t CMDEM : 1; /*!< [0..0] Command Error Interrupt Request Mask */ + __IOM uint32_t CRCEM : 1; /*!< [1..1] CRC Error Interrupt Request Mask */ + __IOM uint32_t ENDEM : 1; /*!< [2..2] End Bit Error Interrupt Request Mask */ + __IOM uint32_t DTOM : 1; /*!< [3..3] Data Timeout Interrupt Request Mask */ + __IOM uint32_t ILWM : 1; /*!< [4..4] SD_BUF Register Illegal Write Interrupt Request Mask */ + __IOM uint32_t ILRM : 1; /*!< [5..5] SD_BUF Register Illegal Read Interrupt Request Mask */ + __IOM uint32_t RSPTOM : 1; /*!< [6..6] Response Timeout Interrupt Request Mask */ + uint32_t : 1; + __IOM uint32_t BREM : 1; /*!< [8..8] BRE Interrupt Request Mask */ + __IOM uint32_t BWEM : 1; /*!< [9..9] BWE Interrupt Request Mask */ + uint32_t : 5; + __IOM uint32_t ILAM : 1; /*!< [15..15] Illegal Access Error Interrupt Request Mask */ + uint32_t : 16; + } SD_INFO2_MASK_b; + }; + + union + { + __IOM uint32_t SD_CLK_CTRL; /*!< (@ 0x00000048) SD Clock Control Register */ + + struct + { + __IOM uint32_t CLKSEL : 8; /*!< [7..0] SDHI Clock Frequency Select */ + __IOM uint32_t CLKEN : 1; /*!< [8..8] SD/MMC Clock Output Control Enable */ + __IOM uint32_t CLKCTRLEN : 1; /*!< [9..9] SD/MMC Clock Output Automatic Control Enable */ + uint32_t : 22; + } SD_CLK_CTRL_b; + }; + + union + { + __IOM uint32_t SD_SIZE; /*!< (@ 0x0000004C) Transfer Data Length Register */ + + struct + { + __IOM uint32_t LEN : 10; /*!< [9..0] Transfer Data SizeThese bits specify a size between 1 + * and 512 bytes for the transfer of single blocks.In cases + * of multiple block transfer with automatic issuing of CMD12 + * (CMD18 and CMD25), the only specifiable transfer data size + * is 512 bytes. Furthermore, in cases of multiple block transfer + * without automatic issuing of CMD12, as well as 512 bytes, + * 32, 64, 128, and 256 bytes are specifiable. However, in + * the reading of 32, 64, 128, and 256 bytes for the transfer + * of multiple blocks, this is restricted to mult */ + uint32_t : 22; + } SD_SIZE_b; + }; + + union + { + __IOM uint32_t SD_OPTION; /*!< (@ 0x00000050) SD Card Access Control Option Register */ + + struct + { + __IOM uint32_t CTOP : 4; /*!< [3..0] Card Detect Time Counter */ + __IOM uint32_t TOP : 4; /*!< [7..4] Timeout Counter */ + __IOM uint32_t TOUTMASK : 1; /*!< [8..8] Timeout MASKWhen timeout occurs in case of inactivating + * timeout, software reset should be executed to terminate + * command sequence. */ + uint32_t : 4; + __IOM uint32_t WIDTH8 : 1; /*!< [13..13] Bus Widthsee b15, WIDTH bit */ + uint32_t : 1; + __IOM uint32_t WIDTH : 1; /*!< [15..15] Bus WidthNOTE: The initial value is applied at a reset + * and when the SOFT_RST.SDRST flag is 0. */ + uint32_t : 16; + } SD_OPTION_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IM uint32_t SD_ERR_STS1; /*!< (@ 0x00000058) SD Error Status Register 1 */ + + struct + { + __IM uint32_t CMDE0 : 1; /*!< [0..0] Command Error 0NOTE: other than a response to a command + * issued within a command sequence */ + __IM uint32_t CMDE1 : 1; /*!< [1..1] Command Error 1NOTE: In cases where CMD12 is issued by + * setting a command index in SD_CMD, this is Indicated in + * CMDE0. */ + __IM uint32_t RSPLENE0 : 1; /*!< [2..2] Response Length Error 0NOTE: other than a response to + * a command issued within a command sequence */ + __IM uint32_t RSPLENE1 : 1; /*!< [3..3] Response Length Error 1NOTE: In cases where CMD12 is + * issued by setting a command index in SD_CMD, this is indicated + * in RSPLENE0. */ + __IM uint32_t RDLENE : 1; /*!< [4..4] Read Data Length Error */ + __IM uint32_t CRCLENE : 1; /*!< [5..5] CRC Status Token Length Error */ + uint32_t : 2; + __IM uint32_t RSPCRCE0 : 1; /*!< [8..8] Response CRC Error 0NOTE: other than a response to a + * command issued within a command sequence */ + __IM uint32_t RSPCRCE1 : 1; /*!< [9..9] Response CRC Error 1NOTE: In cases where CMD12 is issued + * by setting a command index in SD_CMD, this is indicated + * in RSPCRCE0. */ + __IM uint32_t RDCRCE : 1; /*!< [10..10] Read Data CRC Error */ + __IM uint32_t CRCTKE : 1; /*!< [11..11] CRC Status Token Error */ + __IM uint32_t CRCTK : 3; /*!< [14..12] CRC Status TokenStore the CRC status token value (normal + * value is 010b) */ + uint32_t : 17; + } SD_ERR_STS1_b; + }; + + union + { + __IM uint32_t SD_ERR_STS2; /*!< (@ 0x0000005C) SD Error Status Register 2 */ + + struct + { + __IM uint32_t RSPTO0 : 1; /*!< [0..0] Response Timeout 0 */ + __IM uint32_t RSPTO1 : 1; /*!< [1..1] Response Timeout 1 */ + __IM uint32_t BSYTO0 : 1; /*!< [2..2] Busy Timeout 0 */ + __IM uint32_t BSYTO1 : 1; /*!< [3..3] Busy Timeout 1 */ + __IM uint32_t RDTO : 1; /*!< [4..4] Read Data Timeout */ + __IM uint32_t CRCTO : 1; /*!< [5..5] CRC Status Token Timeout */ + __IM uint32_t CRCBSYTO : 1; /*!< [6..6] CRC Status Token Busy Timeout */ + uint32_t : 25; + } SD_ERR_STS2_b; + }; + + union + { + __IOM uint32_t SD_BUF0; /*!< (@ 0x00000060) SD Buffer Register */ + + struct + { + __IOM uint32_t SD_BUF : 32; /*!< [31..0] SD Buffer RegisterWhen writing to the SD card, the write + * data is written to this register. When reading from the + * SD card, the read data is read from this register. This + * register is internally connected to two 512-byte buffers.If + * both buffers are not empty when executing multiple block + * read, SD/MMC clock is stopped to suspend receiving data. + * When one of buffers is empty, SD/MMC clock is supplied + * to resume receiving data. */ + } SD_BUF0_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t SDIO_MODE; /*!< (@ 0x00000068) SDIO Mode Control Register */ + + struct + { + __IOM uint32_t INTEN : 1; /*!< [0..0] SDIO Mode */ + uint32_t : 1; + __IOM uint32_t RWREQ : 1; /*!< [2..2] Read Wait Request */ + uint32_t : 5; + __IOM uint32_t IOABT : 1; /*!< [8..8] SDIO AbortNOTE: See manual */ + __IOM uint32_t C52PUB : 1; /*!< [9..9] SDIO None AbortNOTE: See manual */ + uint32_t : 22; + } SDIO_MODE_b; + }; + + union + { + __IOM uint32_t SDIO_INFO1; /*!< (@ 0x0000006C) SDIO Interrupt Flag Register 1 */ + + struct + { + __IOM uint32_t IOIRQ : 1; /*!< [0..0] SDIO Interrupt Status */ + uint32_t : 13; + __IOM uint32_t EXPUB52 : 1; /*!< [14..14] EXPUB52 Status FlagNOTE: See manual */ + __IOM uint32_t EXWT : 1; /*!< [15..15] EXWT Status FlagNOTE: See manual */ + uint32_t : 16; + } SDIO_INFO1_b; + }; + + union + { + __IOM uint32_t SDIO_INFO1_MASK; /*!< (@ 0x00000070) SDIO_INFO1 Interrupt Mask Register */ + + struct + { + __IOM uint32_t IOIRQM : 1; /*!< [0..0] IOIRQ Interrupt Mask Control */ + uint32_t : 13; + __IOM uint32_t EXPUB52M : 1; /*!< [14..14] EXPUB52 Interrupt Request Mask Control */ + __IOM uint32_t EXWTM : 1; /*!< [15..15] EXWT Interrupt Request Mask Control */ + uint32_t : 16; + } SDIO_INFO1_MASK_b; + }; + __IM uint32_t RESERVED3[79]; + + union + { + __IOM uint32_t SD_DMAEN; /*!< (@ 0x000001B0) DMA Mode Enable Register */ + + struct + { + uint32_t : 1; + __IOM uint32_t DMAEN : 1; /*!< [1..1] SD_BUF Read/Write DMA Transfer */ + uint32_t : 30; + } SD_DMAEN_b; + }; + __IM uint32_t RESERVED4[3]; + + union + { + __IOM uint32_t SOFT_RST; /*!< (@ 0x000001C0) Software Reset Register */ + + struct + { + __IOM uint32_t SDRST : 1; /*!< [0..0] Software Reset of SD I/F Unit */ + uint32_t : 31; + } SOFT_RST_b; + }; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t SDIF_MODE; /*!< (@ 0x000001CC) SD Interface Mode Setting Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t NOCHKCR : 1; /*!< [8..8] CRC Check Mask (for MMC test commands) */ + uint32_t : 23; + } SDIF_MODE_b; + }; + __IM uint32_t RESERVED6[4]; + + union + { + __IOM uint32_t EXT_SWAP; /*!< (@ 0x000001E0) Swap Control Register */ + + struct + { + uint32_t : 6; + __IOM uint32_t BWSWP : 1; /*!< [6..6] SD_BUF0 Swap Write */ + __IOM uint32_t BRSWP : 1; /*!< [7..7] SD_BUF0 Swap Read */ + uint32_t : 24; + } EXT_SWAP_b; + }; +} R_SDHI0_Type; /*!< Size = 484 (0x1e4) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Peripheral Interface (R_SPI0) + */ + +typedef struct /*!< (@ 0x4035C000) R_SPI0 Structure */ +{ + union + { + __IOM uint8_t SPCR; /*!< (@ 0x00000000) SPI Control Register */ + + struct + { + __IOM uint8_t SPMS : 1; /*!< [0..0] SPI Mode Select */ + __IOM uint8_t TXMD : 1; /*!< [1..1] Communications Operating Mode Select */ + __IOM uint8_t MODFEN : 1; /*!< [2..2] Mode Fault Error Detection Enable */ + __IOM uint8_t MSTR : 1; /*!< [3..3] SPI Master/Slave Mode Select */ + __IOM uint8_t SPEIE : 1; /*!< [4..4] SPI Error Interrupt Enable */ + __IOM uint8_t SPTIE : 1; /*!< [5..5] Transmit Buffer Empty Interrupt Enable */ + __IOM uint8_t SPE : 1; /*!< [6..6] SPI Function Enable */ + __IOM uint8_t SPRIE : 1; /*!< [7..7] SPI Receive Buffer Full Interrupt Enable */ + } SPCR_b; + }; + + union + { + __IOM uint8_t SSLP; /*!< (@ 0x00000001) SPI Slave Select Polarity Register */ + + struct + { + __IOM uint8_t SSL0P : 1; /*!< [0..0] SSL0 Signal Polarity Setting */ + __IOM uint8_t SSL1P : 1; /*!< [1..1] SSL1 Signal Polarity Setting */ + __IOM uint8_t SSL2P : 1; /*!< [2..2] SSL2 Signal Polarity Setting */ + __IOM uint8_t SSL3P : 1; /*!< [3..3] SSL3 Signal Polarity Setting */ + __IOM uint8_t SSL4P : 1; /*!< [4..4] SSL4 Signal Polarity Setting */ + __IOM uint8_t SSL5P : 1; /*!< [5..5] SSL5 Signal Polarity Setting */ + __IOM uint8_t SSL6P : 1; /*!< [6..6] SSL6 Signal Polarity Setting */ + __IOM uint8_t SSL7P : 1; /*!< [7..7] SSL7 Signal Polarity Setting */ + } SSLP_b; + }; + + union + { + __IOM uint8_t SPPCR; /*!< (@ 0x00000002) SPI Pin Control Register */ + + struct + { + __IOM uint8_t SPLP : 1; /*!< [0..0] SPI Loopback */ + __IOM uint8_t SPLP2 : 1; /*!< [1..1] SPI Loopback 2 */ + uint8_t : 2; + __IOM uint8_t MOIFV : 1; /*!< [4..4] MOSI Idle Fixed Value */ + __IOM uint8_t MOIFE : 1; /*!< [5..5] MOSI Idle Value Fixing Enable */ + uint8_t : 2; + } SPPCR_b; + }; + + union + { + __IOM uint8_t SPSR; /*!< (@ 0x00000003) SPI Status Register */ + + struct + { + __IOM uint8_t OVRF : 1; /*!< [0..0] Overrun Error Flag */ + __IM uint8_t IDLNF : 1; /*!< [1..1] SPI Idle Flag */ + __IOM uint8_t MODF : 1; /*!< [2..2] Mode Fault Error Flag */ + __IOM uint8_t PERF : 1; /*!< [3..3] Parity Error Flag */ + __IOM uint8_t UDRF : 1; /*!< [4..4] Underrun Error Flag(When MODF is 0, This bit is invalid.) */ + __IOM uint8_t SPTEF : 1; /*!< [5..5] SPI Transmit Buffer Empty Flag */ + __IOM uint8_t CENDF : 1; /*!< [6..6] Communication End Flag */ + __IOM uint8_t SPRF : 1; /*!< [7..7] SPI Receive Buffer Full Flag */ + } SPSR_b; + }; + + union + { + __IOM uint32_t SPDR; /*!< (@ 0x00000004) SPI Data Register */ + __IOM uint16_t SPDR_HA; /*!< (@ 0x00000004) SPI Data Register ( halfword access ) */ + __IOM uint8_t SPDR_BY; /*!< (@ 0x00000004) SPI Data Register ( byte access ) */ + }; + + union + { + __IOM uint8_t SPSCR; /*!< (@ 0x00000008) SPI Sequence Control Register */ + + struct + { + __IOM uint8_t SPSLN : 3; /*!< [2..0] RSPI Sequence Length SpecificationThe order in which + * the SPCMD0 to SPCMD07 registers are to be referenced is + * changed in accordance with the sequence length that is + * set in these bits. The relationship among the setting of + * these bits, sequence length, and SPCMD0 to SPCMD7 registers + * referenced by the RSPI is shown above. However, the RSPI + * in slave mode always references SPCMD0. */ + uint8_t : 5; + } SPSCR_b; + }; + + union + { + __IM uint8_t SPSSR; /*!< (@ 0x00000009) SPI Sequence Status Register */ + + struct + { + __IM uint8_t SPCP : 3; /*!< [2..0] RSPI Command Pointer */ + uint8_t : 1; + __IM uint8_t SPECM : 3; /*!< [6..4] RSPI Error Command */ + uint8_t : 1; + } SPSSR_b; + }; + + union + { + __IOM uint8_t SPBR; /*!< (@ 0x0000000A) SPI Bit Rate Register */ + + struct + { + __IOM uint8_t SPR : 8; /*!< [7..0] SPBR sets the bit rate in master mode. */ + } SPBR_b; + }; + + union + { + __IOM uint8_t SPDCR; /*!< (@ 0x0000000B) SPI Data Control Register */ + + struct + { + __IOM uint8_t SPFC : 2; /*!< [1..0] Number of Frames Specification */ + __IOM uint8_t SLSEL : 2; /*!< [3..2] SSL Pin Output Select */ + __IOM uint8_t SPRDTD : 1; /*!< [4..4] SPI Receive/Transmit Data Selection */ + __IOM uint8_t SPLW : 1; /*!< [5..5] SPI Word Access/Halfword Access Specification */ + __IOM uint8_t SPBYT : 1; /*!< [6..6] SPI Byte Access Specification */ + uint8_t : 1; + } SPDCR_b; + }; + + union + { + __IOM uint8_t SPCKD; /*!< (@ 0x0000000C) SPI Clock Delay Register */ + + struct + { + __IOM uint8_t SCKDL : 3; /*!< [2..0] RSPCK Delay Setting */ + uint8_t : 5; + } SPCKD_b; + }; + + union + { + __IOM uint8_t SSLND; /*!< (@ 0x0000000D) SPI Slave Select Negation Delay Register */ + + struct + { + __IOM uint8_t SLNDL : 3; /*!< [2..0] SSL Negation Delay Setting */ + uint8_t : 5; + } SSLND_b; + }; + + union + { + __IOM uint8_t SPND; /*!< (@ 0x0000000E) SPI Next-Access Delay Register */ + + struct + { + __IOM uint8_t SPNDL : 3; /*!< [2..0] SPI Next-Access Delay Setting */ + uint8_t : 5; + } SPND_b; + }; + + union + { + __IOM uint8_t SPCR2; /*!< (@ 0x0000000F) SPI Control Register 2 */ + + struct + { + __IOM uint8_t SPPE : 1; /*!< [0..0] Parity Enable */ + __IOM uint8_t SPOE : 1; /*!< [1..1] Parity Mode */ + __IOM uint8_t SPIIE : 1; /*!< [2..2] SPI Idle Interrupt Enable */ + __IOM uint8_t PTE : 1; /*!< [3..3] Parity Self-Testing */ + __IOM uint8_t SCKASE : 1; /*!< [4..4] RSPCK Auto-Stop Function Enable */ + __IOM uint8_t SPTDDL : 3; /*!< [7..5] RSPI Transmit Data Delay */ + } SPCR2_b; + }; + + union + { + __IOM uint16_t SPCMD[8]; /*!< (@ 0x00000010) SPI Command Register [0..7] */ + + struct + { + __IOM uint16_t CPHA : 1; /*!< [0..0] RSPCK Phase Setting */ + __IOM uint16_t CPOL : 1; /*!< [1..1] RSPCK Polarity Setting */ + __IOM uint16_t BRDV : 2; /*!< [3..2] Bit Rate Division Setting */ + __IOM uint16_t SSLA : 3; /*!< [6..4] SSL Signal Assertion Setting */ + __IOM uint16_t SSLKP : 1; /*!< [7..7] SSL Signal Level Keeping */ + __IOM uint16_t SPB : 4; /*!< [11..8] SPI Data Length Setting */ + __IOM uint16_t LSBF : 1; /*!< [12..12] SPI LSB First */ + __IOM uint16_t SPNDEN : 1; /*!< [13..13] SPI Next-Access Delay Enable */ + __IOM uint16_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint16_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + } SPCMD_b[8]; + }; + + union + { + __IOM uint8_t SPDCR2; /*!< (@ 0x00000020) SPI Data Control Register 2 */ + + struct + { + __IOM uint8_t BYSW : 1; /*!< [0..0] Byte Swap Operating Mode Select */ + __IOM uint8_t SINV : 1; /*!< [1..1] Serial data invert bit */ + uint8_t : 6; + } SPDCR2_b; + }; + + union + { + __IOM uint8_t SPCR3; /*!< (@ 0x00000021) RSPI Control Register 3 */ + + struct + { + __IOM uint8_t ETXMD : 1; /*!< [0..0] Extended Communication Mode Select */ + __IOM uint8_t BFDS : 1; /*!< [1..1] Between Burst Transfer Frames Delay Select */ + uint8_t : 2; + __IOM uint8_t CENDIE : 1; /*!< [4..4] RSPI Communication End Interrupt Enable */ + uint8_t : 3; + } SPCR3_b; + }; + __IM uint16_t RESERVED; + __IM uint32_t RESERVED1[6]; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t SPPR; /*!< (@ 0x0000003E) RSPI Parameter Read Register */ + + struct + { + uint16_t : 4; + __IOM uint16_t BUFWID : 1; /*!< [4..4] Buffer Width check */ + uint16_t : 3; + __IOM uint16_t BUFNUM : 3; /*!< [10..8] Buffer Number check */ + uint16_t : 1; + __IOM uint16_t CMDNUM : 4; /*!< [15..12] Command Number check */ + } SPPR_b; + }; +} R_SPI0_Type; /*!< Size = 64 (0x40) */ + +/* =========================================================================================================================== */ +/* ================ R_SRAM ================ */ +/* =========================================================================================================================== */ + +/** + * @brief SRAM (R_SRAM) + */ + +typedef struct /*!< (@ 0x40002000) R_SRAM Structure */ +{ + union + { + __IOM uint16_t SRAMPRCR; /*!< (@ 0x00000000) SRAM Protection Control Register for Secure */ + + struct + { + __IOM uint16_t PR : 1; /*!< [0..0] Register Write Control */ + uint16_t : 7; + __OM uint16_t KW : 8; /*!< [15..8] Write Key Code */ + } SRAMPRCR_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t SRAMPRCR_NS; /*!< (@ 0x00000004) SRAM Protection Control Register for Non-Secure */ + + struct + { + __IOM uint16_t PR : 1; /*!< [0..0] Register Write Control */ + uint16_t : 7; + __OM uint16_t KW : 8; /*!< [15..8] Write Key Code */ + } SRAMPRCR_NS_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint8_t SRAMWTSC; /*!< (@ 0x00000008) SRAM Wait State Control Register */ + + struct + { + __IOM uint8_t WTEN : 1; /*!< [0..0] Wait enable */ + uint8_t : 7; + } SRAMWTSC_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; + __IM uint32_t RESERVED4; + + union + { + __IOM uint8_t SRAMCR0; /*!< (@ 0x00000010) SRAM Control Register 0 */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after detection for 1-bit ECC error detection */ + uint8_t : 1; + __IOM uint8_t ECCMOD : 2; /*!< [3..2] ECC Operating Mode Select */ + __IOM uint8_t E1STSEN : 1; /*!< [4..4] ECC 1-Bit Error Information Update Enable */ + uint8_t : 2; + __IOM uint8_t TSTBYP : 1; /*!< [7..7] ECC Test Enable / ECC Bypass Select */ + } SRAMCR0_b; + }; + __IM uint8_t RESERVED5; + __IM uint16_t RESERVED6; + + union + { + __IOM uint8_t SRAMCR1; /*!< (@ 0x00000014) SRAM Control Register 1 */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after detection for parity error detection */ + uint8_t : 7; + } SRAMCR1_b; + }; + __IM uint8_t RESERVED7; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[6]; + + union + { + __IOM uint8_t SRAMECCRGN0; /*!< (@ 0x00000030) SRAM0 ECC Region Control Register */ + + struct + { + __IOM uint8_t ECCRGN : 2; /*!< [1..0] ECC Region */ + uint8_t : 6; + } SRAMECCRGN0_b; + }; + __IM uint8_t RESERVED10; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12[3]; + + union + { + __IM uint16_t SRAMESR; /*!< (@ 0x00000040) SRAM Error Status Register */ + + struct + { + __IM uint16_t ERR00 : 1; /*!< [0..0] SRAM0 1-bit ECC Error Status */ + __IM uint16_t ERR01 : 1; /*!< [1..1] SRAM0 2-bit ECC Error Status */ + __IM uint16_t ERR1 : 1; /*!< [2..2] SRAM1 Parity Error Status */ + uint16_t : 11; + __IM uint16_t ERRS : 1; /*!< [14..14] Standby SRAM Parity Error status */ + uint16_t : 1; + } SRAMESR_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14; + + union + { + __IOM uint16_t SRAMESCLR; /*!< (@ 0x00000048) SRAM Error Status Clear Register */ + + struct + { + __IOM uint16_t CLR00 : 1; /*!< [0..0] SRAM0 1-bit ECC Error Status Clear */ + __IOM uint16_t CLR01 : 1; /*!< [1..1] SRAM0 2-bit ECC Error Status Clear */ + __IOM uint16_t CLR1 : 1; /*!< [2..2] SRAM1 Parity Error Status Clear */ + uint16_t : 11; + __IOM uint16_t CLRS : 1; /*!< [14..14] Standby SRAM Parity Error Status Clear */ + uint16_t : 1; + } SRAMESCLR_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16; + + union + { + __IM uint32_t SRAMEAR0; /*!< (@ 0x00000050) SRAM Error Address Register */ + + struct + { + uint32_t : 3; + __IM uint32_t EA : 17; /*!< [19..3] SRAM Error Address */ + uint32_t : 12; + } SRAMEAR0_b; + }; + + union + { + __IM uint32_t SRAMEAR1; /*!< (@ 0x00000054) SRAM Error Address Register */ + + struct + { + uint32_t : 3; + __IM uint32_t EA : 17; /*!< [19..3] SRAM Error Address */ + uint32_t : 12; + } SRAMEAR1_b; + }; + + union + { + __IM uint32_t SRAMEAR2; /*!< (@ 0x00000058) SRAM Error Address Register */ + + struct + { + uint32_t : 3; + __IM uint32_t EA : 17; /*!< [19..3] SRAM Error Address */ + uint32_t : 12; + } SRAMEAR2_b; + }; + __IM uint32_t RESERVED17[45]; + + union + { + __IOM uint8_t STBRAMCR; /*!< (@ 0x00000110) Standby SRAM Control Register */ + + struct + { + __IOM uint8_t OAD : 1; /*!< [0..0] Operation after detection */ + uint8_t : 7; + } STBRAMCR_b; + }; + __IM uint8_t RESERVED18; + __IM uint16_t RESERVED19; + __IM uint32_t RESERVED20[15]; + + union + { + __IM uint32_t STBRAMEAR; /*!< (@ 0x00000150) Standby SRAM Error Address Register */ + + struct + { + uint32_t : 2; + __IM uint32_t EA : 8; /*!< [9..2] SRAM Error Address */ + uint32_t : 22; + } STBRAMEAR_b; + }; +} R_SRAM_Type; /*!< Size = 340 (0x154) */ + +/* =========================================================================================================================== */ +/* ================ R_SSI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Sound Interface Enhanced (SSIE) (R_SSI0) + */ + +typedef struct /*!< (@ 0x4025D000) R_SSI0 Structure */ +{ + union + { + __IOM uint32_t SSICR; /*!< (@ 0x00000000) Control Register */ + + struct + { + __IOM uint32_t REN : 1; /*!< [0..0] Receive Enable */ + __IOM uint32_t TEN : 1; /*!< [1..1] Transmit Enable */ + uint32_t : 1; + __IOM uint32_t MUEN : 1; /*!< [3..3] Mute EnableNOTE: When this module is muted, the value + * of outputting serial data is rewritten to 0 but data transmission + * is not stopped. Write dummy data to the SSIFTDR not to + * generate a transmit underflow because the number of data + * in the transmit FIFO is decreasing. */ + __IOM uint32_t CKDV : 4; /*!< [7..4] Serial Oversampling Clock Division Ratio */ + __IOM uint32_t DEL : 1; /*!< [8..8] Serial Data Delay */ + __IOM uint32_t PDTA : 1; /*!< [9..9] Parallel Data Alignment */ + __IOM uint32_t SDTA : 1; /*!< [10..10] Serial Data Alignment */ + __IOM uint32_t SPDP : 1; /*!< [11..11] Serial Padding Polarity */ + __IOM uint32_t LRCKP : 1; /*!< [12..12] Serial WS Polarity */ + __IOM uint32_t BCKP : 1; /*!< [13..13] Serial Bit Clock Polarity */ + __IOM uint32_t MST : 1; /*!< [14..14] Serial WS Direction NOTE: Only the following settings + * are allowed: (SCKD, SWSD) = (0, 0) and (1, 1). Other settings + * are prohibited. */ + uint32_t : 1; + __IOM uint32_t SWL : 3; /*!< [18..16] System Word LengthSet the system word length to the + * bit clock frequency/2 fs. */ + __IOM uint32_t DWL : 3; /*!< [21..19] Data Word Length */ + __IOM uint32_t FRM : 2; /*!< [23..22] Channels */ + uint32_t : 1; + __IOM uint32_t IIEN : 1; /*!< [25..25] Idle Mode Interrupt Enable */ + __IOM uint32_t ROIEN : 1; /*!< [26..26] Receive Overflow Interrupt Enable */ + __IOM uint32_t RUIEN : 1; /*!< [27..27] Receive Underflow Interrupt Enable */ + __IOM uint32_t TOIEN : 1; /*!< [28..28] Transmit Overflow Interrupt Enable */ + __IOM uint32_t TUIEN : 1; /*!< [29..29] Transmit Underflow Interrupt Enable */ + __IOM uint32_t CKS : 1; /*!< [30..30] Oversampling Clock Select */ + uint32_t : 1; + } SSICR_b; + }; + + union + { + __IOM uint32_t SSISR; /*!< (@ 0x00000004) Status Register */ + + struct + { + __IM uint32_t IDST : 1; /*!< [0..0] Idle Mode Status Flag */ + __IM uint32_t RSWNO : 1; /*!< [1..1] Receive Serial Word Number */ + __IM uint32_t RCHNO : 2; /*!< [3..2] Receive Channel Number.These bits are read as 00b. */ + __IM uint32_t TSWNO : 1; /*!< [4..4] Transmit Serial Word Number */ + __IM uint32_t TCHNO : 2; /*!< [6..5] Transmit Channel Number */ + uint32_t : 18; + __IM uint32_t IIRQ : 1; /*!< [25..25] Idle Mode Interrupt Status Flag */ + __IOM uint32_t ROIRQ : 1; /*!< [26..26] Receive Overflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + __IOM uint32_t RUIRQ : 1; /*!< [27..27] Receive Underflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + __IOM uint32_t TOIRQ : 1; /*!< [28..28] Transmit Overflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + __IOM uint32_t TUIRQ : 1; /*!< [29..29] Transmit Underflow Error Interrupt Status Flag NOTE: + * Writable only to clear the flag. Confirm the value is 1 + * and then write 0. */ + uint32_t : 2; + } SSISR_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t SSIFCR; /*!< (@ 0x00000010) FIFO Control Register */ + + struct + { + __IOM uint32_t RFRST : 1; /*!< [0..0] Receive FIFO Data Register Reset */ + __IOM uint32_t TFRST : 1; /*!< [1..1] Transmit FIFO Data Register Reset */ + __IOM uint32_t RIE : 1; /*!< [2..2] Receive Interrupt Enable NOTE: RXI can be cleared by + * clearing either the RDF flag (see the description of the + * RDF bit for details) or RIE bit. */ + __IOM uint32_t TIE : 1; /*!< [3..3] Transmit Interrupt Enable NOTE: TXI can be cleared by + * clearing either the TDE flag (see the description of the + * TDE bit for details) or TIE bit. */ + __IOM uint32_t RTRG : 2; /*!< [5..4] Receive Data Trigger Number */ + __IOM uint32_t TTRG : 2; /*!< [7..6] Transmit Data Trigger Number NOTE: The values in parenthesis + * are the number of empty stages in SSIFTDR at which the + * TDE flag is set. */ + uint32_t : 3; + __IOM uint32_t BSW : 1; /*!< [11..11] Byte Swap Enable */ + uint32_t : 4; + __IOM uint32_t SSIRST : 1; /*!< [16..16] SSI soft ware reset */ + uint32_t : 14; + __IOM uint32_t AUCKE : 1; /*!< [31..31] Oversampling Clock Enable */ + } SSIFCR_b; + }; + + union + { + __IOM uint32_t SSIFSR; /*!< (@ 0x00000014) FIFO Status Register */ + + struct + { + __IOM uint32_t RDF : 1; /*!< [0..0] Receive Data Full Flag NOTE: Since the SSIFRDR register + * is a 32-byte FIFO register, the maximum number of data + * bytes that can be read from it while the RDF flag is 1 + * is indicated in the RDC[3:0] flags. If reading data from + * the SSIFRDR register is continued after all the data is + * read, undefined values will be read. */ + uint32_t : 7; + __IM uint32_t RDC : 6; /*!< [13..8] Receive Data Indicate Flag(Indicates the number of data + * units stored in SSIFRDR) */ + uint32_t : 2; + __IOM uint32_t TDE : 1; /*!< [16..16] Transmit Data Empty Flag NOTE: Since the SSIFTDR register + * is a 32-byte FIFO register, the maximum number of bytes + * that can be written to it while the TDE flag is 1 is 8 + * - TDC[3:0]. If writing data to the SSIFTDR register is + * continued after all the data is written, writing will be + * invalid and an overflow occurs. */ + uint32_t : 7; + __IM uint32_t TDC : 6; /*!< [29..24] Transmit Data Indicate Flag(Indicates the number of + * data units stored in SSIFTDR) */ + uint32_t : 2; + } SSIFSR_b; + }; + + union + { + union + { + __OM uint32_t SSIFTDR; /*!< (@ 0x00000018) Transmit FIFO Data Register */ + + struct + { + __OM uint32_t SSIFTDR : 32; /*!< [31..0] SSIFTDR is a write-only FIFO register consisting of + * eight stages of 32-bit registers for storing data to be + * serially transmitted. NOTE: that when the SSIFTDR register + * is full of data (32 bytes), the next data cannot be written + * to it. If writing is attempted, it will be ignored and + * an overflow occurs. */ + } SSIFTDR_b; + }; + __OM uint16_t SSIFTDR16; /*!< (@ 0x00000018) Transmit FIFO Data Register */ + __OM uint8_t SSIFTDR8; /*!< (@ 0x00000018) Transmit FIFO Data Register */ + }; + + union + { + union + { + __IM uint32_t SSIFRDR; /*!< (@ 0x0000001C) Receive FIFO Data Register */ + + struct + { + __IM uint32_t SSIFRDR : 32; /*!< [31..0] SSIFRDR is a read-only FIFO register consisting of eight + * stages of 32-bit registers for storing serially received + * data. */ + } SSIFRDR_b; + }; + __IM uint16_t SSIFRDR16; /*!< (@ 0x0000001C) Receive FIFO Data Register */ + __IM uint8_t SSIFRDR8; /*!< (@ 0x0000001C) Receive FIFO Data Register */ + }; + + union + { + __IOM uint32_t SSIOFR; /*!< (@ 0x00000020) Audio Format Register */ + + struct + { + __IOM uint32_t OMOD : 2; /*!< [1..0] Audio Format Select */ + uint32_t : 6; + __IOM uint32_t LRCONT : 1; /*!< [8..8] Whether to Enable LRCK/FS Continuation */ + __IOM uint32_t BCKASTP : 1; /*!< [9..9] Whether to Enable Stopping BCK Output When SSIE is in + * Idle Status */ + uint32_t : 22; + } SSIOFR_b; + }; + + union + { + __IOM uint32_t SSISCR; /*!< (@ 0x00000024) Status Control Register */ + + struct + { + __IOM uint32_t RDFS : 5; /*!< [4..0] RDF Setting Condition Select */ + uint32_t : 3; + __IOM uint32_t TDES : 5; /*!< [12..8] TDE Setting Condition Select */ + uint32_t : 19; + } SSISCR_b; + }; +} R_SSI0_Type; /*!< Size = 40 (0x28) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSTEM ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System Pins (R_SYSTEM) + */ + +typedef struct /*!< (@ 0x4001E000) R_SYSTEM Structure */ +{ + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint8_t SBYCR; /*!< (@ 0x0000000C) Standby Control Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t OPE : 1; /*!< [6..6] Output Port Enable */ + uint8_t : 1; + } SBYCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t SSCR2; /*!< (@ 0x0000000E) Software Standby Control Register 2 */ + + struct + { + __IM uint8_t SS1RSF : 1; /*!< [0..0] Software Standby 1 regulator status flag */ + uint8_t : 7; + } SSCR2_b; + }; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t FLSCR; /*!< (@ 0x00000010) Flash Standby Control Register */ + + struct + { + __IOM uint8_t FLSWCF : 1; /*!< [0..0] Flash Stabilization wait completion flag */ + uint8_t : 7; + } FLSCR_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x0000001C) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPA0 : 1; /*!< [0..0] Module stop bit 0. See device hardware manual for usage. */ + __IOM uint32_t MSTPA1 : 1; /*!< [1..1] Module stop bit 1. See device hardware manual for usage. */ + __IOM uint32_t MSTPA2 : 1; /*!< [2..2] Module stop bit 2. See device hardware manual for usage. */ + __IOM uint32_t MSTPA3 : 1; /*!< [3..3] Module stop bit 3. See device hardware manual for usage. */ + __IOM uint32_t MSTPA4 : 1; /*!< [4..4] Module stop bit 4. See device hardware manual for usage. */ + __IOM uint32_t MSTPA5 : 1; /*!< [5..5] Module stop bit 5. See device hardware manual for usage. */ + __IOM uint32_t MSTPA6 : 1; /*!< [6..6] Module stop bit 6. See device hardware manual for usage. */ + __IOM uint32_t MSTPA7 : 1; /*!< [7..7] Module stop bit 7. See device hardware manual for usage. */ + __IOM uint32_t MSTPA8 : 1; /*!< [8..8] Module stop bit 8. See device hardware manual for usage. */ + __IOM uint32_t MSTPA9 : 1; /*!< [9..9] Module stop bit 9. See device hardware manual for usage. */ + __IOM uint32_t MSTPA10 : 1; /*!< [10..10] Module stop bit 10. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA11 : 1; /*!< [11..11] Module stop bit 11. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA12 : 1; /*!< [12..12] Module stop bit 12. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA13 : 1; /*!< [13..13] Module stop bit 13. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA14 : 1; /*!< [14..14] Module stop bit 14. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA15 : 1; /*!< [15..15] Module stop bit 15. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA16 : 1; /*!< [16..16] Module stop bit 16. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA17 : 1; /*!< [17..17] Module stop bit 17. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA18 : 1; /*!< [18..18] Module stop bit 18. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA19 : 1; /*!< [19..19] Module stop bit 19. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA20 : 1; /*!< [20..20] Module stop bit 20. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA21 : 1; /*!< [21..21] Module stop bit 21. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA22 : 1; /*!< [22..22] Module stop bit 22. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA23 : 1; /*!< [23..23] Module stop bit 23. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA24 : 1; /*!< [24..24] Module stop bit 24. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA25 : 1; /*!< [25..25] Module stop bit 25. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA26 : 1; /*!< [26..26] Module stop bit 26. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA27 : 1; /*!< [27..27] Module stop bit 27. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA28 : 1; /*!< [28..28] Module stop bit 28. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA29 : 1; /*!< [29..29] Module stop bit 29. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA30 : 1; /*!< [30..30] Module stop bit 30. See device hardware manual for + * usage. */ + __IOM uint32_t MSTPA31 : 1; /*!< [31..31] Module stop bit 31. See device hardware manual for + * usage. */ + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t SCKDIVCR; /*!< (@ 0x00000020) System Clock Division Control Register */ + + struct + { + __IOM uint32_t PCKD : 4; /*!< [3..0] Peripheral Module Clock D (PCLKD) Select */ + __IOM uint32_t PCKC : 4; /*!< [7..4] Peripheral Module Clock C (PCLKC) Select */ + __IOM uint32_t PCKB : 4; /*!< [11..8] Peripheral Module Clock B (PCLKB) Select */ + __IOM uint32_t PCKA : 4; /*!< [15..12] Peripheral Module Clock A (PCLKA) Select */ + __IOM uint32_t BCK : 4; /*!< [19..16] External Bus Clock (BCLK) Select */ + __IOM uint32_t PCKE : 4; /*!< [23..20] Peripheral Module Clock E (PCLKE) Select */ + __IOM uint32_t ICK : 4; /*!< [27..24] System Clock (ICLK) Select */ + __IOM uint32_t FCK : 4; /*!< [31..28] Flash IF Clock (FCLK) Select */ + } SCKDIVCR_b; + }; + + union + { + __IOM uint8_t SCKDIVCR2; /*!< (@ 0x00000024) System Clock Division Control Register 2 */ + + struct + { + __IOM uint8_t CPUCK : 4; /*!< [3..0] CPU Clock (CPUCLK) Select */ + uint8_t : 4; + } SCKDIVCR2_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint8_t SCKSCR; /*!< (@ 0x00000026) System Clock Source Control Register */ + + struct + { + __IOM uint8_t CKSEL : 3; /*!< [2..0] Clock Source Select */ + uint8_t : 5; + } SCKSCR_b; + }; + __IM uint8_t RESERVED7; + + union + { + __IOM uint16_t PLLCCR; /*!< (@ 0x00000028) PLL Clock Control Register */ + + struct + { + __IOM uint16_t PLIDIV : 2; /*!< [1..0] PLL1 Input Frequency Division Ratio Select */ + uint16_t : 2; + __IOM uint16_t PLSRCSEL : 1; /*!< [4..4] PLL1 Clock Source Select */ + uint16_t : 1; + __IOM uint16_t PLLMULNF : 2; /*!< [7..6] PLL1 Frequency Multiplication Fractional Factor Select */ + __IOM uint16_t PLLMUL : 8; /*!< [15..8] PLL1 Frequency Multiplication Factor Select */ + } PLLCCR_b; + }; + + union + { + __IOM uint8_t PLLCR; /*!< (@ 0x0000002A) PLL Control Register */ + + struct + { + __IOM uint8_t PLLSTP : 1; /*!< [0..0] PLL Stop Control */ + uint8_t : 7; + } PLLCR_b; + }; + __IM uint8_t RESERVED8; + __IM uint32_t RESERVED9; + + union + { + __IOM uint8_t BCKCR; /*!< (@ 0x00000030) External Bus Clock Control Register */ + + struct + { + __IOM uint8_t BCLKDIV : 1; /*!< [0..0] BCLK Pin Output Select */ + uint8_t : 7; + } BCKCR_b; + }; + __IM uint8_t RESERVED10; + + union + { + __IOM uint8_t MOSCCR; /*!< (@ 0x00000032) Main Clock Oscillator Control Register */ + + struct + { + __IOM uint8_t MOSTP : 1; /*!< [0..0] Main Clock Oscillator Stop */ + uint8_t : 7; + } MOSCCR_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12; + + union + { + __IOM uint8_t HOCOCR; /*!< (@ 0x00000036) High-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint8_t HCSTP : 1; /*!< [0..0] HOCO Stop */ + uint8_t : 7; + } HOCOCR_b; + }; + __IM uint8_t RESERVED13; + + union + { + __IOM uint8_t MOCOCR; /*!< (@ 0x00000038) Middle-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint8_t MCSTP : 1; /*!< [0..0] MOCO Stop */ + uint8_t : 7; + } MOCOCR_b; + }; + + union + { + __IOM uint8_t FLLCR1; /*!< (@ 0x00000039) FLL Control Register 1 */ + + struct + { + __IOM uint8_t FLLEN : 1; /*!< [0..0] FLL Enable */ + uint8_t : 7; + } FLLCR1_b; + }; + + union + { + __IOM uint16_t FLLCR2; /*!< (@ 0x0000003A) FLL Control Register 2 */ + + struct + { + __IOM uint16_t FLLCNTL : 11; /*!< [10..0] FLL Multiplication Control */ + uint16_t : 5; + } FLLCR2_b; + }; + + union + { + __IM uint8_t OSCSF; /*!< (@ 0x0000003C) Oscillation Stabilization Flag Register */ + + struct + { + __IM uint8_t HOCOSF : 1; /*!< [0..0] HOCO Clock Oscillation Stabilization FlagNOTE: The HOCOSF + * bit value after a reset is 1 when the OFS1.HOCOEN bit is + * 0. It is 0 when the OFS1.HOCOEN bit is 1. */ + uint8_t : 2; + __IM uint8_t MOSCSF : 1; /*!< [3..3] Main Clock Oscillation Stabilization Flag */ + uint8_t : 1; + __IM uint8_t PLLSF : 1; /*!< [5..5] PLL1 Clock Oscillation Stabilization Flag */ + __IM uint8_t PLL2SF : 1; /*!< [6..6] PLL2 Clock Oscillation Stabilization Flag */ + uint8_t : 1; + } OSCSF_b; + }; + __IM uint8_t RESERVED14; + + union + { + __IOM uint8_t CKOCR; /*!< (@ 0x0000003E) Clock Out Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t CKODIV : 3; /*!< [6..4] Clock out input frequency Division Select */ + __IOM uint8_t CKOEN : 1; /*!< [7..7] Clock out enable */ + } CKOCR_b; + }; + + union + { + __IOM uint8_t TRCKCR; /*!< (@ 0x0000003F) Trace Clock Control Register */ + + struct + { + __IOM uint8_t TRCK : 4; /*!< [3..0] Trace Clock operating frequency select */ + __IOM uint8_t TRCKSEL : 1; /*!< [4..4] Trace Clock source select */ + uint8_t : 2; + __IOM uint8_t TRCKEN : 1; /*!< [7..7] Trace Clock operating Enable */ + } TRCKCR_b; + }; + + union + { + __IOM uint8_t OSTDCR; /*!< (@ 0x00000040) Oscillation Stop Detection Control Register */ + + struct + { + __IOM uint8_t OSTDIE : 1; /*!< [0..0] Oscillation Stop Detection Interrupt Enable */ + uint8_t : 6; + __IOM uint8_t OSTDE : 1; /*!< [7..7] Oscillation Stop Detection Function Enable */ + } OSTDCR_b; + }; + + union + { + __IOM uint8_t OSTDSR; /*!< (@ 0x00000041) Oscillation Stop Detection Status Register */ + + struct + { + __IOM uint8_t OSTDF : 1; /*!< [0..0] Oscillation Stop Detection Flag */ + uint8_t : 7; + } OSTDSR_b; + }; + __IM uint8_t RESERVED15; + + union + { + __IM uint8_t OSCMONR; /*!< (@ 0x00000043) Oscillator Monitor Register */ + + struct + { + uint8_t : 1; + __IM uint8_t MOCOMON : 1; /*!< [1..1] MOCO operation monitor */ + __IM uint8_t LOCOMON : 1; /*!< [2..2] LOCO operation monitor */ + uint8_t : 5; + } OSCMONR_b; + }; + __IM uint32_t RESERVED16; + + union + { + __IOM uint16_t PLL2CCR; /*!< (@ 0x00000048) PLL2 Clock Control Register */ + + struct + { + __IOM uint16_t PL2IDIV : 2; /*!< [1..0] PLL2 Input Frequency Division Ratio Select */ + uint16_t : 2; + __IOM uint16_t PL2SRCSEL : 1; /*!< [4..4] PLL Clock Source Select */ + uint16_t : 1; + __IOM uint16_t PLL2MULNF : 2; /*!< [7..6] PLL2 Frequency Multiplication Fractional Factor Select */ + __IOM uint16_t PLL2MUL : 8; /*!< [15..8] PLL2 Frequency Multiplication Factor Select */ + } PLL2CCR_b; + }; + + union + { + __IOM uint8_t PLL2CR; /*!< (@ 0x0000004A) PLL2 Control Register */ + + struct + { + __IOM uint8_t PLL2STP : 1; /*!< [0..0] PLL2 Stop Control */ + uint8_t : 7; + } PLL2CR_b; + }; + __IM uint8_t RESERVED17; + + union + { + __IOM uint16_t PLLCCR2; /*!< (@ 0x0000004C) PLL Clock Control Register 2 */ + + struct + { + __IOM uint16_t PLODIVP : 4; /*!< [3..0] PLL1 Output Frequency Division Ratio Select for output + * clock P */ + __IOM uint16_t PLODIVQ : 4; /*!< [7..4] PLL1 Output Frequency Division Ratio Select for output + * clock Q */ + __IOM uint16_t PLODIVR : 4; /*!< [11..8] PLL1 Output Frequency Division Ratio Select for output + * clock R */ + uint16_t : 4; + } PLLCCR2_b; + }; + + union + { + __IOM uint16_t PLL2CCR2; /*!< (@ 0x0000004E) PLL2 Clock Control Register 2 */ + + struct + { + __IOM uint16_t PL2ODIVP : 4; /*!< [3..0] PLL2 Output Frequency Division Ratio Select for output + * clock P */ + __IOM uint16_t PL2ODIVQ : 4; /*!< [7..4] PLL2 Output Frequency Division Ratio Select for output + * clock Q */ + __IOM uint16_t PL2ODIVR : 4; /*!< [11..8] PLL2 Output Frequency Division Ratio Select for output + * clock R */ + uint16_t : 4; + } PLL2CCR2_b; + }; + __IM uint16_t RESERVED18; + + union + { + __IOM uint8_t EBCKOCR; /*!< (@ 0x00000052) External Bus Clock Output Control Register */ + + struct + { + __IOM uint8_t EBCKOEN : 1; /*!< [0..0] BCLK Pin Output Control */ + uint8_t : 7; + } EBCKOCR_b; + }; + + union + { + __IOM uint8_t SDCKOCR; /*!< (@ 0x00000053) SDRAM Clock Output Control Register */ + + struct + { + __IOM uint8_t SDCKOEN : 1; /*!< [0..0] SDCLK Pin Output Control */ + uint8_t : 7; + } SDCKOCR_b; + }; + + union + { + __IOM uint8_t SCICKDIVCR; /*!< (@ 0x00000054) SCI clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } SCICKDIVCR_b; + }; + + union + { + __IOM uint8_t SCICKCR; /*!< (@ 0x00000055) SCI clock control register */ + + struct + { + __IOM uint8_t SCICKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } SCICKCR_b; + }; + + union + { + __IOM uint8_t SPICKDIVCR; /*!< (@ 0x00000056) SPI clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } SPICKDIVCR_b; + }; + + union + { + __IOM uint8_t SPICKCR; /*!< (@ 0x00000057) SPI clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } SPICKCR_b; + }; + __IM uint16_t RESERVED19; + + union + { + __IOM uint8_t ADCCKDIVCR; /*!< (@ 0x0000005A) ADC clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } ADCCKDIVCR_b; + }; + + union + { + __IOM uint8_t ADCCKCR; /*!< (@ 0x0000005B) ADC clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } ADCCKCR_b; + }; + + union + { + __IOM uint8_t GPTCKDIVCR; /*!< (@ 0x0000005C) GPT clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } GPTCKDIVCR_b; + }; + + union + { + __IOM uint8_t GPTCKCR; /*!< (@ 0x0000005D) GPT clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } GPTCKCR_b; + }; + + union + { + __IOM uint8_t LCDCKDIVCR; /*!< (@ 0x0000005E) LCD clock Division control register */ + + struct + { + __IOM uint8_t CKDIV : 3; /*!< [2..0] Clock Division Select */ + uint8_t : 5; + } LCDCKDIVCR_b; + }; + + union + { + __IOM uint8_t LCDCKCR; /*!< (@ 0x0000005F) LCD clock control register */ + + struct + { + __IOM uint8_t CKSEL : 4; /*!< [3..0] Clock Source Select */ + uint8_t : 2; + __IOM uint8_t CKSREQ : 1; /*!< [6..6] Clock Switching Request */ + __IM uint8_t CKSRDY : 1; /*!< [7..7] Clock Switching Ready state flag */ + } LCDCKCR_b; + }; + __IM uint8_t RESERVED20; + + union + { + __IOM uint8_t MOCOUTCR; /*!< (@ 0x00000061) MOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t MOCOUTRM : 8; /*!< [7..0] MOCO User Trimming 1000_0000 : -128 1000_0001 : -127 + * 1000_0010 : -126 . . . 1111_1111 : -1 0000_0000 : Center + * Code 0000_0001 : +1 . . . 0111_1101 : +125 0111_1110 : + +126 0111_1111 : +127These bits are added to original MOCO + * trimming bits */ + } MOCOUTCR_b; + }; + + union + { + __IOM uint8_t HOCOUTCR; /*!< (@ 0x00000062) HOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t HOCOUTRM : 8; /*!< [7..0] HOCO User Trimming 1000_0000 : -128 1000_0001 : -127 + * 1000_0010 : -126 . . . 1111_1111 : -1 0000_0000 : Center + * Code 0000_0001 : +1 . . . 0111_1101 : +125 0111_1110 : + +126 0111_1111 : +127These bits are added to original HOCO + * trimming bits */ + } HOCOUTCR_b; + }; + __IM uint8_t RESERVED21; + __IM uint32_t RESERVED22[2]; + + union + { + __IOM uint8_t USBCKDIVCR; /*!< (@ 0x0000006C) USB clock Division control register */ + + struct + { + __IOM uint8_t USBCKDIV : 3; /*!< [2..0] USB clock (USBCLK) Division Select */ + uint8_t : 5; + } USBCKDIVCR_b; + }; + + union + { + __IOM uint8_t OCTACKDIVCR; /*!< (@ 0x0000006D) Octal-SPI clock Division control register */ + + struct + { + __IOM uint8_t OCTACKDIV : 3; /*!< [2..0] Octal-SPI clock (OCTACLK) Division Select */ + uint8_t : 5; + } OCTACKDIVCR_b; + }; + + union + { + __IOM uint8_t CANFDCKDIVCR; /*!< (@ 0x0000006E) CANFD Core clock Division control register */ + + struct + { + __IOM uint8_t CANFDCKDIV : 3; /*!< [2..0] CANFD Core clock (CANFDCLK) Division Select */ + uint8_t : 5; + } CANFDCKDIVCR_b; + }; + + union + { + __IOM uint8_t USB60CKDIVCR; /*!< (@ 0x0000006F) USB60 clock Division control register */ + + struct + { + __IOM uint8_t USB60CKDIV : 3; /*!< [2..0] USB clock (USB60CLK) Division Select */ + uint8_t : 5; + } USB60CKDIVCR_b; + }; + + union + { + __IOM uint8_t I3CCKDIVCR; /*!< (@ 0x00000070) I3C clock Division control register */ + + struct + { + __IOM uint8_t I3CCKDIV : 3; /*!< [2..0] I3C clock (I3CCLK) Division Select */ + uint8_t : 5; + } I3CCKDIVCR_b; + }; + __IM uint8_t RESERVED23; + __IM uint16_t RESERVED24; + + union + { + __IOM uint8_t USBCKCR; /*!< (@ 0x00000074) USB clock control register */ + + struct + { + __IOM uint8_t USBCKSEL : 4; /*!< [3..0] USB clock (USBCLK) Source Select */ + uint8_t : 2; + __IOM uint8_t USBCKSREQ : 1; /*!< [6..6] USB clock (USBCLK) Switching Request */ + __IOM uint8_t USBCKSRDY : 1; /*!< [7..7] USB clock (USBCLK) Switching Ready state flag */ + } USBCKCR_b; + }; + + union + { + __IOM uint8_t OCTACKCR; /*!< (@ 0x00000075) Octal-SPI clock control register */ + + struct + { + __IOM uint8_t OCTACKSEL : 4; /*!< [3..0] Octal-SPI clock (OCTACLK) Source Select */ + uint8_t : 2; + __IOM uint8_t OCTACKSREQ : 1; /*!< [6..6] Octal-SPI clock (OCTACLK) Switching Request */ + __IOM uint8_t OCTACKSRDY : 1; /*!< [7..7] Octal-SPI clock (OCTACLK) Switching Ready state flag */ + } OCTACKCR_b; + }; + + union + { + __IOM uint8_t CANFDCKCR; /*!< (@ 0x00000076) CANFD Core clock control register */ + + struct + { + __IOM uint8_t CANFDCKSEL : 4; /*!< [3..0] CANFD Core clock (CANFDCLK) Source Select */ + uint8_t : 2; + __IOM uint8_t CANFDCKSREQ : 1; /*!< [6..6] CANFD Core clock (CANFDCLK) Switching Request */ + __IOM uint8_t CANFDCKSRDY : 1; /*!< [7..7] CANFD Core clock (CANFDCLK) Switching Ready state flag */ + } CANFDCKCR_b; + }; + + union + { + __IOM uint8_t USB60CKCR; /*!< (@ 0x00000077) USB60 clock control register */ + + struct + { + __IOM uint8_t USB60CKSEL : 4; /*!< [3..0] USB clock (USB60CLK) Source Select */ + uint8_t : 2; + __IOM uint8_t USB60CKSREQ : 1; /*!< [6..6] USB clock (USB60CLK) Switching Request */ + __IOM uint8_t USB60CKSRDY : 1; /*!< [7..7] USB clock (USB60CLK) Switching Ready state flag */ + } USB60CKCR_b; + }; + + union + { + __IOM uint8_t I3CCKCR; /*!< (@ 0x00000078) I3C clock control register */ + + struct + { + __IOM uint8_t I3CCKSEL : 4; /*!< [3..0] I3C clock (I3CCLK) Source Select */ + uint8_t : 2; + __IOM uint8_t I3CCKREQ : 1; /*!< [6..6] I3C clock (I3CCLK) Switching Request */ + __IOM uint8_t I3CCKSRDY : 1; /*!< [7..7] I3C clock (I3CCLK) Switching Ready state flag */ + } I3CCKCR_b; + }; + __IM uint8_t RESERVED25; + __IM uint16_t RESERVED26; + + union + { + __IOM uint8_t MOSCSCR; /*!< (@ 0x0000007C) Main Clock Oscillator Standby Control Register */ + + struct + { + __IOM uint8_t MOSCSOKP : 1; /*!< [0..0] Main Clock Oscillator Standby Oscillation Keep select */ + uint8_t : 7; + } MOSCSCR_b; + }; + + union + { + __IOM uint8_t HOCOSCR; /*!< (@ 0x0000007D) High-Speed On-Chip Oscillator Standby Control + * Register */ + + struct + { + __IOM uint8_t HOCOSOKP : 1; /*!< [0..0] HOCO Standby Oscillation Keep select */ + uint8_t : 7; + } HOCOSCR_b; + }; + __IM uint16_t RESERVED27; + __IM uint32_t RESERVED28[2]; + + union + { + __IOM uint32_t SNZREQCR1; /*!< (@ 0x00000088) Snooze Request Control Register 1 */ + + struct + { + __IOM uint32_t SNZREQEN0 : 1; /*!< [0..0] Enable AGT0 underflow snooze request */ + __IOM uint32_t SNZREQEN1 : 1; /*!< [1..1] Enable AGT1 underflow snooze request */ + __IOM uint32_t SNZREQEN2 : 1; /*!< [2..2] Enable AGT2 underflow snooze request */ + uint32_t : 29; + } SNZREQCR1_b; + }; + __IM uint32_t RESERVED29; + __IM uint16_t RESERVED30; + + union + { + __IOM uint8_t SNZCR; /*!< (@ 0x00000092) Snooze Control Register */ + + struct + { + __IOM uint8_t RXDREQEN : 1; /*!< [0..0] RXD0 Snooze Request Enable NOTE: Do not set to 1 other + * than in asynchronous mode. */ + __IOM uint8_t SNZDTCEN : 1; /*!< [1..1] DTC Enable in Snooze Mode */ + uint8_t : 5; + __IOM uint8_t SNZE : 1; /*!< [7..7] Snooze Mode Enable */ + } SNZCR_b; + }; + __IM uint8_t RESERVED31; + + union + { + __IOM uint8_t SNZEDCR; /*!< (@ 0x00000094) Snooze End Control Register */ + + struct + { + __IOM uint8_t AGT1UNFED : 1; /*!< [0..0] AGT1 underflow Snooze End Enable */ + __IOM uint8_t DTCZRED : 1; /*!< [1..1] Last DTC transmission completion Snooze End Enable */ + __IOM uint8_t DTCNZRED : 1; /*!< [2..2] Not Last DTC transmission completion Snooze End Enable */ + __IOM uint8_t AD0MATED : 1; /*!< [3..3] AD compare match 0 Snooze End Enable */ + __IOM uint8_t AD0UMTED : 1; /*!< [4..4] AD compare mismatch 0 Snooze End Enable */ + __IOM uint8_t AD1MATED : 1; /*!< [5..5] AD compare match 1 Snooze End Enable */ + __IOM uint8_t AD1UMTED : 1; /*!< [6..6] AD compare mismatch 1 Snooze End Enable */ + __IOM uint8_t SCI0UMTED : 1; /*!< [7..7] SCI0 address unmatch Snooze End EnableNote: Do not set + * to 1 other than in asynchronous mode. */ + } SNZEDCR_b; + }; + + union + { + __IOM uint8_t SNZEDCR1; /*!< (@ 0x00000095) Snooze End Control Register 1 */ + + struct + { + __IOM uint8_t AGT3UNFED : 1; /*!< [0..0] AGT3 underflow Snooze End Enable */ + uint8_t : 7; + } SNZEDCR1_b; + }; + __IM uint16_t RESERVED32; + + union + { + __IOM uint32_t SNZREQCR; /*!< (@ 0x00000098) Snooze Request Control Register */ + + struct + { + __IOM uint32_t SNZREQEN0 : 1; /*!< [0..0] Snooze Request Enable 0. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN1 : 1; /*!< [1..1] Snooze Request Enable 1. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN2 : 1; /*!< [2..2] Snooze Request Enable 2. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN3 : 1; /*!< [3..3] Snooze Request Enable 3. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN4 : 1; /*!< [4..4] Snooze Request Enable 4. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN5 : 1; /*!< [5..5] Snooze Request Enable 5. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN6 : 1; /*!< [6..6] Snooze Request Enable 6. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN7 : 1; /*!< [7..7] Snooze Request Enable 7. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN8 : 1; /*!< [8..8] Snooze Request Enable 8. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN9 : 1; /*!< [9..9] Snooze Request Enable 9. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN10 : 1; /*!< [10..10] Snooze Request Enable 10. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN11 : 1; /*!< [11..11] Snooze Request Enable 11. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN12 : 1; /*!< [12..12] Snooze Request Enable 12. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN13 : 1; /*!< [13..13] Snooze Request Enable 13. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN14 : 1; /*!< [14..14] Snooze Request Enable 14. Enable IRQ pin snooze request */ + __IOM uint32_t SNZREQEN15 : 1; /*!< [15..15] Snooze Request Enable 15. Enable IRQ pin snooze request */ + uint32_t : 1; + __IOM uint32_t SNZREQEN17 : 1; /*!< [17..17] Snooze Request Enable 17 Enable KR snooze request */ + uint32_t : 4; + __IOM uint32_t SNZREQEN22 : 1; /*!< [22..22] Snooze Request Enable 22 Enable Comparator-HS0 snooze + * request */ + __IOM uint32_t SNZREQEN23 : 1; /*!< [23..23] Snooze Request Enable 23 Enable Comparator-LP0 snooze + * request */ + __IOM uint32_t SNZREQEN24 : 1; /*!< [24..24] Snooze Request Enable 24 Enable RTC alarm snooze request */ + __IOM uint32_t SNZREQEN25 : 1; /*!< [25..25] Snooze Request Enable 25 Enable RTC period snooze request */ + uint32_t : 2; + __IOM uint32_t SNZREQEN28 : 1; /*!< [28..28] Snooze Request Enable 28 Enable AGT1 underflow snooze + * request */ + __IOM uint32_t SNZREQEN29 : 1; /*!< [29..29] Snooze Request Enable 29 Enable AGT1 compare match + * A snooze request */ + __IOM uint32_t SNZREQEN30 : 1; /*!< [30..30] Snooze Request Enable 30 Enable AGT1 compare match + * B snooze request */ + uint32_t : 1; + } SNZREQCR_b; + }; + __IM uint32_t RESERVED33; + + union + { + __IOM uint8_t OPCCR; /*!< (@ 0x000000A0) Operating Power Control Register */ + + struct + { + __IOM uint8_t OPCM : 2; /*!< [1..0] Operating Power Control Mode Select */ + uint8_t : 2; + __IM uint8_t OPCMTSF : 1; /*!< [4..4] Operating Power Control Mode Transition Status Flag */ + uint8_t : 3; + } OPCCR_b; + }; + __IM uint8_t RESERVED34; + + union + { + __IOM uint8_t MOSCWTCR; /*!< (@ 0x000000A2) Main Clock Oscillator Wait Control Register */ + + struct + { + __IOM uint8_t MSTS : 4; /*!< [3..0] Main clock oscillator wait time setting */ + uint8_t : 4; + } MOSCWTCR_b; + }; + __IM uint8_t RESERVED35[2]; + + union + { + __IOM uint8_t HOCOWTCR; /*!< (@ 0x000000A5) High-speed on-chip oscillator wait control register */ + + struct + { + __IOM uint8_t HSTS : 3; /*!< [2..0] HOCO wait time settingWaiting time (sec) = setting of + * the HSTS[2:0] bits/fLOCO(Trimmed) + 3/fLOC(Untrimmed) */ + uint8_t : 5; + } HOCOWTCR_b; + }; + __IM uint16_t RESERVED36[2]; + + union + { + __IOM uint8_t SOPCCR; /*!< (@ 0x000000AA) Sub Operating Power Control Register */ + + struct + { + __IOM uint8_t SOPCM : 1; /*!< [0..0] Sub Operating Power Control Mode Select */ + uint8_t : 3; + __IM uint8_t SOPCMTSF : 1; /*!< [4..4] Sub Operating Power Control Mode Transition Status Flag */ + uint8_t : 3; + } SOPCCR_b; + }; + __IM uint8_t RESERVED37; + __IM uint32_t RESERVED38[5]; + + union + { + __IOM uint32_t RSTSR1; /*!< (@ 0x000000C0) Reset Status Register 1 */ + + struct + { + __IOM uint32_t IWDTRF : 1; /*!< [0..0] Independent Watchdog Timer Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + __IOM uint32_t WDTRF : 1; /*!< [1..1] Watchdog Timer0 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint32_t SWRF : 1; /*!< [2..2] Software Reset Detect Flag. NOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + uint32_t : 1; + __IOM uint32_t CLU0RF : 1; /*!< [4..4] CPU0 Lockup Reset Detect Flag. NOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + __IOM uint32_t LM0RF : 1; /*!< [5..5] Local memory 0 error Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + uint32_t : 4; + __IOM uint32_t BUSRF : 1; /*!< [10..10] Bus error Reset Detect Flag. NOTE: Writable only to + * clear the flag. Confirm the value is 1 and then write 0. */ + uint32_t : 3; + __IOM uint32_t CMRF : 1; /*!< [14..14] Common memory error Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + uint32_t : 2; + __IOM uint32_t WDT1RF : 1; /*!< [17..17] Watchdog Timer1 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + uint32_t : 2; + __IOM uint32_t CLU1RF : 1; /*!< [20..20] CPU1 Lockup Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint32_t LM1RF : 1; /*!< [21..21] Local memory 1 error Reset Detect Flag. NOTE: Writable + * only to clear the flag. Confirm the value is 1 and then + * write 0. */ + __IOM uint32_t NWRF : 1; /*!< [22..22] Network Reset Detect Flag. NOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + uint32_t : 9; + } RSTSR1_b; + }; + __IM uint32_t RESERVED39[2]; + + union + { + __IOM uint8_t SYRACCR; /*!< (@ 0x000000CC) System Register Access Control Register */ + + struct + { + __IOM uint8_t BUSY : 1; /*!< [0..0] Access Ready monitor */ + uint8_t : 7; + } SYRACCR_b; + }; + __IM uint8_t RESERVED40; + __IM uint16_t RESERVED41; + __IM uint32_t RESERVED42[4]; + + union + { + __IOM uint8_t LVD1CR1; /*!< (@ 0x000000E0) Voltage Monitor 1 Circuit Control Register 1 */ + + struct + { + __IOM uint8_t IDTSEL : 2; /*!< [1..0] Voltage Monitor Interrupt Generation Condition Select */ + __IOM uint8_t IRQSEL : 1; /*!< [2..2] Voltage Monitor Interrupt Type Select */ + uint8_t : 5; + } LVD1CR1_b; + }; + + union + { + __IOM uint8_t LVD1SR; /*!< (@ 0x000000E1) Voltage Monitor 1 Circuit Status Register */ + + struct + { + __IOM uint8_t DET : 1; /*!< [0..0] Voltage Monitor Voltage Change Detection Flag NOTE: Only + * 0 can be written to this bit. After writing 0 to this bit, + * it takes 2 system clock cycles for the bit to be read as + * 0. */ + __IM uint8_t MON : 1; /*!< [1..1] Voltage Monitor Signal Monitor Flag */ + uint8_t : 6; + } LVD1SR_b; + }; + + union + { + __IOM uint8_t LVD2CR1; /*!< (@ 0x000000E2) Voltage Monitor 2 Circuit Control Register 1 */ + + struct + { + __IOM uint8_t IDTSEL : 2; /*!< [1..0] Voltage Monitor Interrupt Generation Condition Select */ + __IOM uint8_t IRQSEL : 1; /*!< [2..2] Voltage Monitor Interrupt Type Select */ + uint8_t : 5; + } LVD2CR1_b; + }; + + union + { + __IOM uint8_t LVD2SR; /*!< (@ 0x000000E3) Voltage Monitor 2 Circuit Status Register */ + + struct + { + __IOM uint8_t DET : 1; /*!< [0..0] Voltage Monitor Voltage Change Detection Flag NOTE: Only + * 0 can be written to this bit. After writing 0 to this bit, + * it takes 2 system clock cycles for the bit to be read as + * 0. */ + __IM uint8_t MON : 1; /*!< [1..1] Voltage Monitor Signal Monitor Flag */ + uint8_t : 6; + } LVD2SR_b; + }; + __IM uint32_t RESERVED43[3]; + + union + { + __IOM uint8_t CRVSYSCR; /*!< (@ 0x000000F0) Clock Recovery System Control Register */ + + struct + { + __IOM uint8_t CRVEN : 1; /*!< [0..0] Clock Recovery Enable */ + uint8_t : 7; + } CRVSYSCR_b; + }; + __IM uint8_t RESERVED44; + __IM uint16_t RESERVED45; + __IM uint32_t RESERVED46[7]; + + union + { + __IOM uint8_t PDCTRGD; /*!< (@ 0x00000110) Graphics Power Domain Control Register */ + + struct + { + __IOM uint8_t PDDE : 1; /*!< [0..0] Power control enable */ + uint8_t : 5; + __IM uint8_t PDCSF : 1; /*!< [6..6] Power control status flag */ + __IM uint8_t PDPGSF : 1; /*!< [7..7] Power gating status flag */ + } PDCTRGD_b; + }; + __IM uint8_t RESERVED47; + __IM uint16_t RESERVED48; + __IM uint32_t RESERVED49[11]; + __IOM uint16_t PDRAMSCR0; /*!< (@ 0x00000140) SRAM power domain Standby Control Register 0 */ + __IOM uint8_t PDRAMSCR1; /*!< (@ 0x00000142) SRAM power domain Standby Control Register 1 */ + __IM uint8_t RESERVED50; + __IM uint32_t RESERVED51[155]; + + union + { + __IOM uint16_t VBRSABAR; /*!< (@ 0x000003B0) VBATT Backup Register Security Attribute Boundary + * Address Register */ + + struct + { + __IOM uint16_t SABA : 16; /*!< [15..0] Security Attribute Boundary Address */ + } VBRSABAR_b; + }; + __IM uint16_t RESERVED52; + + union + { + __IOM uint16_t VBRPABARS; /*!< (@ 0x000003B4) VBATT Backup Register Privilege Attribute Boundary + * Address Register for Secure Region */ + + struct + { + __IOM uint16_t PABAS : 16; /*!< [15..0] Privilege Attribute Boundary Address for Secure Region */ + } VBRPABARS_b; + }; + __IM uint16_t RESERVED53; + + union + { + __IOM uint16_t VBRPABARNS; /*!< (@ 0x000003B8) VBATT Backup Register Privilege Attribute Boundary + * Address Register for Non-secure Region */ + + struct + { + __IOM uint16_t PABANS : 16; /*!< [15..0] Privilege Attribute Boundary Address for Non-secure + * Region */ + } VBRPABARNS_b; + }; + __IM uint16_t RESERVED54; + __IM uint32_t RESERVED55; + + union + { + __IOM uint32_t CGFSAR; /*!< (@ 0x000003C0) Clock Generation Function Security Attribute + * Register */ + + struct + { + __IOM uint32_t NONSEC00 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + uint32_t : 1; + __IOM uint32_t NONSEC02 : 1; /*!< [2..2] Non-secure Attribute bit 2 */ + __IOM uint32_t NONSEC03 : 1; /*!< [3..3] Non-secure Attribute bit 3 */ + __IOM uint32_t NONSEC04 : 1; /*!< [4..4] Non-secure Attribute bit 4 */ + __IOM uint32_t NONSEC05 : 1; /*!< [5..5] Non-secure Attribute bit 5 */ + __IOM uint32_t NONSEC06 : 1; /*!< [6..6] Non-secure Attribute bit 6 */ + __IOM uint32_t NONSEC07 : 1; /*!< [7..7] Non-secure Attribute bit 7 */ + __IOM uint32_t NONSEC08 : 1; /*!< [8..8] Non-secure Attribute bit 8 */ + __IOM uint32_t NONSEC09 : 1; /*!< [9..9] Non-secure Attribute bit 9 */ + uint32_t : 1; + __IOM uint32_t NONSEC11 : 1; /*!< [11..11] Non-secure Attribute bit 11 */ + __IOM uint32_t NONSEC12 : 1; /*!< [12..12] Non-secure Attribute bit 12 */ + __IOM uint32_t NONSEC13 : 1; /*!< [13..13] Non-secure Attribute bit 13 */ + uint32_t : 2; + __IOM uint32_t NONSEC16 : 1; /*!< [16..16] Non-secure Attribute bit 16 */ + __IOM uint32_t NONSEC17 : 1; /*!< [17..17] Non-secure Attribute bit 17 */ + __IOM uint32_t NONSEC18 : 1; /*!< [18..18] Non-secure Attribute bit 18 */ + __IOM uint32_t NONSEC19 : 1; /*!< [19..19] Non-secure Attribute bit 19 */ + __IOM uint32_t NONSEC20 : 1; /*!< [20..20] Non-secure Attribute bit 20 */ + __IOM uint32_t NONSEC21 : 1; /*!< [21..21] Non-secure Attribute bit 21 */ + __IOM uint32_t NONSEC22 : 1; /*!< [22..22] Non-secure Attribute bit 22 */ + uint32_t : 1; + __IOM uint32_t NONSEC24 : 1; /*!< [24..24] Non-secure Attribute bit 24 */ + __IOM uint32_t NONSEC25 : 1; /*!< [25..25] Non-secure Attribute bit 25 */ + __IOM uint32_t NONSEC26 : 1; /*!< [26..26] Non-secure Attribute bit 26 */ + uint32_t : 5; + } CGFSAR_b; + }; + + union + { + __IOM uint32_t RSTSAR; /*!< (@ 0x000003C4) Reset Security Attribution Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 1 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 2 */ + __IOM uint32_t NONSEC3 : 1; /*!< [3..3] Non-secure Attribute bit 3 */ + uint32_t : 28; + } RSTSAR_b; + }; + + union + { + __IOM uint32_t LPMSAR; /*!< (@ 0x000003C8) Low Power Mode Security Attribution Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 00 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 01 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 02 */ + __IOM uint32_t NONSEC3 : 1; /*!< [3..3] Non-secure Attribute bit 03 */ + uint32_t : 4; + __IOM uint32_t NONSEC8 : 1; /*!< [8..8] Non-secure Attribute bit 08 */ + uint32_t : 7; + __IOM uint32_t NONSEC16 : 1; /*!< [16..16] Non-secure Attribute bit 16 */ + __IOM uint32_t NONSEC17 : 1; /*!< [17..17] Non-secure Attribute bit 17 */ + __IOM uint32_t NONSEC18 : 1; /*!< [18..18] Non-secure Attribute bit 18 */ + __IOM uint32_t NONSEC19 : 1; /*!< [19..19] Non-secure Attribute bit 19 */ + uint32_t : 1; + __IOM uint32_t NONSEC21 : 1; /*!< [21..21] Non-secure Attribute bit 21 */ + uint32_t : 10; + } LPMSAR_b; + }; + + union + { + __IOM uint32_t LVDSAR; /*!< (@ 0x000003CC) Programable Voltage Detection Security Attribution + * Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 1 */ + uint32_t : 30; + } LVDSAR_b; + }; + + union + { + __IOM uint32_t BBFSAR; /*!< (@ 0x000003D0) Battery Backup Function Security Attribute Register */ + + struct + { + __IOM uint32_t NONSEC0 : 1; /*!< [0..0] Non-secure Attribute bit 0 */ + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 1 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 2 */ + __IOM uint32_t NONSEC3 : 1; /*!< [3..3] Non-secure Attribute bit 3 */ + __IOM uint32_t NONSEC4 : 1; /*!< [4..4] Non-secure Attribute bit 4 */ + uint32_t : 27; + } BBFSAR_b; + }; + __IM uint32_t RESERVED56; + + union + { + __IOM uint32_t PGCSAR; /*!< (@ 0x000003D8) Power Gating Control Security Attribution Register */ + + struct + { + uint32_t : 1; + __IOM uint32_t NONSEC1 : 1; /*!< [1..1] Non-secure Attribute bit 01 */ + __IOM uint32_t NONSEC2 : 1; /*!< [2..2] Non-secure Attribute bit 02 */ + uint32_t : 29; + } PGCSAR_b; + }; + __IM uint32_t RESERVED57; + + union + { + __IOM uint32_t DPFSAR; /*!< (@ 0x000003E0) Deep Standby Interrupt Factor Security Attribution + * Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t DPFSA16 : 1; /*!< [16..16] Deep Standby Interrupt Factor Security Attribute bit + * 16 */ + __IOM uint32_t DPFSA17 : 1; /*!< [17..17] Deep Standby Interrupt Factor Security Attribute bit + * 17 */ + __IOM uint32_t DPFSA18 : 1; /*!< [18..18] Deep Standby Interrupt Factor Security Attribute bit + * 18 */ + __IOM uint32_t DPFSA19 : 1; /*!< [19..19] Deep Standby Interrupt Factor Security Attribute bit + * 19 */ + __IOM uint32_t DPFSA20 : 1; /*!< [20..20] Deep Standby Interrupt Factor Security Attribute bit + * 20 */ + uint32_t : 3; + __IOM uint32_t DPFSA24 : 1; /*!< [24..24] Deep Standby Interrupt Factor Security Attribute bit + * 24 */ + __IOM uint32_t DPFSA25 : 1; /*!< [25..25] Deep Standby Interrupt Factor Security Attribute bit + * 25 */ + __IOM uint32_t DPFSA26 : 1; /*!< [26..26] Deep Standby Interrupt Factor Security Attribute bit + * 26 */ + __IOM uint32_t DPFSA27 : 1; /*!< [27..27] Deep Standby Interrupt Factor Security Attribute bit + * 27 */ + uint32_t : 1; + __IOM uint32_t DPFSA29 : 1; /*!< [29..29] Deep Standby Interrupt Factor Security Attribute bit + * 29 */ + uint32_t : 1; + __IOM uint32_t DPFSA31 : 1; /*!< [31..31] Deep Standby Interrupt Factor Security Attribute bit + * 31 */ + } DPFSAR_b; + }; + + union + { + __IOM uint32_t RSCSAR; /*!< (@ 0x000003E4) RAM Standby Control Security Attribution Register */ + + struct + { + __IOM uint32_t RSCSA0 : 1; /*!< [0..0] RAM Standby Control Security Attribute bit 00 */ + __IOM uint32_t RSCSA1 : 1; /*!< [1..1] RAM Standby Control Security Attribute bit 01 */ + __IOM uint32_t RSCSA2 : 1; /*!< [2..2] RAM Standby Control Security Attribute bit 02 */ + __IOM uint32_t RSCSA3 : 1; /*!< [3..3] RAM Standby Control Security Attribute bit 03 */ + __IOM uint32_t RSCSA4 : 1; /*!< [4..4] RAM Standby Control Security Attribute bit 04 */ + __IOM uint32_t RSCSA5 : 1; /*!< [5..5] RAM Standby Control Security Attribute bit 05 */ + __IOM uint32_t RSCSA6 : 1; /*!< [6..6] RAM Standby Control Security Attribute bit 06 */ + __IOM uint32_t RSCSA7 : 1; /*!< [7..7] RAM Standby Control Security Attribute bit 07 */ + __IOM uint32_t RSCSA8 : 1; /*!< [8..8] RAM Standby Control Security Attribute bit 08 */ + __IOM uint32_t RSCSA9 : 1; /*!< [9..9] RAM Standby Control Security Attribute bit 09 */ + __IOM uint32_t RSCSA10 : 1; /*!< [10..10] RAM Standby Control Security Attribute bit 10 */ + __IOM uint32_t RSCSA11 : 1; /*!< [11..11] RAM Standby Control Security Attribute bit 11 */ + __IOM uint32_t RSCSA12 : 1; /*!< [12..12] RAM Standby Control Security Attribute bit 12 */ + __IOM uint32_t RSCSA13 : 1; /*!< [13..13] RAM Standby Control Security Attribute bit 13 */ + __IOM uint32_t RSCSA14 : 1; /*!< [14..14] RAM Standby Control Security Attribute bit 14 */ + uint32_t : 1; + __IOM uint32_t RSCSA16 : 1; /*!< [16..16] RAM Standby Control Security Attribute bit 16 */ + __IOM uint32_t RSCSA17 : 1; /*!< [17..17] RAM Standby Control Security Attribute bit 17 */ + uint32_t : 14; + } RSCSAR_b; + }; + __IM uint32_t RESERVED58[4]; + __IM uint16_t RESERVED59; + + union + { + __IOM uint16_t PRCR; /*!< (@ 0x000003FA) Protect Register for Secure Register */ + + struct + { + __IOM uint16_t PRC0 : 1; /*!< [0..0] Enables writing to the registers related to the clock + * generation circuit. */ + __IOM uint16_t PRC1 : 1; /*!< [1..1] Enables writing to the registers related to the operating + * modes, the low power modes, and the battery backup function. */ + uint16_t : 1; + __IOM uint16_t PRC3 : 1; /*!< [3..3] Enables writing to the registers related to the PVD. */ + __IOM uint16_t PRC4 : 1; /*!< [4..4] Enables writing to the registers related to the security + * and privilege setting registers. */ + __IOM uint16_t PRC5 : 1; /*!< [5..5] Enables writing to the registers related the reset control. */ + uint16_t : 2; + __OM uint16_t PRKEY : 8; /*!< [15..8] PRC Key Code */ + } PRCR_b; + }; + __IM uint16_t RESERVED60; + + union + { + __IOM uint16_t PRCR_NS; /*!< (@ 0x000003FE) Protect Register for Non-secure Register */ + + struct + { + __IOM uint16_t PRC0 : 1; /*!< [0..0] Enables writing to the registers related to the clock + * generation circuit. */ + __IOM uint16_t PRC1 : 1; /*!< [1..1] Enables writing to the registers related to the operating + * modes, the low power modes, and the battery backup function. */ + uint16_t : 1; + __IOM uint16_t PRC3 : 1; /*!< [3..3] Enables writing to the registers related to the PVD. */ + __IOM uint16_t PRC4 : 1; /*!< [4..4] Enables writing to the registers related to the privilege + * setting registers. */ + uint16_t : 3; + __OM uint16_t PRKEY : 8; /*!< [15..8] PRC Key Code */ + } PRCR_NS_b; + }; + + union + { + __IOM uint8_t LOCOCR; /*!< (@ 0x00000400) Low-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint8_t LCSTP : 1; /*!< [0..0] LOCO Stop */ + uint8_t : 7; + } LOCOCR_b; + }; + __IM uint8_t RESERVED61; + + union + { + __IOM uint8_t LOCOUTCR; /*!< (@ 0x00000402) LOCO User Trimming Control Register */ + + struct + { + __IOM uint8_t LOCOUTRM : 8; /*!< [7..0] LOCO User Trimming */ + } LOCOUTCR_b; + }; + __IM uint8_t RESERVED62; + __IM uint32_t RESERVED63[2]; + __IM uint16_t RESERVED64; + __IM uint8_t RESERVED65; + + union + { + __IOM uint8_t STCONR; /*!< (@ 0x0000040F) Standby Condition Register */ + + struct + { + __IOM uint8_t STCON : 2; /*!< [1..0] SSTBY condition bit */ + uint8_t : 6; + } STCONR_b; + }; + __IM uint32_t RESERVED66[380]; + + union + { + __IOM uint8_t DPSBYCR; /*!< (@ 0x00000A00) Deep Standby Control Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t DCSSMODE : 1; /*!< [2..2] DCDC SSMODE */ + uint8_t : 1; + __IOM uint8_t SRKEEP : 1; /*!< [4..4] Standby RAM Retention */ + uint8_t : 1; + __IOM uint8_t IOKEEP : 1; /*!< [6..6] I/O Port Retention */ + __IOM uint8_t DPSBY : 1; /*!< [7..7] Deep Software Standby */ + } DPSBYCR_b; + }; + __IM uint8_t RESERVED67; + __IM uint16_t RESERVED68; + + union + { + __IOM uint8_t DPSWCR; /*!< (@ 0x00000A04) Deep Standby Wait Control Register */ + + struct + { + __IOM uint8_t WTSTS : 8; /*!< [7..0] Deep Software Wait Standby Time Setting Bit */ + } DPSWCR_b; + }; + __IM uint8_t RESERVED69; + __IM uint16_t RESERVED70; + + union + { + __IOM uint8_t DPSIER0; /*!< (@ 0x00000A08) Deep Standby Interrupt Enable Register 0 */ + + struct + { + __IOM uint8_t DIRQ0E : 1; /*!< [0..0] IRQ0-DS Pin Enable */ + __IOM uint8_t DIRQ1E : 1; /*!< [1..1] IRQ1-DS Pin Enable */ + __IOM uint8_t DIRQ2E : 1; /*!< [2..2] IRQ2-DS Pin Enable */ + __IOM uint8_t DIRQ3E : 1; /*!< [3..3] IRQ3-DS Pin Enable */ + __IOM uint8_t DIRQ4E : 1; /*!< [4..4] IRQ4-DS Pin Enable */ + __IOM uint8_t DIRQ5E : 1; /*!< [5..5] IRQ5-DS Pin Enable */ + __IOM uint8_t DIRQ6E : 1; /*!< [6..6] IRQ6-DS Pin Enable */ + __IOM uint8_t DIRQ7E : 1; /*!< [7..7] IRQ7-DS Pin Enable */ + } DPSIER0_b; + }; + __IM uint8_t RESERVED71; + __IM uint16_t RESERVED72; + + union + { + __IOM uint8_t DPSIER1; /*!< (@ 0x00000A0C) Deep Standby Interrupt Enable Register 1 */ + + struct + { + __IOM uint8_t DIRQ8E : 1; /*!< [0..0] IRQ8-DS Pin Enable */ + __IOM uint8_t DIRQ9E : 1; /*!< [1..1] IRQ9-DS Pin Enable */ + __IOM uint8_t DIRQ10E : 1; /*!< [2..2] IRQ10-DS Pin Enable */ + __IOM uint8_t DIRQ11E : 1; /*!< [3..3] IRQ11-DS Pin Enable */ + __IOM uint8_t DIRQ12E : 1; /*!< [4..4] IRQ12-DS Pin Enable */ + __IOM uint8_t DIRQ13E : 1; /*!< [5..5] IRQ13-DS Pin Enable */ + __IOM uint8_t DIRQ14E : 1; /*!< [6..6] IRQ14-DS Pin Enable */ + __IOM uint8_t DIRQ15E : 1; /*!< [7..7] IRQ15-DS Pin Enable */ + } DPSIER1_b; + }; + __IM uint8_t RESERVED73; + __IM uint16_t RESERVED74; + + union + { + __IOM uint8_t DPSIER2; /*!< (@ 0x00000A10) Deep Standby Interrupt Enable Register 2 */ + + struct + { + __IOM uint8_t DPVD1IE : 1; /*!< [0..0] PVD1 Deep Standby Cancel Signal Enable */ + __IOM uint8_t DPVD2IE : 1; /*!< [1..1] PVD2 Deep Standby Cancel Signal Enable */ + __IOM uint8_t DTRTCIIE : 1; /*!< [2..2] RTC Interval interrupt Deep Standby Cancel Signal Enable */ + __IOM uint8_t DRTCAIE : 1; /*!< [3..3] RTC Alarm interrupt Deep Standby Cancel Signal Enable */ + __IOM uint8_t DNMIE : 1; /*!< [4..4] NMI Pin Enable */ + uint8_t : 3; + } DPSIER2_b; + }; + __IM uint8_t RESERVED75; + __IM uint16_t RESERVED76; + + union + { + __IOM uint8_t DPSIER3; /*!< (@ 0x00000A14) Deep Standby Interrupt Enable Register 3 */ + + struct + { + __IOM uint8_t DUSBFSIE : 1; /*!< [0..0] USBFS Suspend/Resume Deep Standby Cancel Signal Enable */ + __IOM uint8_t DUSBHSIE : 1; /*!< [1..1] USBHS Suspend/Resume Deep Standby Cancel Signal Enable */ + __IOM uint8_t DULPT0IE : 1; /*!< [2..2] ULPT0 Overflow Deep Standby Cancel Signal Enable */ + __IOM uint8_t DULPT1IE : 1; /*!< [3..3] ULPT1 Overflow Deep Standby Cancel Signal Enable */ + uint8_t : 1; + __IOM uint8_t DIWDTIE : 1; /*!< [5..5] IWDT Overflow Deep Standby Cancel Signal Enable */ + uint8_t : 1; + __IOM uint8_t DVBATTADIE : 1; /*!< [7..7] VBATT Tamper Detection Deep Standby Cancel Signal Enable */ + } DPSIER3_b; + }; + __IM uint8_t RESERVED77; + __IM uint16_t RESERVED78; + + union + { + __IOM uint8_t DPSIFR0; /*!< (@ 0x00000A18) Deep Standby Interrupt Flag Register 0 */ + + struct + { + __IOM uint8_t DIRQ0F : 1; /*!< [0..0] IRQ0-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ1F : 1; /*!< [1..1] IRQ1-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ2F : 1; /*!< [2..2] IRQ2-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ3F : 1; /*!< [3..3] IRQ3-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ4F : 1; /*!< [4..4] IRQ4-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ5F : 1; /*!< [5..5] IRQ5-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ6F : 1; /*!< [6..6] IRQ6-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ7F : 1; /*!< [7..7] IRQ7-DS Pin Deep Standby Cancel Flag */ + } DPSIFR0_b; + }; + __IM uint8_t RESERVED79; + __IM uint16_t RESERVED80; + + union + { + __IOM uint8_t DPSIFR1; /*!< (@ 0x00000A1C) Deep Standby Interrupt Flag Register 1 */ + + struct + { + __IOM uint8_t DIRQ8F : 1; /*!< [0..0] IRQ8-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ9F : 1; /*!< [1..1] IRQ9-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ10F : 1; /*!< [2..2] IRQ10-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ11F : 1; /*!< [3..3] IRQ11-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ12F : 1; /*!< [4..4] IRQ12-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ13F : 1; /*!< [5..5] IRQ13-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ14F : 1; /*!< [6..6] IRQ14-DS Pin Deep Standby Cancel Flag */ + __IOM uint8_t DIRQ15F : 1; /*!< [7..7] IRQ15-DS Pin Deep Standby Cancel Flag */ + } DPSIFR1_b; + }; + __IM uint8_t RESERVED81; + __IM uint16_t RESERVED82; + + union + { + __IOM uint8_t DPSIFR2; /*!< (@ 0x00000A20) Deep Standby Interrupt Flag Register 2 */ + + struct + { + __IOM uint8_t DPVD1IF : 1; /*!< [0..0] PVD1 Deep Standby Cancel Flag */ + __IOM uint8_t DPVD2IF : 1; /*!< [1..1] PVD2 Deep Standby Cancel Flag */ + __IOM uint8_t DTRTCIIF : 1; /*!< [2..2] RTC Interval interrupt Deep Standby Cancel Flag */ + __IOM uint8_t DRTCAIF : 1; /*!< [3..3] RTC Alarm interrupt Deep Standby Cancel Flag */ + __IOM uint8_t DNMIF : 1; /*!< [4..4] NMI Pin Deep Standby Cancel Flag */ + uint8_t : 3; + } DPSIFR2_b; + }; + __IM uint8_t RESERVED83; + __IM uint16_t RESERVED84; + + union + { + __IOM uint8_t DPSIFR3; /*!< (@ 0x00000A24) Deep Standby Interrupt Flag Register 3 */ + + struct + { + __IOM uint8_t DUSBFSIF : 1; /*!< [0..0] USBFS Suspend/Resume Deep Standby Cancel Flag */ + __IOM uint8_t DUSBHSIF : 1; /*!< [1..1] USBHS Suspend/Resume Deep Standby Cancel Flag */ + __IOM uint8_t DULPT0IF : 1; /*!< [2..2] ULPT0 Overflow Deep Standby Cancel Flag */ + __IOM uint8_t DULPT1IF : 1; /*!< [3..3] ULPT1 Overflow Deep Standby Cancel Flag */ + uint8_t : 1; + __IOM uint8_t DIWDTIF : 1; /*!< [5..5] IWDT Overflow Deep Standby Cancel Flag */ + uint8_t : 1; + __IOM uint8_t DVBATTADIF : 1; /*!< [7..7] VBATT Tamper Detection Deep Standby Cancel Flag */ + } DPSIFR3_b; + }; + __IM uint8_t RESERVED85; + __IM uint16_t RESERVED86; + + union + { + __IOM uint8_t DPSIEGR0; /*!< (@ 0x00000A28) Deep Standby Interrupt Edge Register 0 */ + + struct + { + __IOM uint8_t DIRQ0EG : 1; /*!< [0..0] IRQ0-DS Pin Edge Select */ + __IOM uint8_t DIRQ1EG : 1; /*!< [1..1] IRQ1-DS Pin Edge Select */ + __IOM uint8_t DIRQ2EG : 1; /*!< [2..2] IRQ2-DS Pin Edge Select */ + __IOM uint8_t DIRQ3EG : 1; /*!< [3..3] IRQ3-DS Pin Edge Select */ + __IOM uint8_t DIRQ4EG : 1; /*!< [4..4] IRQ4-DS Pin Edge Select */ + __IOM uint8_t DIRQ5EG : 1; /*!< [5..5] IRQ5-DS Pin Edge Select */ + __IOM uint8_t DIRQ6EG : 1; /*!< [6..6] IRQ6-DS Pin Edge Select */ + __IOM uint8_t DIRQ7EG : 1; /*!< [7..7] IRQ7-DS Pin Edge Select */ + } DPSIEGR0_b; + }; + __IM uint8_t RESERVED87; + __IM uint16_t RESERVED88; + + union + { + __IOM uint8_t DPSIEGR1; /*!< (@ 0x00000A2C) Deep Standby Interrupt Edge Register 1 */ + + struct + { + __IOM uint8_t DIRQ8EG : 1; /*!< [0..0] IRQ8-DS Pin Edge Select */ + __IOM uint8_t DIRQ9EG : 1; /*!< [1..1] IRQ9-DS Pin Edge Select */ + __IOM uint8_t DIRQ10EG : 1; /*!< [2..2] IRQ10-DS Pin Edge Select */ + __IOM uint8_t DIRQ11EG : 1; /*!< [3..3] IRQ11-DS Pin Edge Select */ + __IOM uint8_t DIRQ12EG : 1; /*!< [4..4] IRQ12-DS Pin Edge Select */ + __IOM uint8_t DIRQ13EG : 1; /*!< [5..5] IRQ13-DS Pin Edge Select */ + __IOM uint8_t DIRQ14EG : 1; /*!< [6..6] IRQ14-DS Pin Edge Select */ + __IOM uint8_t DIRQ15EG : 1; /*!< [7..7] IRQ15-DS Pin Edge Select */ + } DPSIEGR1_b; + }; + __IM uint8_t RESERVED89; + __IM uint16_t RESERVED90; + + union + { + __IOM uint8_t DPSIEGR2; /*!< (@ 0x00000A30) Deep Standby Interrupt Edge Register 2 */ + + struct + { + __IOM uint8_t DPVD1EG : 1; /*!< [0..0] PVD1 Edge Select */ + __IOM uint8_t DPVD2EG : 1; /*!< [1..1] PVD2 Edge Select */ + uint8_t : 2; + __IOM uint8_t DNMIEG : 1; /*!< [4..4] NMI Pin Edge Select */ + uint8_t : 3; + } DPSIEGR2_b; + }; + __IM uint8_t RESERVED91; + __IM uint16_t RESERVED92; + __IM uint32_t RESERVED93; + + union + { + __IOM uint8_t SYOCDCR; /*!< (@ 0x00000A38) System Control OCD Control Register */ + + struct + { + __IOM uint8_t DOCDF : 1; /*!< [0..0] Deep Standby OCD flag */ + uint8_t : 6; + __IOM uint8_t DBGEN : 1; /*!< [7..7] Debugger Enable bit */ + } SYOCDCR_b; + }; + __IM uint8_t RESERVED94; + __IM uint16_t RESERVED95; + __IM uint32_t RESERVED96; + + union + { + __IOM uint8_t RSTSR0; /*!< (@ 0x00000A40) Reset Status Register 0 */ + + struct + { + __IOM uint8_t PORF : 1; /*!< [0..0] Power-On Reset Detect Flag. NOTE: Writable only to clear + * the flag. Confirm the value is 1 and then write 0. */ + __IOM uint8_t LVD0RF : 1; /*!< [1..1] Voltage Monitor 0 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD1RF : 1; /*!< [2..2] Voltage Monitor 1 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD2RF : 1; /*!< [3..3] Voltage Monitor 2 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD3RF : 1; /*!< [4..4] Voltage Monitor 3 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD4RF : 1; /*!< [5..5] Voltage Monitor 4 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t LVD5RF : 1; /*!< [6..6] Voltage Monitor 5 Reset Detect Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + __IOM uint8_t DPSRSTF : 1; /*!< [7..7] Deep Software Standby Reset Flag. NOTE: Writable only + * to clear the flag. Confirm the value is 1 and then write + * 0. */ + } RSTSR0_b; + }; + __IM uint8_t RESERVED97; + __IM uint16_t RESERVED98; + + union + { + __IOM uint8_t RSTSR2; /*!< (@ 0x00000A44) Reset Status Register 2 */ + + struct + { + __IOM uint8_t CWSF : 1; /*!< [0..0] Cold/Warm Start Determination Flag */ + uint8_t : 7; + } RSTSR2_b; + }; + __IM uint8_t RESERVED99; + __IM uint16_t RESERVED100; + + union + { + __IOM uint8_t RSTSR3; /*!< (@ 0x00000A48) Reset Status Register 3 */ + + struct + { + uint8_t : 4; + __IOM uint8_t OCPRF : 1; /*!< [4..4] Overcurrent protection reset Detect Flag */ + uint8_t : 3; + } RSTSR3_b; + }; + __IM uint8_t RESERVED101; + __IM uint16_t RESERVED102; + __IM uint32_t RESERVED103; + + union + { + __IOM uint8_t MOMCR; /*!< (@ 0x00000A50) Main Clock Oscillator Mode Oscillation Control + * Register */ + + struct + { + uint8_t : 1; + __IOM uint8_t MODRV0 : 3; /*!< [3..1] Main Clock Oscillator Drive Capability 0 Switching */ + uint8_t : 2; + __IOM uint8_t MOSEL : 1; /*!< [6..6] Main Clock Oscillator Switching */ + uint8_t : 1; + } MOMCR_b; + }; + __IM uint8_t RESERVED104; + __IM uint16_t RESERVED105; + + union + { + __IOM uint8_t FWEPROR; /*!< (@ 0x00000A54) Flash Write Erase Protect Register */ + + struct + { + __IOM uint8_t FLWE : 2; /*!< [1..0] Flash Programing and Erasure */ + uint8_t : 6; + } FWEPROR_b; + }; + __IM uint8_t RESERVED106; + __IM uint16_t RESERVED107; + + union + { + union + { + __IOM uint8_t LVCMPCR; /*!< (@ 0x00000A58) Voltage Monitor Circuit Control Register */ + + struct + { + uint8_t : 5; + __IOM uint8_t LVD1E : 1; /*!< [5..5] Voltage Detection 1 Enable */ + __IOM uint8_t LVD2E : 1; /*!< [6..6] Voltage Detection 2 Enable */ + uint8_t : 1; + } LVCMPCR_b; + }; + + union + { + __IOM uint8_t LVD1CMPCR; /*!< (@ 0x00000A58) Voltage Monitor 1 Comparator Control Register */ + + struct + { + __IOM uint8_t LVD1LVL : 5; /*!< [4..0] Detection Voltage 1 Level Select(Standard voltage during + * drop in voltage) */ + uint8_t : 2; + __IOM uint8_t LVD1E : 1; /*!< [7..7] Voltage Detection 1 Enable */ + } LVD1CMPCR_b; + }; + }; + __IM uint8_t RESERVED108; + __IM uint16_t RESERVED109; + + union + { + __IOM uint8_t LVD2CMPCR; /*!< (@ 0x00000A5C) Voltage Monitor 2 Comparator Control Register */ + + struct + { + __IOM uint8_t LVD2LVL : 5; /*!< [4..0] Detection Voltage 2 Level Select(Standard voltage during + * drop in voltage) */ + uint8_t : 2; + __IOM uint8_t LVD2E : 1; /*!< [7..7] Voltage Detection 2 Enable */ + } LVD2CMPCR_b; + }; + __IM uint8_t RESERVED110; + __IM uint16_t RESERVED111; + __IM uint32_t RESERVED112[4]; + + union + { + __IOM uint8_t LVD1CR0; /*!< (@ 0x00000A70) Voltage Monitor 1 Circuit Control Register 0 */ + + struct + { + __IOM uint8_t RIE : 1; /*!< [0..0] Voltage Monitor Interrupt/Reset Enable */ + __IOM uint8_t DFDIS : 1; /*!< [1..1] Voltage Monitor Digital Filter Disable Mode Select */ + __IOM uint8_t CMPE : 1; /*!< [2..2] Voltage Monitor Circuit Comparison Result Output Enable */ + uint8_t : 1; + __IOM uint8_t FSAMP : 2; /*!< [5..4] Sampling Clock Select */ + __IOM uint8_t RI : 1; /*!< [6..6] Voltage Monitor Circuit Mode Select */ + __IOM uint8_t RN : 1; /*!< [7..7] Voltage Monitor Reset Negate Select */ + } LVD1CR0_b; + }; + __IM uint8_t RESERVED113; + __IM uint16_t RESERVED114; + + union + { + __IOM uint8_t LVD2CR0; /*!< (@ 0x00000A74) Voltage Monitor 2 Circuit Control Register 0 */ + + struct + { + __IOM uint8_t RIE : 1; /*!< [0..0] Voltage Monitor Interrupt/Reset Enable */ + __IOM uint8_t DFDIS : 1; /*!< [1..1] Voltage Monitor Digital Filter Disable Mode Select */ + __IOM uint8_t CMPE : 1; /*!< [2..2] Voltage Monitor Circuit Comparison Result Output Enable */ + uint8_t : 1; + __IOM uint8_t FSAMP : 2; /*!< [5..4] Sampling Clock Select */ + __IOM uint8_t RI : 1; /*!< [6..6] Voltage Monitor Circuit Mode Select */ + __IOM uint8_t RN : 1; /*!< [7..7] Voltage Monitor Reset Negate Select */ + } LVD2CR0_b; + }; + __IM uint8_t RESERVED115; + __IM uint16_t RESERVED116; + __IM uint32_t RESERVED117[3]; + + union + { + __IOM uint8_t VBATTMNSELR; /*!< (@ 0x00000A84) Battery Backup Voltage Monitor Function Select + * Register */ + + struct + { + __IOM uint8_t VBATTMNSEL : 1; /*!< [0..0] VBATT Voltage Monitor Function Select Bit */ + uint8_t : 7; + } VBATTMNSELR_b; + }; + __IM uint8_t RESERVED118; + __IM uint16_t RESERVED119; + + union + { + __IOM uint8_t VBTBPCR1; /*!< (@ 0x00000A88) VBATT Battery Power Supply Control Register 1 */ + + struct + { + __IOM uint8_t BPWSWSTP : 1; /*!< [0..0] Battery Power Supply Switch Stop */ + uint8_t : 7; + } VBTBPCR1_b; + }; + __IM uint8_t RESERVED120; + __IM uint16_t RESERVED121; + __IM uint32_t RESERVED122; + + union + { + __IOM uint8_t LPSCR; /*!< (@ 0x00000A90) Low Power State Control Register */ + + struct + { + __IOM uint8_t LPMD : 4; /*!< [3..0] Low power mode setting bit */ + uint8_t : 4; + } LPSCR_b; + }; + __IM uint8_t RESERVED123; + __IM uint16_t RESERVED124; + __IM uint32_t RESERVED125; + + union + { + __IOM uint8_t SSCR1; /*!< (@ 0x00000A98) Software Standby Control Register 1 */ + + struct + { + __IOM uint8_t SS1FR : 1; /*!< [0..0] Software Standby 1 Fast Return */ + uint8_t : 7; + } SSCR1_b; + }; + __IM uint8_t RESERVED126; + __IM uint16_t RESERVED127; + __IM uint32_t RESERVED128[5]; + + union + { + __IOM uint8_t LVOCR; /*!< (@ 0x00000AB0) Low Power State Control Register */ + + struct + { + __IOM uint8_t LVO0E : 1; /*!< [0..0] Low Voltage Operation 0 Enable */ + __IOM uint8_t LVO1E : 1; /*!< [1..1] Low Voltage Operation 1 Enable */ + uint8_t : 6; + } LVOCR_b; + }; + __IM uint8_t RESERVED129; + __IM uint16_t RESERVED130; + __IM uint32_t RESERVED131[7]; + + union + { + __IOM uint8_t SYRSTMSK0; /*!< (@ 0x00000AD0) System Reset Mask Control Register0 */ + + struct + { + __IOM uint8_t IWDTMASK : 1; /*!< [0..0] Independent watchdog timer Reset Mask */ + __IOM uint8_t WDT0MASK : 1; /*!< [1..1] CPU0 Watchdog timer Reset Mask */ + __IOM uint8_t SWMASK : 1; /*!< [2..2] Software Reset Mask */ + uint8_t : 1; + __IOM uint8_t CLUP0MASK : 1; /*!< [4..4] CPU0 Lockup Reset Mask */ + __IOM uint8_t LM0MASK : 1; /*!< [5..5] Local memory 0 error Reset Mask */ + __IOM uint8_t CMMASK : 1; /*!< [6..6] Common memory error Reset Mask */ + __IOM uint8_t BUSMASK : 1; /*!< [7..7] BUS error Reset Mask */ + } SYRSTMSK0_b; + }; + __IM uint8_t RESERVED132; + __IM uint16_t RESERVED133; + + union + { + __IOM uint8_t SYRSTMSK1; /*!< (@ 0x00000AD4) System Reset Mask Control Register1 */ + + struct + { + uint8_t : 1; + __IOM uint8_t WDT1MASK : 1; /*!< [1..1] CPU1 Watchdog timer Reset Mask */ + uint8_t : 2; + __IOM uint8_t CLUP1MASK : 1; /*!< [4..4] CPU1 Lockup Reset Mask */ + __IOM uint8_t LM1MASK : 1; /*!< [5..5] Local memory 1 error Reset Mask */ + uint8_t : 1; + __IOM uint8_t NWMASK : 1; /*!< [7..7] Network Reset Mask */ + } SYRSTMSK1_b; + }; + __IM uint8_t RESERVED134; + __IM uint16_t RESERVED135; + + union + { + __IOM uint8_t SYRSTMSK2; /*!< (@ 0x00000AD8) System Reset Mask Control Register2 */ + + struct + { + __IOM uint8_t LVD1MASK : 1; /*!< [0..0] Voltage Monitor 1 Reset Mask */ + __IOM uint8_t LVD2MASK : 1; /*!< [1..1] Voltage Monitor 2 Reset Mask */ + __IOM uint8_t LVD3MASK : 1; /*!< [2..2] Voltage Monitor 3 Reset Mask */ + __IOM uint8_t LVD4MASK : 1; /*!< [3..3] Voltage Monitor 4 Reset Mask */ + __IOM uint8_t LVD5MASK : 1; /*!< [4..4] Voltage Monitor 5 Reset Mask */ + uint8_t : 3; + } SYRSTMSK2_b; + }; + __IM uint8_t RESERVED136; + __IM uint16_t RESERVED137; + __IM uint32_t RESERVED138[10]; + + union + { + __IOM uint8_t PLL1LDOCR; /*!< (@ 0x00000B04) PLL1-LDO Control Register */ + + struct + { + __IOM uint8_t LDOSTP : 1; /*!< [0..0] LDO Stop */ + __IOM uint8_t SKEEP : 1; /*!< [1..1] STBY Keep */ + uint8_t : 6; + } PLL1LDOCR_b; + }; + __IM uint8_t RESERVED139; + __IM uint16_t RESERVED140; + + union + { + __IOM uint8_t PLL2LDOCR; /*!< (@ 0x00000B08) PLL2-LDO Control Register */ + + struct + { + __IOM uint8_t LDOSTP : 1; /*!< [0..0] LDO Stop */ + __IOM uint8_t SKEEP : 1; /*!< [1..1] STBY Keep */ + uint8_t : 6; + } PLL2LDOCR_b; + }; + __IM uint8_t RESERVED141; + __IM uint16_t RESERVED142; + + union + { + __IOM uint8_t HOCOLDOCR; /*!< (@ 0x00000B0C) HOCO-LDO Control Register */ + + struct + { + __IOM uint8_t LDOSTP : 1; /*!< [0..0] LDO Stop */ + __IOM uint8_t SKEEP : 1; /*!< [1..1] STBY Keep */ + uint8_t : 6; + } HOCOLDOCR_b; + }; + __IM uint8_t RESERVED143; + __IM uint16_t RESERVED144; + __IM uint32_t RESERVED145[4]; + + union + { + __IOM uint8_t LVD1FCR; /*!< (@ 0x00000B20) Voltage Monitor % Function Control Register */ + + struct + { + __IOM uint8_t RHSEL : 1; /*!< [0..0] Rise Hysteresis Select */ + uint8_t : 7; + } LVD1FCR_b; + }; + __IM uint8_t RESERVED146; + __IM uint16_t RESERVED147; + + union + { + __IOM uint8_t LVD2FCR; /*!< (@ 0x00000B24) Voltage Monitor % Function Control Register */ + + struct + { + __IOM uint8_t RHSEL : 1; /*!< [0..0] Rise Hysteresis Select */ + uint8_t : 7; + } LVD2FCR_b; + }; + __IM uint8_t RESERVED148; + __IM uint16_t RESERVED149; + __IM uint32_t RESERVED150[54]; + + union + { + __IOM uint8_t SOSCCR; /*!< (@ 0x00000C00) Sub-clock oscillator control register */ + + struct + { + __IOM uint8_t SOSTP : 1; /*!< [0..0] Sub-Clock Oscillator Stop */ + uint8_t : 7; + } SOSCCR_b; + }; + + union + { + __IOM uint8_t SOMCR; /*!< (@ 0x00000C01) Sub Clock Oscillator Mode Control Register */ + + struct + { + __IOM uint8_t SODRV : 2; /*!< [1..0] Sub Clock Oscillator Drive Capability Switching */ + uint8_t : 4; + __IOM uint8_t SOSEL : 1; /*!< [6..6] Sub Clock Oscillator Switching */ + uint8_t : 1; + } SOMCR_b; + }; + __IM uint16_t RESERVED151; + __IM uint32_t RESERVED152[15]; + + union + { + __IOM uint8_t VBTBER; /*!< (@ 0x00000C40) VBATT Backup Enable Register */ + + struct + { + uint8_t : 3; + __IOM uint8_t VBAE : 1; /*!< [3..3] VBATT backup register access enable bit */ + uint8_t : 4; + } VBTBER_b; + }; + __IM uint8_t RESERVED153; + __IM uint16_t RESERVED154; + __IM uint8_t RESERVED155; + + union + { + __IOM uint8_t VBTBPCR2; /*!< (@ 0x00000C45) VBATT Battery Power Supply Control Register 2 */ + + struct + { + __IOM uint8_t VDETLVL : 3; /*!< [2..0] VDETBAT Level Select */ + uint8_t : 1; + __IOM uint8_t VDETE : 1; /*!< [4..4] Voltage drop detection enable */ + uint8_t : 3; + } VBTBPCR2_b; + }; + + union + { + __IOM uint8_t VBTBPSR; /*!< (@ 0x00000C46) VBATT Battery Power Supply Status Register */ + + struct + { + __IOM uint8_t VBPORF : 1; /*!< [0..0] VBATT_POR Flag */ + uint8_t : 3; + __IOM uint8_t VBPORM : 1; /*!< [4..4] VBATT_POR Monitor */ + __IOM uint8_t BPWSWM : 1; /*!< [5..5] Battery Power Supply Switch Status Monitor */ + uint8_t : 2; + } VBTBPSR_b; + }; + __IM uint8_t RESERVED156; + + union + { + __IOM uint8_t VBTADSR; /*!< (@ 0x00000C48) VBATT Tamper detection Status Register */ + + struct + { + __IOM uint8_t VBTADF0 : 1; /*!< [0..0] VBATT Tamper Detection flag 0 */ + __IOM uint8_t VBTADF1 : 1; /*!< [1..1] VBATT Tamper Detection flag 1 */ + __IOM uint8_t VBTADF2 : 1; /*!< [2..2] VBATT Tamper Detection flag 2 */ + uint8_t : 5; + } VBTADSR_b; + }; + + union + { + __IOM uint8_t VBTADCR1; /*!< (@ 0x00000C49) VBATT Tamper detection Control Register 1 */ + + struct + { + __IOM uint8_t VBTADIE0 : 1; /*!< [0..0] VBATT Tamper Detection Interrupt Enable 0 */ + __IOM uint8_t VBTADIE1 : 1; /*!< [1..1] VBATT Tamper Detection Interrupt Enable 1 */ + __IOM uint8_t VBTADIE2 : 1; /*!< [2..2] VBATT Tamper Detection Interrupt Enable 2 */ + uint8_t : 1; + __IOM uint8_t VBTADCLE0 : 1; /*!< [4..4] VBATT Tamper Detection Backup Register Clear Enable 0 */ + __IOM uint8_t VBTADCLE1 : 1; /*!< [5..5] VBATT Tamper Detection Backup Register Clear Enable 1 */ + __IOM uint8_t VBTADCLE2 : 1; /*!< [6..6] VBATT Tamper Detection Backup Register Clear Enable 2 */ + uint8_t : 1; + } VBTADCR1_b; + }; + + union + { + __IOM uint8_t VBTADCR2; /*!< (@ 0x00000C4A) VBATT Tamper detection Control Register 2 */ + + struct + { + __IOM uint8_t VBRTCES0 : 1; /*!< [0..0] VBATT RTC Time Capture Event Source Select 0 */ + __IOM uint8_t VBRTCES1 : 1; /*!< [1..1] VBATT RTC Time Capture Event Source Select 1 */ + __IOM uint8_t VBRTCES2 : 1; /*!< [2..2] VBATT RTC Time Capture Event Source Select 2 */ + uint8_t : 5; + } VBTADCR2_b; + }; + __IM uint8_t RESERVED157; + + union + { + __IOM uint8_t VBTICTLR; /*!< (@ 0x00000C4C) VBATT Input Control Register */ + + struct + { + __IOM uint8_t VCH0INEN : 1; /*!< [0..0] RTCIC0 Input Enable */ + __IOM uint8_t VCH1INEN : 1; /*!< [1..1] RTCIC1 Input Enable */ + __IOM uint8_t VCH2INEN : 1; /*!< [2..2] RTCIC2 Input Enable */ + uint8_t : 5; + } VBTICTLR_b; + }; + + union + { + __IOM uint8_t VBTICTLR2; /*!< (@ 0x00000C4D) VBATT Input Control Register 2 */ + + struct + { + __IOM uint8_t VCH0NCE : 1; /*!< [0..0] VBATT CH0 Input Noise Canceler Enable */ + __IOM uint8_t VCH1NCE : 1; /*!< [1..1] VBATT CH1 Input Noise Canceler Enable */ + __IOM uint8_t VCH2NCE : 1; /*!< [2..2] VBATT CH2 Input Noise Canceler Enable */ + uint8_t : 1; + __IOM uint8_t VCH0EG : 1; /*!< [4..4] VBATT CH0 Input Edge Select */ + __IOM uint8_t VCH1EG : 1; /*!< [5..5] VBATT CH1 Input Edge Select */ + __IOM uint8_t VCH2EG : 1; /*!< [6..6] VBATT CH2 Input Edge Select */ + uint8_t : 1; + } VBTICTLR2_b; + }; + + union + { + __IOM uint8_t VBTIMONR; /*!< (@ 0x00000C4E) VBATT Input Monitor Register */ + + struct + { + __IOM uint8_t VCH0MON : 1; /*!< [0..0] VBATT CH0 Input monitor */ + __IOM uint8_t VCH1MON : 1; /*!< [1..1] VBATT CH1 Input monitor */ + __IOM uint8_t VCH2MON : 1; /*!< [2..2] VBATT CH2 Input monitor */ + uint8_t : 5; + } VBTIMONR_b; + }; + __IM uint8_t RESERVED158; + __IM uint32_t RESERVED159[44]; + + union + { + __IOM uint8_t VBTBKR0; /*!< (@ 0x00000D00) VBATT Backup Register 0 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR0_b; + }; + + union + { + __IOM uint8_t VBTBKR1; /*!< (@ 0x00000D01) VBATT Backup Register 1 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR1_b; + }; + + union + { + __IOM uint8_t VBTBKR2; /*!< (@ 0x00000D02) VBATT Backup Register 2 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR2_b; + }; + + union + { + __IOM uint8_t VBTBKR3; /*!< (@ 0x00000D03) VBATT Backup Register 3 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR3_b; + }; + + union + { + __IOM uint8_t VBTBKR4; /*!< (@ 0x00000D04) VBATT Backup Register 4 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR4_b; + }; + + union + { + __IOM uint8_t VBTBKR5; /*!< (@ 0x00000D05) VBATT Backup Register 5 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR5_b; + }; + + union + { + __IOM uint8_t VBTBKR6; /*!< (@ 0x00000D06) VBATT Backup Register 6 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR6_b; + }; + + union + { + __IOM uint8_t VBTBKR7; /*!< (@ 0x00000D07) VBATT Backup Register 7 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR7_b; + }; + + union + { + __IOM uint8_t VBTBKR8; /*!< (@ 0x00000D08) VBATT Backup Register 8 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR8_b; + }; + + union + { + __IOM uint8_t VBTBKR9; /*!< (@ 0x00000D09) VBATT Backup Register 9 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR9_b; + }; + + union + { + __IOM uint8_t VBTBKR10; /*!< (@ 0x00000D0A) VBATT Backup Register 10 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR10_b; + }; + + union + { + __IOM uint8_t VBTBKR11; /*!< (@ 0x00000D0B) VBATT Backup Register 11 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR11_b; + }; + + union + { + __IOM uint8_t VBTBKR12; /*!< (@ 0x00000D0C) VBATT Backup Register 12 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR12_b; + }; + + union + { + __IOM uint8_t VBTBKR13; /*!< (@ 0x00000D0D) VBATT Backup Register 13 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR13_b; + }; + + union + { + __IOM uint8_t VBTBKR14; /*!< (@ 0x00000D0E) VBATT Backup Register 14 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR14_b; + }; + + union + { + __IOM uint8_t VBTBKR15; /*!< (@ 0x00000D0F) VBATT Backup Register 15 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR15_b; + }; + + union + { + __IOM uint8_t VBTBKR16; /*!< (@ 0x00000D10) VBATT Backup Register 16 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR16_b; + }; + + union + { + __IOM uint8_t VBTBKR17; /*!< (@ 0x00000D11) VBATT Backup Register 17 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR17_b; + }; + + union + { + __IOM uint8_t VBTBKR18; /*!< (@ 0x00000D12) VBATT Backup Register 18 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR18_b; + }; + + union + { + __IOM uint8_t VBTBKR19; /*!< (@ 0x00000D13) VBATT Backup Register 19 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR19_b; + }; + + union + { + __IOM uint8_t VBTBKR20; /*!< (@ 0x00000D14) VBATT Backup Register 20 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR20_b; + }; + + union + { + __IOM uint8_t VBTBKR21; /*!< (@ 0x00000D15) VBATT Backup Register 21 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR21_b; + }; + + union + { + __IOM uint8_t VBTBKR22; /*!< (@ 0x00000D16) VBATT Backup Register 22 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR22_b; + }; + + union + { + __IOM uint8_t VBTBKR23; /*!< (@ 0x00000D17) VBATT Backup Register 23 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR23_b; + }; + + union + { + __IOM uint8_t VBTBKR24; /*!< (@ 0x00000D18) VBATT Backup Register 24 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR24_b; + }; + + union + { + __IOM uint8_t VBTBKR25; /*!< (@ 0x00000D19) VBATT Backup Register 25 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR25_b; + }; + + union + { + __IOM uint8_t VBTBKR26; /*!< (@ 0x00000D1A) VBATT Backup Register 26 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR26_b; + }; + + union + { + __IOM uint8_t VBTBKR27; /*!< (@ 0x00000D1B) VBATT Backup Register 27 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR27_b; + }; + + union + { + __IOM uint8_t VBTBKR28; /*!< (@ 0x00000D1C) VBATT Backup Register 28 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR28_b; + }; + + union + { + __IOM uint8_t VBTBKR29; /*!< (@ 0x00000D1D) VBATT Backup Register 29 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR29_b; + }; + + union + { + __IOM uint8_t VBTBKR30; /*!< (@ 0x00000D1E) VBATT Backup Register 30 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR30_b; + }; + + union + { + __IOM uint8_t VBTBKR31; /*!< (@ 0x00000D1F) VBATT Backup Register 31 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR31_b; + }; + + union + { + __IOM uint8_t VBTBKR32; /*!< (@ 0x00000D20) VBATT Backup Register 32 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR32_b; + }; + + union + { + __IOM uint8_t VBTBKR33; /*!< (@ 0x00000D21) VBATT Backup Register 33 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR33_b; + }; + + union + { + __IOM uint8_t VBTBKR34; /*!< (@ 0x00000D22) VBATT Backup Register 34 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR34_b; + }; + + union + { + __IOM uint8_t VBTBKR35; /*!< (@ 0x00000D23) VBATT Backup Register 35 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR35_b; + }; + + union + { + __IOM uint8_t VBTBKR36; /*!< (@ 0x00000D24) VBATT Backup Register 36 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR36_b; + }; + + union + { + __IOM uint8_t VBTBKR37; /*!< (@ 0x00000D25) VBATT Backup Register 37 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR37_b; + }; + + union + { + __IOM uint8_t VBTBKR38; /*!< (@ 0x00000D26) VBATT Backup Register 38 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR38_b; + }; + + union + { + __IOM uint8_t VBTBKR39; /*!< (@ 0x00000D27) VBATT Backup Register 39 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR39_b; + }; + + union + { + __IOM uint8_t VBTBKR40; /*!< (@ 0x00000D28) VBATT Backup Register 40 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR40_b; + }; + + union + { + __IOM uint8_t VBTBKR41; /*!< (@ 0x00000D29) VBATT Backup Register 41 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR41_b; + }; + + union + { + __IOM uint8_t VBTBKR42; /*!< (@ 0x00000D2A) VBATT Backup Register 42 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR42_b; + }; + + union + { + __IOM uint8_t VBTBKR43; /*!< (@ 0x00000D2B) VBATT Backup Register 43 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR43_b; + }; + + union + { + __IOM uint8_t VBTBKR44; /*!< (@ 0x00000D2C) VBATT Backup Register 44 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR44_b; + }; + + union + { + __IOM uint8_t VBTBKR45; /*!< (@ 0x00000D2D) VBATT Backup Register 45 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR45_b; + }; + + union + { + __IOM uint8_t VBTBKR46; /*!< (@ 0x00000D2E) VBATT Backup Register 46 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR46_b; + }; + + union + { + __IOM uint8_t VBTBKR47; /*!< (@ 0x00000D2F) VBATT Backup Register 47 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR47_b; + }; + + union + { + __IOM uint8_t VBTBKR48; /*!< (@ 0x00000D30) VBATT Backup Register 48 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR48_b; + }; + + union + { + __IOM uint8_t VBTBKR49; /*!< (@ 0x00000D31) VBATT Backup Register 49 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR49_b; + }; + + union + { + __IOM uint8_t VBTBKR50; /*!< (@ 0x00000D32) VBATT Backup Register 50 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR50_b; + }; + + union + { + __IOM uint8_t VBTBKR51; /*!< (@ 0x00000D33) VBATT Backup Register 51 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR51_b; + }; + + union + { + __IOM uint8_t VBTBKR52; /*!< (@ 0x00000D34) VBATT Backup Register 52 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR52_b; + }; + + union + { + __IOM uint8_t VBTBKR53; /*!< (@ 0x00000D35) VBATT Backup Register 53 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR53_b; + }; + + union + { + __IOM uint8_t VBTBKR54; /*!< (@ 0x00000D36) VBATT Backup Register 54 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR54_b; + }; + + union + { + __IOM uint8_t VBTBKR55; /*!< (@ 0x00000D37) VBATT Backup Register 55 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR55_b; + }; + + union + { + __IOM uint8_t VBTBKR56; /*!< (@ 0x00000D38) VBATT Backup Register 56 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR56_b; + }; + + union + { + __IOM uint8_t VBTBKR57; /*!< (@ 0x00000D39) VBATT Backup Register 57 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR57_b; + }; + + union + { + __IOM uint8_t VBTBKR58; /*!< (@ 0x00000D3A) VBATT Backup Register 58 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR58_b; + }; + + union + { + __IOM uint8_t VBTBKR59; /*!< (@ 0x00000D3B) VBATT Backup Register 59 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR59_b; + }; + + union + { + __IOM uint8_t VBTBKR60; /*!< (@ 0x00000D3C) VBATT Backup Register 60 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR60_b; + }; + + union + { + __IOM uint8_t VBTBKR61; /*!< (@ 0x00000D3D) VBATT Backup Register 61 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR61_b; + }; + + union + { + __IOM uint8_t VBTBKR62; /*!< (@ 0x00000D3E) VBATT Backup Register 62 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR62_b; + }; + + union + { + __IOM uint8_t VBTBKR63; /*!< (@ 0x00000D3F) VBATT Backup Register 63 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR63_b; + }; + + union + { + __IOM uint8_t VBTBKR64; /*!< (@ 0x00000D40) VBATT Backup Register 64 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR64_b; + }; + + union + { + __IOM uint8_t VBTBKR65; /*!< (@ 0x00000D41) VBATT Backup Register 65 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR65_b; + }; + + union + { + __IOM uint8_t VBTBKR66; /*!< (@ 0x00000D42) VBATT Backup Register 66 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR66_b; + }; + + union + { + __IOM uint8_t VBTBKR67; /*!< (@ 0x00000D43) VBATT Backup Register 67 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR67_b; + }; + + union + { + __IOM uint8_t VBTBKR68; /*!< (@ 0x00000D44) VBATT Backup Register 68 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR68_b; + }; + + union + { + __IOM uint8_t VBTBKR69; /*!< (@ 0x00000D45) VBATT Backup Register 69 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR69_b; + }; + + union + { + __IOM uint8_t VBTBKR70; /*!< (@ 0x00000D46) VBATT Backup Register 70 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR70_b; + }; + + union + { + __IOM uint8_t VBTBKR71; /*!< (@ 0x00000D47) VBATT Backup Register 71 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR71_b; + }; + + union + { + __IOM uint8_t VBTBKR72; /*!< (@ 0x00000D48) VBATT Backup Register 72 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR72_b; + }; + + union + { + __IOM uint8_t VBTBKR73; /*!< (@ 0x00000D49) VBATT Backup Register 73 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR73_b; + }; + + union + { + __IOM uint8_t VBTBKR74; /*!< (@ 0x00000D4A) VBATT Backup Register 74 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR74_b; + }; + + union + { + __IOM uint8_t VBTBKR75; /*!< (@ 0x00000D4B) VBATT Backup Register 75 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR75_b; + }; + + union + { + __IOM uint8_t VBTBKR76; /*!< (@ 0x00000D4C) VBATT Backup Register 76 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR76_b; + }; + + union + { + __IOM uint8_t VBTBKR77; /*!< (@ 0x00000D4D) VBATT Backup Register 77 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR77_b; + }; + + union + { + __IOM uint8_t VBTBKR78; /*!< (@ 0x00000D4E) VBATT Backup Register 78 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR78_b; + }; + + union + { + __IOM uint8_t VBTBKR79; /*!< (@ 0x00000D4F) VBATT Backup Register 79 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR79_b; + }; + + union + { + __IOM uint8_t VBTBKR80; /*!< (@ 0x00000D50) VBATT Backup Register 80 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR80_b; + }; + + union + { + __IOM uint8_t VBTBKR81; /*!< (@ 0x00000D51) VBATT Backup Register 81 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR81_b; + }; + + union + { + __IOM uint8_t VBTBKR82; /*!< (@ 0x00000D52) VBATT Backup Register 82 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR82_b; + }; + + union + { + __IOM uint8_t VBTBKR83; /*!< (@ 0x00000D53) VBATT Backup Register 83 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR83_b; + }; + + union + { + __IOM uint8_t VBTBKR84; /*!< (@ 0x00000D54) VBATT Backup Register 84 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR84_b; + }; + + union + { + __IOM uint8_t VBTBKR85; /*!< (@ 0x00000D55) VBATT Backup Register 85 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR85_b; + }; + + union + { + __IOM uint8_t VBTBKR86; /*!< (@ 0x00000D56) VBATT Backup Register 86 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR86_b; + }; + + union + { + __IOM uint8_t VBTBKR87; /*!< (@ 0x00000D57) VBATT Backup Register 87 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR87_b; + }; + + union + { + __IOM uint8_t VBTBKR88; /*!< (@ 0x00000D58) VBATT Backup Register 88 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR88_b; + }; + + union + { + __IOM uint8_t VBTBKR89; /*!< (@ 0x00000D59) VBATT Backup Register 89 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR89_b; + }; + + union + { + __IOM uint8_t VBTBKR90; /*!< (@ 0x00000D5A) VBATT Backup Register 90 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR90_b; + }; + + union + { + __IOM uint8_t VBTBKR91; /*!< (@ 0x00000D5B) VBATT Backup Register 91 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR91_b; + }; + + union + { + __IOM uint8_t VBTBKR92; /*!< (@ 0x00000D5C) VBATT Backup Register 92 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR92_b; + }; + + union + { + __IOM uint8_t VBTBKR93; /*!< (@ 0x00000D5D) VBATT Backup Register 93 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR93_b; + }; + + union + { + __IOM uint8_t VBTBKR94; /*!< (@ 0x00000D5E) VBATT Backup Register 94 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR94_b; + }; + + union + { + __IOM uint8_t VBTBKR95; /*!< (@ 0x00000D5F) VBATT Backup Register 95 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR95_b; + }; + + union + { + __IOM uint8_t VBTBKR96; /*!< (@ 0x00000D60) VBATT Backup Register 96 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR96_b; + }; + + union + { + __IOM uint8_t VBTBKR97; /*!< (@ 0x00000D61) VBATT Backup Register 97 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR97_b; + }; + + union + { + __IOM uint8_t VBTBKR98; /*!< (@ 0x00000D62) VBATT Backup Register 98 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR98_b; + }; + + union + { + __IOM uint8_t VBTBKR99; /*!< (@ 0x00000D63) VBATT Backup Register 99 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR99_b; + }; + + union + { + __IOM uint8_t VBTBKR100; /*!< (@ 0x00000D64) VBATT Backup Register 100 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR100_b; + }; + + union + { + __IOM uint8_t VBTBKR101; /*!< (@ 0x00000D65) VBATT Backup Register 101 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR101_b; + }; + + union + { + __IOM uint8_t VBTBKR102; /*!< (@ 0x00000D66) VBATT Backup Register 102 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR102_b; + }; + + union + { + __IOM uint8_t VBTBKR103; /*!< (@ 0x00000D67) VBATT Backup Register 103 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR103_b; + }; + + union + { + __IOM uint8_t VBTBKR104; /*!< (@ 0x00000D68) VBATT Backup Register 104 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR104_b; + }; + + union + { + __IOM uint8_t VBTBKR105; /*!< (@ 0x00000D69) VBATT Backup Register 105 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR105_b; + }; + + union + { + __IOM uint8_t VBTBKR106; /*!< (@ 0x00000D6A) VBATT Backup Register 106 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR106_b; + }; + + union + { + __IOM uint8_t VBTBKR107; /*!< (@ 0x00000D6B) VBATT Backup Register 107 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR107_b; + }; + + union + { + __IOM uint8_t VBTBKR108; /*!< (@ 0x00000D6C) VBATT Backup Register 108 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR108_b; + }; + + union + { + __IOM uint8_t VBTBKR109; /*!< (@ 0x00000D6D) VBATT Backup Register 109 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR109_b; + }; + + union + { + __IOM uint8_t VBTBKR110; /*!< (@ 0x00000D6E) VBATT Backup Register 110 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR110_b; + }; + + union + { + __IOM uint8_t VBTBKR111; /*!< (@ 0x00000D6F) VBATT Backup Register 111 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR111_b; + }; + + union + { + __IOM uint8_t VBTBKR112; /*!< (@ 0x00000D70) VBATT Backup Register 112 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR112_b; + }; + + union + { + __IOM uint8_t VBTBKR113; /*!< (@ 0x00000D71) VBATT Backup Register 113 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR113_b; + }; + + union + { + __IOM uint8_t VBTBKR114; /*!< (@ 0x00000D72) VBATT Backup Register 114 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR114_b; + }; + + union + { + __IOM uint8_t VBTBKR115; /*!< (@ 0x00000D73) VBATT Backup Register 115 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR115_b; + }; + + union + { + __IOM uint8_t VBTBKR116; /*!< (@ 0x00000D74) VBATT Backup Register 116 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR116_b; + }; + + union + { + __IOM uint8_t VBTBKR117; /*!< (@ 0x00000D75) VBATT Backup Register 117 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR117_b; + }; + + union + { + __IOM uint8_t VBTBKR118; /*!< (@ 0x00000D76) VBATT Backup Register 118 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR118_b; + }; + + union + { + __IOM uint8_t VBTBKR119; /*!< (@ 0x00000D77) VBATT Backup Register 119 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR119_b; + }; + + union + { + __IOM uint8_t VBTBKR120; /*!< (@ 0x00000D78) VBATT Backup Register 120 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR120_b; + }; + + union + { + __IOM uint8_t VBTBKR121; /*!< (@ 0x00000D79) VBATT Backup Register 121 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR121_b; + }; + + union + { + __IOM uint8_t VBTBKR122; /*!< (@ 0x00000D7A) VBATT Backup Register 122 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR122_b; + }; + + union + { + __IOM uint8_t VBTBKR123; /*!< (@ 0x00000D7B) VBATT Backup Register 123 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR123_b; + }; + + union + { + __IOM uint8_t VBTBKR124; /*!< (@ 0x00000D7C) VBATT Backup Register 124 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR124_b; + }; + + union + { + __IOM uint8_t VBTBKR125; /*!< (@ 0x00000D7D) VBATT Backup Register 125 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR125_b; + }; + + union + { + __IOM uint8_t VBTBKR126; /*!< (@ 0x00000D7E) VBATT Backup Register 126 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR126_b; + }; + + union + { + __IOM uint8_t VBTBKR127; /*!< (@ 0x00000D7F) VBATT Backup Register 127 */ + + struct + { + __IOM uint8_t VBTBKR : 8; /*!< [7..0] VBTBKRn [7:0] (n=0 to 127) */ + } VBTBKR127_b; + }; +} R_SYSTEM_Type; /*!< Size = 3456 (0xd80) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CAL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor (R_TSN_CAL) + */ + +typedef struct /*!< (@ 0x4011B17C) R_TSN_CAL Structure */ +{ + union + { + __IM uint32_t TSCDR; /*!< (@ 0x00000000) Temperature Sensor 32 bit Calibration Data Register */ + + struct + { + __IM uint32_t TSCDR : 32; /*!< [31..0] The 32 bit TSCDR register stores temperature sensor + * calibration converted value. */ + } TSCDR_b; + }; +} R_TSN_CAL_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CTRL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor (R_TSN_CTRL) + */ + +typedef struct /*!< (@ 0x40235000) R_TSN_CTRL Structure */ +{ + union + { + __IOM uint8_t TSCR; /*!< (@ 0x00000000) Temperature Sensor Control Register */ + + struct + { + uint8_t : 4; + __IOM uint8_t TSOE : 1; /*!< [4..4] Temperature Sensor Enable */ + uint8_t : 2; + __IOM uint8_t TSEN : 1; /*!< [7..7] Temperature Sensor Output Enable */ + } TSCR_b; + }; +} R_TSN_CTRL_Type; /*!< Size = 1 (0x1) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_FS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 Module (R_USB_FS0) + */ + +typedef struct /*!< (@ 0x40250000) R_USB_FS0 Structure */ +{ + union + { + __IOM uint16_t SYSCFG; /*!< (@ 0x00000000) System Configuration Control Register */ + + struct + { + __IOM uint16_t USBE : 1; /*!< [0..0] USB Operation Enable */ + uint16_t : 2; + __IOM uint16_t DMRPU : 1; /*!< [3..3] D- Line Resistor Control */ + __IOM uint16_t DPRPU : 1; /*!< [4..4] D+ Line Resistor Control */ + __IOM uint16_t DRPD : 1; /*!< [5..5] D+/D- Line Resistor Control */ + __IOM uint16_t DCFM : 1; /*!< [6..6] Controller Function Select */ + uint16_t : 1; + __IOM uint16_t CNEN : 1; /*!< [8..8] CNEN Single End Receiver Enable */ + uint16_t : 1; + __IOM uint16_t SCKE : 1; /*!< [10..10] USB Clock Enable */ + uint16_t : 5; + } SYSCFG_b; + }; + + union + { + __IOM uint16_t BUSWAIT; /*!< (@ 0x00000002) CPU Bus Wait Register */ + + struct + { + __IOM uint16_t BWAIT : 4; /*!< [3..0] CPU Bus Access Wait Specification BWAIT waits (BWAIT+2 + * access cycles) */ + uint16_t : 12; + } BUSWAIT_b; + }; + + union + { + __IM uint16_t SYSSTS0; /*!< (@ 0x00000004) System Configuration Status Register 0 */ + + struct + { + __IM uint16_t LNST : 2; /*!< [1..0] USB Data Line Status Monitor */ + __IM uint16_t IDMON : 1; /*!< [2..2] External ID0 Input Pin Monitor */ + uint16_t : 2; + __IM uint16_t SOFEA : 1; /*!< [5..5] SOF Active Monitor While Host Controller Function is + * Selected. */ + __IM uint16_t HTACT : 1; /*!< [6..6] USB Host Sequencer Status Monitor */ + uint16_t : 7; + __IM uint16_t OVCMON : 2; /*!< [15..14] External USB0_OVRCURA/ USB0_OVRCURB Input Pin MonitorThe + * OCVMON[1] bit indicates the status of the USBHS_OVRCURA + * pin. The OCVMON[0] bit indicates the status of the USBHS_OVRCURB + * pin. */ + } SYSSTS0_b; + }; + + union + { + __IM uint16_t PLLSTA; /*!< (@ 0x00000006) PLL Status Register */ + + struct + { + __IM uint16_t PLLLOCK : 1; /*!< [0..0] PLL Lock Flag */ + uint16_t : 15; + } PLLSTA_b; + }; + + union + { + __IOM uint16_t DVSTCTR0; /*!< (@ 0x00000008) Device State Control Register 0 */ + + struct + { + __IM uint16_t RHST : 3; /*!< [2..0] USB Bus Reset Status */ + uint16_t : 1; + __IOM uint16_t UACT : 1; /*!< [4..4] USB Bus Enable */ + __IOM uint16_t RESUME : 1; /*!< [5..5] Resume Output */ + __IOM uint16_t USBRST : 1; /*!< [6..6] USB Bus Reset Output */ + __IOM uint16_t RWUPE : 1; /*!< [7..7] Wakeup Detection Enable */ + __IOM uint16_t WKUP : 1; /*!< [8..8] Wakeup Output */ + __IOM uint16_t VBUSEN : 1; /*!< [9..9] USB_VBUSEN Output Pin Control */ + __IOM uint16_t EXICEN : 1; /*!< [10..10] USB_EXICEN Output Pin Control */ + __IOM uint16_t HNPBTOA : 1; /*!< [11..11] Host Negotiation Protocol (HNP) Control This bit is + * used when switching from device B to device A while in + * OTG mode. If the HNPBTOA bit is 1, the internal function + * control keeps the suspended state until the HNP processing + * ends even though SYSCFG.DPRPU = 0 or SYSCFG.DCFM = 1 is + * set. */ + uint16_t : 4; + } DVSTCTR0_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t TESTMODE; /*!< (@ 0x0000000C) USB Test Mode Register */ + + struct + { + __IOM uint16_t UTST : 4; /*!< [3..0] Test Mode */ + uint16_t : 12; + } TESTMODE_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t CFIFO; /*!< (@ 0x00000014) CFIFO Port Register */ + + struct + { + union + { + __IOM uint16_t CFIFOL; /*!< (@ 0x00000014) CFIFO Port Register L */ + __IOM uint8_t CFIFOLL; /*!< (@ 0x00000014) CFIFO Port Register LL */ + }; + + union + { + __IOM uint16_t CFIFOH; /*!< (@ 0x00000016) CFIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED3; + __IOM uint8_t CFIFOHH; /*!< (@ 0x00000017) CFIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint32_t D0FIFO; /*!< (@ 0x00000018) D0FIFO Port Register */ + + struct + { + union + { + __IOM uint16_t D0FIFOL; /*!< (@ 0x00000018) D0FIFO Port Register L */ + __IOM uint8_t D0FIFOLL; /*!< (@ 0x00000018) D0FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D0FIFOH; /*!< (@ 0x0000001A) D0FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED4; + __IOM uint8_t D0FIFOHH; /*!< (@ 0x0000001B) D0FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint32_t D1FIFO; /*!< (@ 0x0000001C) D1FIFO Port Register */ + + struct + { + union + { + __IOM uint16_t D1FIFOL; /*!< (@ 0x0000001C) D1FIFO Port Register L */ + __IOM uint8_t D1FIFOLL; /*!< (@ 0x0000001C) D1FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D1FIFOH; /*!< (@ 0x0000001E) D1FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED5; + __IOM uint8_t D1FIFOHH; /*!< (@ 0x0000001F) D1FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint16_t CFIFOSEL; /*!< (@ 0x00000020) CFIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] CFIFO Port Access Pipe Specification */ + uint16_t : 1; + __IOM uint16_t ISEL : 1; /*!< [5..5] CFIFO Port Access Direction When DCP is Selected */ + uint16_t : 2; + __IOM uint16_t BIGEND : 1; /*!< [8..8] CFIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] CFIFO Port Access Bit Width */ + uint16_t : 2; + __IOM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } CFIFOSEL_b; + }; + + union + { + __IOM uint16_t CFIFOCTR; /*!< (@ 0x00000022) CFIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data LengthIndicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer ClearNote: Only 0 can be read. */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } CFIFOCTR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint16_t D0FIFOSEL; /*!< (@ 0x00000028) D0FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] DMA/DTC Transfer Request Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __IOM uint16_t REW : 1; /*!< [14..14] Buffer Pointer RewindNote: Only 0 can be read. */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D0FIFOSEL_b; + }; + + union + { + __IOM uint16_t D0FIFOCTR; /*!< (@ 0x0000002A) D0FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data LengthIndicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer ClearNote: Only 0 can be read. */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D0FIFOCTR_b; + }; + + union + { + __IOM uint16_t D1FIFOSEL; /*!< (@ 0x0000002C) D1FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] DMA/DTC Transfer Request Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __IOM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D1FIFOSEL_b; + }; + + union + { + __IOM uint16_t D1FIFOCTR; /*!< (@ 0x0000002E) D1FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data LengthIndicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer ClearNote: Only 0 can be read. */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D1FIFOCTR_b; + }; + + union + { + __IOM uint16_t INTENB0; /*!< (@ 0x00000030) Interrupt Enable Register 0 */ + + struct + { + uint16_t : 8; + __IOM uint16_t BRDYE : 1; /*!< [8..8] Buffer Ready Interrupt Enable */ + __IOM uint16_t NRDYE : 1; /*!< [9..9] Buffer Not Ready Response Interrupt Enable */ + __IOM uint16_t BEMPE : 1; /*!< [10..10] Buffer Empty Interrupt Enable */ + __IOM uint16_t CTRE : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Enable */ + __IOM uint16_t DVSE : 1; /*!< [12..12] Device State Transition Interrupt Enable */ + __IOM uint16_t SOFE : 1; /*!< [13..13] Frame Number Update Interrupt Enable */ + __IOM uint16_t RSME : 1; /*!< [14..14] Resume Interrupt Enable */ + __IOM uint16_t VBSE : 1; /*!< [15..15] VBUS Interrupt Enable */ + } INTENB0_b; + }; + + union + { + __IOM uint16_t INTENB1; /*!< (@ 0x00000032) Interrupt Enable Register 1 */ + + struct + { + __IOM uint16_t PDDETINTE0 : 1; /*!< [0..0] PDDETINT0 Detection Interrupt Enable */ + uint16_t : 3; + __IOM uint16_t SACKE : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Enable */ + __IOM uint16_t SIGNE : 1; /*!< [5..5] Setup Transaction Error Interrupt Enable */ + __IOM uint16_t EOFERRE : 1; /*!< [6..6] EOF Error Detection Interrupt Enable */ + uint16_t : 4; + __IOM uint16_t ATTCHE : 1; /*!< [11..11] Connection Detection Interrupt Enable */ + __IOM uint16_t DTCHE : 1; /*!< [12..12] Disconnection Detection Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t BCHGE : 1; /*!< [14..14] USB Bus Change Interrupt Enable */ + __IOM uint16_t OVRCRE : 1; /*!< [15..15] Overcurrent Input Change Interrupt Enable */ + } INTENB1_b; + }; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t BRDYENB; /*!< (@ 0x00000036) BRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPE0BRDYE : 1; /*!< [0..0] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE1BRDYE : 1; /*!< [1..1] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE2BRDYE : 1; /*!< [2..2] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE3BRDYE : 1; /*!< [3..3] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE4BRDYE : 1; /*!< [4..4] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE5BRDYE : 1; /*!< [5..5] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE6BRDYE : 1; /*!< [6..6] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE7BRDYE : 1; /*!< [7..7] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE8BRDYE : 1; /*!< [8..8] BRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE9BRDYE : 1; /*!< [9..9] BRDY Interrupt Enable for PIPE */ + uint16_t : 6; + } BRDYENB_b; + }; + + union + { + __IOM uint16_t NRDYENB; /*!< (@ 0x00000038) NRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPE0NRDYE : 1; /*!< [0..0] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE1NRDYE : 1; /*!< [1..1] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE2NRDYE : 1; /*!< [2..2] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE3NRDYE : 1; /*!< [3..3] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE4NRDYE : 1; /*!< [4..4] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE5NRDYE : 1; /*!< [5..5] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE6NRDYE : 1; /*!< [6..6] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE7NRDYE : 1; /*!< [7..7] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE8NRDYE : 1; /*!< [8..8] NRDY Interrupt Enable for PIPE */ + __IOM uint16_t PIPE9NRDYE : 1; /*!< [9..9] NRDY Interrupt Enable for PIPE */ + uint16_t : 6; + } NRDYENB_b; + }; + + union + { + __IOM uint16_t BEMPENB; /*!< (@ 0x0000003A) BEMP Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPE0BEMPE : 1; /*!< [0..0] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE1BEMPE : 1; /*!< [1..1] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE2BEMPE : 1; /*!< [2..2] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE3BEMPE : 1; /*!< [3..3] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE4BEMPE : 1; /*!< [4..4] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE5BEMPE : 1; /*!< [5..5] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE6BEMPE : 1; /*!< [6..6] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE7BEMPE : 1; /*!< [7..7] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE8BEMPE : 1; /*!< [8..8] BEMP Interrupt Enable for PIPE */ + __IOM uint16_t PIPE9BEMPE : 1; /*!< [9..9] BEMP Interrupt Enable for PIPE */ + uint16_t : 6; + } BEMPENB_b; + }; + + union + { + __IOM uint16_t SOFCFG; /*!< (@ 0x0000003C) SOF Output Configuration Register */ + + struct + { + uint16_t : 4; + __IM uint16_t EDGESTS : 1; /*!< [4..4] Edge Interrupt Output Status Monitor */ + __IOM uint16_t INTL : 1; /*!< [5..5] Interrupt Output Sense Select */ + __IOM uint16_t BRDYM : 1; /*!< [6..6] BRDY Interrupt Status Clear Timing */ + uint16_t : 1; + __IOM uint16_t TRNENSEL : 1; /*!< [8..8] Transaction-Enabled Time Select */ + uint16_t : 7; + } SOFCFG_b; + }; + + union + { + __IOM uint16_t PHYSET; /*!< (@ 0x0000003E) PHY Setting Register */ + + struct + { + __IOM uint16_t DIRPD : 1; /*!< [0..0] Power-Down Control */ + __IOM uint16_t PLLRESET : 1; /*!< [1..1] PLL Reset Control */ + uint16_t : 1; + __IOM uint16_t CDPEN : 1; /*!< [3..3] Charging Downstream Port Enable */ + __IOM uint16_t CLKSEL : 2; /*!< [5..4] Input System Clock Frequency */ + uint16_t : 2; + __IOM uint16_t REPSEL : 2; /*!< [9..8] Terminating Resistance Adjustment Cycle */ + uint16_t : 1; + __IOM uint16_t REPSTART : 1; /*!< [11..11] Forcibly Start Terminating Resistance Adjustment */ + uint16_t : 3; + __IOM uint16_t HSEB : 1; /*!< [15..15] CL-Only Mode */ + } PHYSET_b; + }; + + union + { + __IOM uint16_t INTSTS0; /*!< (@ 0x00000040) Interrupt Status Register 0 */ + + struct + { + __IM uint16_t CTSQ : 3; /*!< [2..0] Control Transfer Stage */ + __IOM uint16_t VALID : 1; /*!< [3..3] USB Request Reception */ + __IM uint16_t DVSQ : 3; /*!< [6..4] Device State */ + __IM uint16_t VBSTS : 1; /*!< [7..7] VBUS Input Status */ + __IM uint16_t BRDY : 1; /*!< [8..8] Buffer Ready Interrupt Status */ + __IM uint16_t NRDY : 1; /*!< [9..9] Buffer Not Ready Interrupt Status */ + __IM uint16_t BEMP : 1; /*!< [10..10] Buffer Empty Interrupt Status */ + __IOM uint16_t CTRT : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Status */ + __IOM uint16_t DVST : 1; /*!< [12..12] Device State Transition Interrupt Status */ + __IOM uint16_t SOFR : 1; /*!< [13..13] Frame Number Refresh Interrupt Status */ + __IOM uint16_t RESM : 1; /*!< [14..14] Resume Interrupt Status */ + __IOM uint16_t VBINT : 1; /*!< [15..15] VBUS Interrupt Status */ + } INTSTS0_b; + }; + + union + { + __IOM uint16_t INTSTS1; /*!< (@ 0x00000042) Interrupt Status Register 1 */ + + struct + { + __IOM uint16_t PDDETINT0 : 1; /*!< [0..0] PDDET0 Detection Interrupt Status */ + uint16_t : 3; + __IOM uint16_t SACK : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Status */ + __IOM uint16_t SIGN : 1; /*!< [5..5] Setup Transaction Error Interrupt Status */ + __IOM uint16_t EOFERR : 1; /*!< [6..6] EOF Error Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t LPMEND : 1; /*!< [8..8] LPM Transaction End Interrupt Status */ + __IOM uint16_t L1RSMEND : 1; /*!< [9..9] L1 Resume End Interrupt Status */ + uint16_t : 1; + __IOM uint16_t ATTCH : 1; /*!< [11..11] ATTCH Interrupt Status */ + __IOM uint16_t DTCH : 1; /*!< [12..12] USB Disconnection Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t BCHG : 1; /*!< [14..14] USB Bus Change Interrupt Status */ + __IOM uint16_t OVRCR : 1; /*!< [15..15] Overcurrent Input Change Interrupt Status */ + } INTSTS1_b; + }; + __IM uint16_t RESERVED8; + + union + { + __IOM uint16_t BRDYSTS; /*!< (@ 0x00000046) BRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPE0BRDY : 1; /*!< [0..0] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE1BRDY : 1; /*!< [1..1] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE2BRDY : 1; /*!< [2..2] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE3BRDY : 1; /*!< [3..3] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE4BRDY : 1; /*!< [4..4] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE5BRDY : 1; /*!< [5..5] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE6BRDY : 1; /*!< [6..6] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE7BRDY : 1; /*!< [7..7] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE8BRDY : 1; /*!< [8..8] BRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE9BRDY : 1; /*!< [9..9] BRDY Interrupt Status for PIPE */ + uint16_t : 6; + } BRDYSTS_b; + }; + + union + { + __IOM uint16_t NRDYSTS; /*!< (@ 0x00000048) NRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPE0NRDY : 1; /*!< [0..0] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE1NRDY : 1; /*!< [1..1] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE2NRDY : 1; /*!< [2..2] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE3NRDY : 1; /*!< [3..3] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE4NRDY : 1; /*!< [4..4] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE5NRDY : 1; /*!< [5..5] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE6NRDY : 1; /*!< [6..6] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE7NRDY : 1; /*!< [7..7] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE8NRDY : 1; /*!< [8..8] NRDY Interrupt Status for PIPE */ + __IOM uint16_t PIPE9NRDY : 1; /*!< [9..9] NRDY Interrupt Status for PIPE */ + uint16_t : 6; + } NRDYSTS_b; + }; + + union + { + __IOM uint16_t BEMPSTS; /*!< (@ 0x0000004A) BEMP Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPE0BEMP : 1; /*!< [0..0] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE1BEMP : 1; /*!< [1..1] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE2BEMP : 1; /*!< [2..2] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE3BEMP : 1; /*!< [3..3] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE4BEMP : 1; /*!< [4..4] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE5BEMP : 1; /*!< [5..5] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE6BEMP : 1; /*!< [6..6] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE7BEMP : 1; /*!< [7..7] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE8BEMP : 1; /*!< [8..8] BEMP Interrupt Status for PIPE */ + __IOM uint16_t PIPE9BEMP : 1; /*!< [9..9] BEMP Interrupt Status for PIPE */ + uint16_t : 6; + } BEMPSTS_b; + }; + + union + { + __IOM uint16_t FRMNUM; /*!< (@ 0x0000004C) Frame Number Register */ + + struct + { + __IM uint16_t FRNM : 11; /*!< [10..0] Frame NumberLatest frame number */ + uint16_t : 3; + __IOM uint16_t CRCE : 1; /*!< [14..14] Receive Data Error */ + __IOM uint16_t OVRN : 1; /*!< [15..15] Overrun/Underrun Detection Status */ + } FRMNUM_b; + }; + + union + { + __IOM uint16_t UFRMNUM; /*!< (@ 0x0000004E) uFrame Number Register */ + + struct + { + __IM uint16_t UFRNM : 3; /*!< [2..0] MicroframeIndicate the microframe number. */ + uint16_t : 12; + __IOM uint16_t DVCHG : 1; /*!< [15..15] Device State Change */ + } UFRMNUM_b; + }; + + union + { + __IOM uint16_t USBADDR; /*!< (@ 0x00000050) USB Address Register */ + + struct + { + __IM uint16_t USBADDR : 7; /*!< [6..0] USB Address In device controller mode, these flags indicate + * the USB address assigned by the host when the USBHS processed + * the SET_ADDRESS request successfully. */ + uint16_t : 1; + __IOM uint16_t STSRECOV0 : 3; /*!< [10..8] Status Recovery */ + uint16_t : 5; + } USBADDR_b; + }; + __IM uint16_t RESERVED9; + + union + { + __IOM uint16_t USBREQ; /*!< (@ 0x00000054) USB Request Type Register */ + + struct + { + __IOM uint16_t BMREQUESTTYPE : 8; /*!< [7..0] Request TypeThese bits store the USB request bmRequestType + * value. */ + __IOM uint16_t BREQUEST : 8; /*!< [15..8] RequestThese bits store the USB request bRequest value. */ + } USBREQ_b; + }; + + union + { + __IOM uint16_t USBVAL; /*!< (@ 0x00000056) USB Request Value Register */ + + struct + { + __IOM uint16_t WVALUE : 16; /*!< [15..0] ValueThese bits store the USB request Value value. */ + } USBVAL_b; + }; + + union + { + __IOM uint16_t USBINDX; /*!< (@ 0x00000058) USB Request Index Register */ + + struct + { + __IOM uint16_t WINDEX : 16; /*!< [15..0] IndexThese bits store the USB request wIndex value. */ + } USBINDX_b; + }; + + union + { + __IOM uint16_t USBLENG; /*!< (@ 0x0000005A) USB Request Length Register */ + + struct + { + __IOM uint16_t WLENGTH : 16; /*!< [15..0] LengthThese bits store the USB request wLength value. */ + } USBLENG_b; + }; + + union + { + __IOM uint16_t DCPCFG; /*!< (@ 0x0000005C) DCP Configuration Register */ + + struct + { + uint16_t : 4; + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Disabled at End of Transfer */ + __IOM uint16_t CNTMD : 1; /*!< [8..8] Continuous Transfer Mode */ + uint16_t : 7; + } DCPCFG_b; + }; + + union + { + __IOM uint16_t DCPMAXP; /*!< (@ 0x0000005E) DCP Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 7; /*!< [6..0] Maximum Packet SizeThese bits set the maximum amount + * of data (maximum packet size) in payloads for the DCP. */ + uint16_t : 5; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device Select */ + } DCPMAXP_b; + }; + + union + { + __IOM uint16_t DCPCTR; /*!< (@ 0x00000060) DCP Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PID */ + __IOM uint16_t CCPL : 1; /*!< [2..2] Control Transfer End Enable */ + uint16_t : 2; + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe Busy */ + __IM uint16_t SQMON : 1; /*!< [6..6] Sequence Toggle Bit Monitor */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Sequence Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Sequence Toggle Bit Clear */ + uint16_t : 2; + __IOM uint16_t SUREQCLR : 1; /*!< [11..11] SUREQ Bit Clear */ + uint16_t : 2; + __IOM uint16_t SUREQ : 1; /*!< [14..14] Setup Token Transmission */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } DCPCTR_b; + }; + __IM uint16_t RESERVED10; + + union + { + __IOM uint16_t PIPESEL; /*!< (@ 0x00000064) Pipe Window Select Register */ + + struct + { + __IOM uint16_t PIPESEL : 4; /*!< [3..0] Pipe Window Select */ + uint16_t : 12; + } PIPESEL_b; + }; + __IM uint16_t RESERVED11; + + union + { + __IOM uint16_t PIPECFG; /*!< (@ 0x00000068) Pipe Configuration Register */ + + struct + { + __IOM uint16_t EPNUM : 4; /*!< [3..0] Endpoint NumberThese bits specify the endpoint number + * for the selected pipe.Setting 0000b means unused pipe. */ + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Disabled at End of Transfer */ + uint16_t : 1; + __IOM uint16_t DBLB : 1; /*!< [9..9] Double Buffer Mode */ + __IOM uint16_t BFRE : 1; /*!< [10..10] BRDY Interrupt Operation Specification */ + uint16_t : 3; + __IOM uint16_t TYPE : 2; /*!< [15..14] Transfer Type */ + } PIPECFG_b; + }; + __IM uint16_t RESERVED12; + + union + { + __IOM uint16_t PIPEMAXP; /*!< (@ 0x0000006C) Pipe Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 9; /*!< [8..0] Maximum Packet SizePIPE1 and PIPE2: 1 byte (001h) to + * 256 bytes (100h)PIPE3 to PIPE5: 8 bytes (008h), 16 bytes + * (010h), 32 bytes (020h), 64 bytes (040h) (Bits [8:7] and + * [2:0] are not provided.)PIPE6 to PIPE9: 1 byte (001h) to + * 64 bytes (040h) (Bits [8:7] are not provided.) */ + uint16_t : 3; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device Select */ + } PIPEMAXP_b; + }; + + union + { + __IOM uint16_t PIPEPERI; /*!< (@ 0x0000006E) Pipe Cycle Control Register */ + + struct + { + __IOM uint16_t IITV : 3; /*!< [2..0] Interval Error Detection IntervalSpecifies the interval + * error detection timing for the selected pipe in terms of + * frames, which is expressed as nth power of 2. */ + uint16_t : 9; + __IOM uint16_t IFIS : 1; /*!< [12..12] Isochronous IN Buffer Flush */ + uint16_t : 3; + } PIPEPERI_b; + }; + + union + { + __IOM uint16_t PIPE_CTR[9]; /*!< (@ 0x00000070) Pipe [0..8] Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PID */ + uint16_t : 3; + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe Busy */ + __IM uint16_t SQMON : 1; /*!< [6..6] Sequence Toggle Bit Confirmation */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Sequence Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Sequence Toggle Bit Clear */ + __IOM uint16_t ACLRM : 1; /*!< [9..9] Auto Buffer Clear Mode */ + __IOM uint16_t ATREPM : 1; /*!< [10..10] Auto Response Mode */ + uint16_t : 1; + __IM uint16_t CSSTS : 1; /*!< [12..12] CSSTS StatusThis bit indicates the CSPLIT status of + * Split Transaction of the relevant pipe */ + __IOM uint16_t CSCLR : 1; /*!< [13..13] CSPLIT Status ClearSet this bit to 1 when clearing + * the CSSTS bit of the relevant pipe */ + __IM uint16_t INBUFM : 1; /*!< [14..14] Transmit Buffer Monitor */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } PIPE_CTR_b[9]; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14[3]; + __IOM R_USB_FS0_PIPE_TR_Type PIPE_TR[5]; /*!< (@ 0x00000090) Pipe Transaction Counter Registers */ + __IM uint32_t RESERVED15[3]; + + union + { + __IOM uint16_t USBBCCTRL0; /*!< (@ 0x000000B0) BC Control Register 0 */ + + struct + { + __IOM uint16_t RPDME0 : 1; /*!< [0..0] D- Pin Pull-Down Control */ + __IOM uint16_t IDPSRCE0 : 1; /*!< [1..1] D+ Pin IDPSRC Output Control */ + __IOM uint16_t IDMSINKE0 : 1; /*!< [2..2] D- Pin 0.6 V Input Detection (Comparator and Sink) Control */ + __IOM uint16_t VDPSRCE0 : 1; /*!< [3..3] D+ Pin VDPSRC (0.6 V) Output Control */ + __IOM uint16_t IDPSINKE0 : 1; /*!< [4..4] D+ Pin 0.6 V Input Detection (Comparator and Sink) Control */ + __IOM uint16_t VDMSRCE0 : 1; /*!< [5..5] D- Pin VDMSRC (0.6 V) Output Control */ + uint16_t : 1; + __IOM uint16_t BATCHGE0 : 1; /*!< [7..7] BC (Battery Charger) Function Ch0 General Enable Control */ + __IM uint16_t CHGDETSTS0 : 1; /*!< [8..8] D- Pin 0.6 V Input Detection Status */ + __IM uint16_t PDDETSTS0 : 1; /*!< [9..9] D+ Pin 0.6 V Input Detection Status */ + uint16_t : 6; + } USBBCCTRL0_b; + }; + __IM uint16_t RESERVED16; + __IM uint32_t RESERVED17[4]; + + union + { + __IOM uint16_t UCKSEL; /*!< (@ 0x000000C4) USB Clock Selection Register */ + + struct + { + __IOM uint16_t UCKSELC : 1; /*!< [0..0] USB Clock Selection */ + uint16_t : 15; + } UCKSEL_b; + }; + __IM uint16_t RESERVED18; + __IM uint32_t RESERVED19; + + union + { + __IOM uint16_t USBMC; /*!< (@ 0x000000CC) USB Module Control Register */ + + struct + { + __IOM uint16_t VDDUSBE : 1; /*!< [0..0] USB Reference Power Supply Circuit On/Off Control */ + uint16_t : 6; + __IOM uint16_t VDCEN : 1; /*!< [7..7] USB Regulator On/Off Control */ + uint16_t : 8; + } USBMC_b; + }; + __IM uint16_t RESERVED20; + + union + { + __IOM uint16_t DEVADD[10]; /*!< (@ 0x000000D0) Device Address Configuration Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t USBSPD : 2; /*!< [7..6] Transfer Speed of Communication Target Device */ + __IOM uint16_t HUBPORT : 3; /*!< [10..8] Communication Target Connecting Hub Port */ + __IOM uint16_t UPPHUB : 4; /*!< [14..11] Communication Target Connecting Hub Register */ + uint16_t : 1; + } DEVADD_b[10]; + }; + __IM uint32_t RESERVED21[3]; + + union + { + __IOM uint32_t PHYSLEW; /*!< (@ 0x000000F0) PHY Cross Point Adjustment Register */ + + struct + { + __IOM uint32_t SLEWR00 : 1; /*!< [0..0] Receiver Cross Point Adjustment 00 */ + __IOM uint32_t SLEWR01 : 1; /*!< [1..1] Receiver Cross Point Adjustment 01 */ + __IOM uint32_t SLEWF00 : 1; /*!< [2..2] Receiver Cross Point Adjustment 00 */ + __IOM uint32_t SLEWF01 : 1; /*!< [3..3] Receiver Cross Point Adjustment 01 */ + uint32_t : 28; + } PHYSLEW_b; + }; + __IM uint32_t RESERVED22[3]; + + union + { + __IOM uint16_t LPCTRL; /*!< (@ 0x00000100) Low Power Control Register */ + + struct + { + uint16_t : 7; + __IOM uint16_t HWUPM : 1; /*!< [7..7] Resume Return Mode Setting */ + uint16_t : 8; + } LPCTRL_b; + }; + + union + { + __IOM uint16_t LPSTS; /*!< (@ 0x00000102) Low Power Status Register */ + + struct + { + uint16_t : 14; + __IOM uint16_t SUSPENDM : 1; /*!< [14..14] UTMI SuspendM Control */ + uint16_t : 1; + } LPSTS_b; + }; + __IM uint32_t RESERVED23[15]; + + union + { + __IOM uint16_t BCCTRL; /*!< (@ 0x00000140) Battery Charging Control Register */ + + struct + { + __IOM uint16_t IDPSRCE : 1; /*!< [0..0] IDPSRC Control */ + __IOM uint16_t IDMSINKE : 1; /*!< [1..1] IDMSINK Control */ + __IOM uint16_t VDPSRCE : 1; /*!< [2..2] VDPSRC Control */ + __IOM uint16_t IDPSINKE : 1; /*!< [3..3] IDPSINK Control */ + __IOM uint16_t VDMSRCE : 1; /*!< [4..4] VDMSRC Control */ + __IOM uint16_t DCPMODE : 1; /*!< [5..5] DCP Mode Control */ + uint16_t : 2; + __IM uint16_t CHGDETSTS : 1; /*!< [8..8] CHGDET Status */ + __IM uint16_t PDDETSTS : 1; /*!< [9..9] PDDET Status */ + uint16_t : 6; + } BCCTRL_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint16_t PL1CTRL1; /*!< (@ 0x00000144) Function L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1RESPEN : 1; /*!< [0..0] L1 Response Enable */ + __IOM uint16_t L1RESPMD : 2; /*!< [2..1] L1 Response Mode */ + __IOM uint16_t L1NEGOMD : 1; /*!< [3..3] L1 Response Negotiation Control.NOTE: This bit is valid + * only when the L1RESPMD[1:0] value is 2'b11. */ + __IM uint16_t DVSQ : 4; /*!< [7..4] DVSQ Extension.DVSQ[3] is Mirror of DVSQ[2:0] in INTSTS0.Indicates + * the L1 state together with the device state bits DVSQ[2:0]. */ + __IOM uint16_t HIRDTHR : 4; /*!< [11..8] L1 Response Negotiation Threshold ValueHIRD threshold + * value used for L1NEGOMD.The format is the same as the HIRD + * field in HL1CTRL. */ + uint16_t : 2; + __IOM uint16_t L1EXTMD : 1; /*!< [14..14] PHY Control Mode at L1 Return */ + uint16_t : 1; + } PL1CTRL1_b; + }; + + union + { + __IOM uint16_t PL1CTRL2; /*!< (@ 0x00000146) Function L1 Control Register 2 */ + + struct + { + uint16_t : 8; + __IOM uint16_t HIRDMON : 4; /*!< [11..8] HIRD Value Monitor */ + __IOM uint16_t RWEMON : 1; /*!< [12..12] RWE Value Monitor */ + uint16_t : 3; + } PL1CTRL2_b; + }; + + union + { + __IOM uint16_t HL1CTRL1; /*!< (@ 0x00000148) Host L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1REQ : 1; /*!< [0..0] L1 Transition Request */ + __IM uint16_t L1STATUS : 2; /*!< [2..1] L1 Request Completion Status */ + uint16_t : 13; + } HL1CTRL1_b; + }; + + union + { + __IOM uint16_t HL1CTRL2; /*!< (@ 0x0000014A) Host L1 Control Register 2 */ + + struct + { + __IOM uint16_t L1ADDR : 4; /*!< [3..0] LPM Token DeviceAddressThese bits specify the value to + * be set in the ADDR field of LPM token. */ + uint16_t : 4; + __IOM uint16_t HIRD : 4; /*!< [11..8] LPM Token HIRD */ + __IOM uint16_t L1RWE : 1; /*!< [12..12] LPM Token L1 RemoteWake EnableThese bits specify the + * value to be set in the RWE field of LPM token. */ + uint16_t : 2; + __IOM uint16_t BESL : 1; /*!< [15..15] BESL & Alternate HIRDThis bit selects the K-State drive + * period at the time of L1 Resume. */ + } HL1CTRL2_b; + }; + __IM uint32_t RESERVED25[5]; + + union + { + __IM uint32_t DPUSR0R; /*!< (@ 0x00000160) Deep Standby USB Transceiver Control/Pin Monitor + * Register */ + + struct + { + uint32_t : 20; + __IM uint32_t DOVCAHM : 1; /*!< [20..20] OVRCURA InputIndicates OVRCURA input signal on the + * HS side of USB port. */ + __IM uint32_t DOVCBHM : 1; /*!< [21..21] OVRCURB InputIndicates OVRCURB input signal on the + * HS side of USB port. */ + uint32_t : 1; + __IM uint32_t DVBSTSHM : 1; /*!< [23..23] VBUS InputIndicates VBUS input signal on the HS side + * of USB port. */ + uint32_t : 8; + } DPUSR0R_b; + }; + + union + { + __IOM uint32_t DPUSR1R; /*!< (@ 0x00000164) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t DOVCAHE : 1; /*!< [4..4] OVRCURA Interrupt Enable Clear */ + __IOM uint32_t DOVCBHE : 1; /*!< [5..5] OVRCURB Interrupt Enable Clear */ + uint32_t : 1; + __IOM uint32_t DVBSTSHE : 1; /*!< [7..7] VBUS Interrupt Enable/Clear */ + uint32_t : 12; + __IM uint32_t DOVCAH : 1; /*!< [20..20] Indication of Return from OVRCURA Interrupt Source */ + __IM uint32_t DOVCBH : 1; /*!< [21..21] Indication of Return from OVRCURB Interrupt Source */ + uint32_t : 1; + __IM uint32_t DVBSTSH : 1; /*!< [23..23] Indication of Return from VBUS Interrupt Source */ + uint32_t : 8; + } DPUSR1R_b; + }; + + union + { + __IOM uint16_t DPUSR2R; /*!< (@ 0x00000168) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + __IM uint16_t DPINT : 1; /*!< [0..0] Indication of Return from DP Interrupt Source */ + __IM uint16_t DMINT : 1; /*!< [1..1] Indication of Return from DM Interrupt Source */ + uint16_t : 2; + __IM uint16_t DPVAL : 1; /*!< [4..4] DP InputIndicates DP input signal on the HS side of USB + * port. */ + __IM uint16_t DMVAL : 1; /*!< [5..5] DM InputIndicates DM input signal on the HS side of USB + * port. */ + uint16_t : 2; + __IOM uint16_t DPINTE : 1; /*!< [8..8] DP Interrupt Enable Clear */ + __IOM uint16_t DMINTE : 1; /*!< [9..9] DM Interrupt Enable Clear */ + uint16_t : 6; + } DPUSR2R_b; + }; + + union + { + __IOM uint16_t DPUSRCR; /*!< (@ 0x0000016A) Deep Standby USB Suspend/Resume Command Register */ + + struct + { + __IOM uint16_t FIXPHY : 1; /*!< [0..0] USB Transceiver Control Fix */ + __IOM uint16_t FIXPHYPD : 1; /*!< [1..1] USB Transceiver Control Fix for PLL */ + uint16_t : 14; + } DPUSRCR_b; + }; + __IM uint32_t RESERVED26[165]; + + union + { + __IOM uint32_t DPUSR0R_FS; /*!< (@ 0x00000400) Deep Software Standby USB Transceiver Control/Pin + * Monitor Register */ + + struct + { + __IOM uint32_t SRPC0 : 1; /*!< [0..0] USB Single End Receiver Control */ + __IOM uint32_t RPUE0 : 1; /*!< [1..1] DP Pull-Up Resistor Control */ + uint32_t : 1; + __IOM uint32_t DRPD0 : 1; /*!< [3..3] D+/D- Pull-Down Resistor Control */ + __IOM uint32_t FIXPHY0 : 1; /*!< [4..4] USB Transceiver Output Fix */ + uint32_t : 11; + __IM uint32_t DP0 : 1; /*!< [16..16] USB0 D+ InputIndicates the D+ input signal of the USB. */ + __IM uint32_t DM0 : 1; /*!< [17..17] USB D-InputIndicates the D- input signal of the USB. */ + uint32_t : 2; + __IM uint32_t DOVCA0 : 1; /*!< [20..20] USB OVRCURA InputIndicates the OVRCURA input signal + * of the USB. */ + __IM uint32_t DOVCB0 : 1; /*!< [21..21] USB OVRCURB InputIndicates the OVRCURB input signal + * of the USB. */ + uint32_t : 1; + __IM uint32_t DVBSTS0 : 1; /*!< [23..23] USB VBUS InputIndicates the VBUS input signal of the + * USB. */ + uint32_t : 8; + } DPUSR0R_FS_b; + }; + + union + { + __IOM uint32_t DPUSR1R_FS; /*!< (@ 0x00000404) Deep Software Standby USB Suspend/Resume Interrupt + * Register */ + + struct + { + __IOM uint32_t DPINTE0 : 1; /*!< [0..0] USB DP Interrupt Enable/Clear */ + __IOM uint32_t DMINTE0 : 1; /*!< [1..1] USB DM Interrupt Enable/Clear */ + uint32_t : 2; + __IOM uint32_t DOVRCRAE0 : 1; /*!< [4..4] USB OVRCURA Interrupt Enable/Clear */ + __IOM uint32_t DOVRCRBE0 : 1; /*!< [5..5] USB OVRCURB Interrupt Enable/Clear */ + uint32_t : 1; + __IOM uint32_t DVBSE0 : 1; /*!< [7..7] USB VBUS Interrupt Enable/Clear */ + uint32_t : 8; + __IM uint32_t DPINT0 : 1; /*!< [16..16] USB DP Interrupt Source Recovery */ + __IM uint32_t DMINT0 : 1; /*!< [17..17] USB DM Interrupt Source Recovery */ + uint32_t : 2; + __IM uint32_t DOVRCRA0 : 1; /*!< [20..20] USB OVRCURA Interrupt Source Recovery */ + __IM uint32_t DOVRCRB0 : 1; /*!< [21..21] USB OVRCURB Interrupt Source Recovery */ + uint32_t : 1; + __IM uint32_t DVBINT0 : 1; /*!< [23..23] USB VBUS Interrupt Source Recovery */ + uint32_t : 8; + } DPUSR1R_FS_b; + }; +} R_USB_FS0_Type; /*!< Size = 1032 (0x408) */ + +/* =========================================================================================================================== */ +/* ================ R_WDT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Watchdog Timer (R_WDT) + */ + +typedef struct /*!< (@ 0x40202600) R_WDT Structure */ +{ + union + { + __IOM uint8_t WDTRR; /*!< (@ 0x00000000) WDT Refresh Register */ + + struct + { + __IOM uint8_t WDTRR : 8; /*!< [7..0] WDTRR is an 8-bit register that refreshes the down-counter + * of the WDT. */ + } WDTRR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint16_t WDTCR; /*!< (@ 0x00000002) WDT Control Register */ + + struct + { + __IOM uint16_t TOPS : 2; /*!< [1..0] Timeout Period Selection */ + uint16_t : 2; + __IOM uint16_t CKS : 4; /*!< [7..4] Clock Division Ratio Selection */ + __IOM uint16_t RPES : 2; /*!< [9..8] Window End Position Selection */ + uint16_t : 2; + __IOM uint16_t RPSS : 2; /*!< [13..12] Window Start Position Selection */ + uint16_t : 2; + } WDTCR_b; + }; + + union + { + __IOM uint16_t WDTSR; /*!< (@ 0x00000004) WDT Status Register */ + + struct + { + __IM uint16_t CNTVAL : 14; /*!< [13..0] Down-Counter Value */ + __IOM uint16_t UNDFF : 1; /*!< [14..14] Underflow Flag */ + __IOM uint16_t REFEF : 1; /*!< [15..15] Refresh Error Flag */ + } WDTSR_b; + }; + + union + { + __IOM uint8_t WDTRCR; /*!< (@ 0x00000006) WDT Reset Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t RSTIRQS : 1; /*!< [7..7] Reset Interrupt Request Selection */ + } WDTRCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t WDTCSTPR; /*!< (@ 0x00000008) WDT Count Stop Control Register */ + + struct + { + uint8_t : 7; + __IOM uint8_t SLCSTP : 1; /*!< [7..7] Sleep-Mode Count Stop Control */ + } WDTCSTPR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; +} R_WDT_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_TZF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief TrustZone Filter (R_TZF) + */ + +typedef struct /*!< (@ 0x40004000) R_TZF Structure */ +{ + __IM uint16_t RESERVED[8]; + + union + { + __IOM uint16_t TZFOAD; /*!< (@ 0x00000010) TrustZone Filter Operation After Detection register */ + + struct + { + __IOM uint16_t OAD : 1; /*!< [0..0] Operation after detection */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code */ + } TZFOAD_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t TZFPT; /*!< (@ 0x00000014) TrustZone Filter Protect register */ + + struct + { + __IOM uint16_t PROTECT : 1; /*!< [0..0] Protection of register */ + uint16_t : 7; + __OM uint16_t KEY : 8; /*!< [15..8] Key Code */ + } TZFPT_b; + }; +} R_TZF_Type; /*!< Size = 22 (0x16) */ + +/* =========================================================================================================================== */ +/* ================ R_CPSCU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CPU System Security Control Unit (R_CPSCU) + */ + +typedef struct /*!< (@ 0x40008000) R_CPSCU Structure */ +{ + union + { + __IOM uint32_t CSAR; /*!< (@ 0x00000000) Cache Security Attribution Register */ + + struct + { + __IOM uint32_t CACHESA : 1; /*!< [0..0] Security Attributes of Registers for Cache Control */ + __IOM uint32_t CACHELSA : 1; /*!< [1..1] Security Attributes of Registers for Cache Line Configuration */ + __IOM uint32_t CACHEESA : 1; /*!< [2..2] Security Attributes of Registers for Cache Error */ + uint32_t : 29; + } CSAR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t SRAMSAR; /*!< (@ 0x00000010) SRAM Security Attribution Register */ + + struct + { + __IOM uint32_t SRAMSA0 : 1; /*!< [0..0] Security attributes of registers for SRAM Protection */ + __IOM uint32_t SRAMSA1 : 1; /*!< [1..1] Security attributes of registers for SRAM Protection + * 2 */ + __IOM uint32_t SRAMSA2 : 1; /*!< [2..2] Security attributes of registers for ECC Relation */ + uint32_t : 29; + } SRAMSAR_b; + }; + + union + { + __IOM uint32_t STBRAMSAR; /*!< (@ 0x00000014) Standby RAM memory Security Attribution Register */ + + struct + { + __IOM uint32_t NSBSTBR : 4; /*!< [3..0] Security attributes of each region for Standby RAM */ + uint32_t : 28; + } STBRAMSAR_b; + }; + __IM uint32_t RESERVED1[6]; + + union + { + __IOM uint32_t DTCSAR; /*!< (@ 0x00000030) DTC Controller Security Attribution Register */ + + struct + { + __IOM uint32_t DTCSTSA : 1; /*!< [0..0] DTC Security Attribution */ + uint32_t : 31; + } DTCSAR_b; + }; + + union + { + __IOM uint32_t DMACSAR; /*!< (@ 0x00000034) DMAC Controller Security Attribution Register */ + + struct + { + __IOM uint32_t DMASTSA : 1; /*!< [0..0] DMAST Security Attribution */ + uint32_t : 31; + } DMACSAR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t ICUSARA; /*!< (@ 0x00000040) ICU Security Attribution Register A */ + + struct + { + __IOM uint32_t SAIRQCRn : 16; /*!< [15..0] Security Attributes of registers for the IRQCRn registers */ + uint32_t : 16; + } ICUSARA_b; + }; + + union + { + __IOM uint32_t ICUSARB; /*!< (@ 0x00000044) ICU Security Attribution Register B */ + + struct + { + __IOM uint32_t SANMI : 1; /*!< [0..0] Security Attributes of nonmaskable interrupt */ + uint32_t : 31; + } ICUSARB_b; + }; + + union + { + __IOM uint32_t ICUSARC; /*!< (@ 0x00000048) ICU Security Attribution Register C */ + + struct + { + __IOM uint32_t SADMACn : 8; /*!< [7..0] Security Attributes of registers for DMAC channel */ + uint32_t : 24; + } ICUSARC_b; + }; + + union + { + __IOM uint32_t ICUSARD; /*!< (@ 0x0000004C) ICU Security Attribution Register D */ + + struct + { + __IOM uint32_t SASELSR0 : 1; /*!< [0..0] Security Attributes of registers for SELSR0 */ + uint32_t : 31; + } ICUSARD_b; + }; + + union + { + __IOM uint32_t ICUSARE; /*!< (@ 0x00000050) ICU Security Attribution Register E */ + + struct + { + uint32_t : 16; + __IOM uint32_t SAIWDTWUP : 1; /*!< [16..16] Security Attributes of registers for WUPEN0.b 16 */ + uint32_t : 1; + __IOM uint32_t SALVD1WUP : 1; /*!< [18..18] Security Attributes of registers for WUPEN0.b 18 */ + __IOM uint32_t SALVD2WUP : 1; /*!< [19..19] Security Attributes of registers for WUPEN0.b 19 */ + __IOM uint32_t SAVBATTWUP : 1; /*!< [20..20] Security Attributes of registers for WUPEN0.b 20 */ + uint32_t : 3; + __IOM uint32_t SARTCALMWUP : 1; /*!< [24..24] Security Attributes of registers for WUPEN0.b 24 */ + __IOM uint32_t SARTCPRDWUP : 1; /*!< [25..25] Security Attributes of registers for WUPEN0.b 25 */ + uint32_t : 1; + __IOM uint32_t SAUSBFS0WUP : 1; /*!< [27..27] Security Attributes of registers for WUPEN0.b 27 */ + __IOM uint32_t SAAGT1UDWUP : 1; /*!< [28..28] Security Attributes of registers for WUPEN0.b 28 */ + __IOM uint32_t SAAGT1CAWUP : 1; /*!< [29..29] Security Attributes of registers for WUPEN0.b 29 */ + __IOM uint32_t SAAGT1CBWUP : 1; /*!< [30..30] Security Attributes of registers for WUPEN0.b 30 */ + __IOM uint32_t SAIIC0WUP : 1; /*!< [31..31] Security Attributes of registers for WUPEN0.b 31 */ + } ICUSARE_b; + }; + + union + { + __IOM uint32_t ICUSARF; /*!< (@ 0x00000054) ICU Security Attribution Register F */ + + struct + { + __IOM uint32_t SAAGT3UDWUP : 1; /*!< [0..0] Security Attributes of registers for WUPEN1.b 0 */ + __IOM uint32_t SAAGT3CAWUP : 1; /*!< [1..1] Security Attributes of registers for WUPEN1.b 1 */ + __IOM uint32_t SAAGT3CBWUP : 1; /*!< [2..2] Security Attributes of registers for WUPEN1.b 2 */ + __IOM uint32_t SACOMPHS0WUP : 1; /*!< [3..3] Security attributes of registers for WUPEN1.b 3 */ + uint32_t : 4; + __IOM uint32_t SAULP0UWUP : 1; /*!< [8..8] Security attributes of registers for WUPEN1.b 8 */ + __IOM uint32_t SAULP0AWUP : 1; /*!< [9..9] Security attributes of registers for WUPEN1.b 9 */ + __IOM uint32_t SAULP0BWUP : 1; /*!< [10..10] Security Attributes of registers for WUPEN1.b 10 */ + __IOM uint32_t SAI3CWUP : 1; /*!< [11..11] Security Attributes of registers for WUPEN1.b 11 */ + __IOM uint32_t SAULP1UWUP : 1; /*!< [12..12] Security Attributes of registers for WUPEN1.b 12 */ + __IOM uint32_t SAULP1AWUP : 1; /*!< [13..13] Security Attributes of registers for WUPEN1.b 13 */ + __IOM uint32_t SAULP1BWUP : 1; /*!< [14..14] Security Attributes of registers for WUPEN1.b 14 */ + uint32_t : 17; + } ICUSARF_b; + }; + __IM uint32_t RESERVED3[6]; + + union + { + __IOM uint32_t ICUSARG; /*!< (@ 0x00000070) ICU Security Attribution Register G */ + + struct + { + __IOM uint32_t SAIELSRn : 32; /*!< [31..0] Security Attributes of registers for IELSR31 to IELSR0 */ + } ICUSARG_b; + }; + + union + { + __IOM uint32_t ICUSARH; /*!< (@ 0x00000074) ICU Security Attribution Register H */ + + struct + { + __IOM uint32_t SAIELSRn : 32; /*!< [31..0] Security Attributes of registers for IELSR63 to IELSR32 */ + } ICUSARH_b; + }; + + union + { + __IOM uint32_t ICUSARI; /*!< (@ 0x00000078) ICU Security Attribution Register I */ + + struct + { + __IOM uint32_t SAIELSRn : 32; /*!< [31..0] Security Attributes of registers for IELSR95 to IELSR64 */ + } ICUSARI_b; + }; + __IM uint32_t RESERVED4[33]; + + union + { + __IOM uint32_t BUSSARA; /*!< (@ 0x00000100) Bus Security Attribution Register A */ + + struct + { + __IOM uint32_t BUSSA0 : 1; /*!< [0..0] BUS Security Attribution A0 */ + uint32_t : 31; + } BUSSARA_b; + }; + + union + { + __IOM uint32_t BUSSARB; /*!< (@ 0x00000104) Bus Security Attribution Register B */ + + struct + { + __IOM uint32_t BUSSB0 : 1; /*!< [0..0] BUS Security Attribution B0 */ + uint32_t : 31; + } BUSSARB_b; + }; + __IM uint32_t RESERVED5[10]; + + union + { + __IOM uint32_t MMPUSARA; /*!< (@ 0x00000130) Master Memory Protection Unit Security Attribution + * Register A */ + + struct + { + __IOM uint32_t MMPUAnSA : 8; /*!< [7..0] MMPUAn Security Attribution (n = 0 to 7) */ + uint32_t : 24; + } MMPUSARA_b; + }; + + union + { + __IOM uint32_t MMPUSARB; /*!< (@ 0x00000134) Master Memory Protection Unit Security Attribution + * Register B */ + + struct + { + __IOM uint32_t MMPUB0SA : 1; /*!< [0..0] MMPUB0 Security Attribution */ + uint32_t : 31; + } MMPUSARB_b; + }; + __IM uint32_t RESERVED6[26]; + + union + { + __IOM uint32_t DMACCHSAR; /*!< (@ 0x000001A0) DMA channel Security Attribution Register */ + + struct + { + __IOM uint32_t DMACCHSARn : 8; /*!< [7..0] Security attributes of output and registers for DMAC + * channel */ + uint32_t : 24; + } DMACCHSAR_b; + }; + __IM uint32_t RESERVED7[3]; + + union + { + __IOM uint32_t CPUDSAR; /*!< (@ 0x000001B0) CPU Debug Security Attribution Register */ + + struct + { + __IOM uint32_t CPUDSA0 : 1; /*!< [0..0] CPU Debug Security Attribution 0 */ + uint32_t : 31; + } CPUDSAR_b; + }; + __IM uint32_t RESERVED8[147]; + + union + { + __IOM uint32_t SRAMSABAR0; /*!< (@ 0x00000400) SRAM Security Attribute Boundary Address Register + * 0 */ + + struct + { + uint32_t : 13; + __IOM uint32_t SRAMSABAR : 8; /*!< [20..13] Boundary address between secure and non-secure (Start + * address of non-secure region). */ + uint32_t : 11; + } SRAMSABAR0_b; + }; + + union + { + __IOM uint32_t SRAMSABAR1; /*!< (@ 0x00000404) SRAM Security Attribute Boundary Address Register + * 1 */ + + struct + { + uint32_t : 13; + __IOM uint32_t SRAMSABAR : 8; /*!< [20..13] Boundary address between secure and non-secure (Start + * address of non-secure region). */ + uint32_t : 11; + } SRAMSABAR1_b; + }; + __IM uint32_t RESERVED9[126]; + + union + { + __IOM uint32_t TEVTRCR; /*!< (@ 0x00000600) Trusted Event Route Control Register */ + + struct + { + __IOM uint32_t TEVTE : 1; /*!< [0..0] Trusted Event Route Control Register for IELSRn, DELSRn + * and ELCSRn */ + uint32_t : 31; + } TEVTRCR_b; + }; +} R_CPSCU_Type; /*!< Size = 1540 (0x604) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC_B ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC_B) + */ + +typedef struct /*!< (@ 0x40311000) R_DOC_B Structure */ +{ + union + { + __IOM uint8_t DOCR; /*!< (@ 0x00000000) DOC Control Register */ + + struct + { + __IOM uint8_t OMS : 2; /*!< [1..0] Operating Mode Select */ + uint8_t : 1; + __IOM uint8_t DOBW : 1; /*!< [3..3] Data Operation Bit Width Select */ + __IOM uint8_t DCSEL : 3; /*!< [6..4] Detection Condition Select */ + uint8_t : 1; + } DOCR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint8_t DOSR; /*!< (@ 0x00000004) DOC Flag Status Register */ + + struct + { + __IM uint8_t DOPCF : 1; /*!< [0..0] Data Operation Circuit Flag */ + uint8_t : 7; + } DOSR_b; + }; + __IM uint8_t RESERVED2; + __IM uint16_t RESERVED3; + + union + { + __IOM uint8_t DOSCR; /*!< (@ 0x00000008) DOC Flag Status Clear Register */ + + struct + { + __OM uint8_t DOPCFCL : 1; /*!< [0..0] DOPCF Clear */ + uint8_t : 7; + } DOSCR_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; + __IOM uint32_t DODIR; /*!< (@ 0x0000000C) DOC Data Input Register */ + __IOM uint32_t DODSR0; /*!< (@ 0x00000010) DOC Data Setting Register 0 */ + __IOM uint32_t DODSR1; /*!< (@ 0x00000014) DOC Data Setting Register 1 */ +} R_DOC_B_Type; /*!< Size = 24 (0x18) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI_B0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Communication Interface 0 (R_SCI_B0) + */ + +typedef struct /*!< (@ 0x40358000) R_SCI_B0 Structure */ +{ + union + { + union + { + __IM uint32_t RDR; /*!< (@ 0x00000000) Receive Data Register */ + + struct + { + __IM uint32_t RDAT : 9; /*!< [8..0] Serial receive data */ + __IM uint32_t MPB : 1; /*!< [9..9] Multi-processor flag */ + __IM uint32_t DR : 1; /*!< [10..10] Receive data ready flag */ + __IM uint32_t FPER : 1; /*!< [11..11] FIFO parity error flag */ + __IM uint32_t FFER : 1; /*!< [12..12] FIFO framing error flag */ + uint32_t : 11; + __IM uint32_t ORER : 1; /*!< [24..24] Overrun Error flag */ + uint32_t : 2; + __IM uint32_t PER : 1; /*!< [27..27] Parity error flag */ + __IM uint32_t FER : 1; /*!< [28..28] Framing error flag */ + uint32_t : 3; + } RDR_b; + }; + + union + { + __IOM uint8_t RDR_BY; /*!< (@ 0x00000000) Receive Data Register (byte access) */ + + struct + { + __IOM uint8_t RDAT : 8; /*!< [7..0] Serial receive data */ + } RDR_BY_b; + }; + }; + + union + { + union + { + __IOM uint32_t TDR; /*!< (@ 0x00000004) Transmit Data Register */ + + struct + { + __IOM uint32_t TDAT : 9; /*!< [8..0] Serial transmit data */ + __IOM uint32_t MPBT : 1; /*!< [9..9] Multi-processor transfer bit flag */ + uint32_t : 2; + __IOM uint32_t TSYNC : 1; /*!< [12..12] Transmit SYNC data */ + uint32_t : 19; + } TDR_b; + }; + + union + { + __IOM uint8_t TDR_BY; /*!< (@ 0x00000004) Transmit Data Register (byte access) */ + + struct + { + __IOM uint8_t TDAT : 8; /*!< [7..0] Serial transmit data */ + } TDR_BY_b; + }; + }; + + union + { + __IOM uint32_t CCR0; /*!< (@ 0x00000008) Common Control Register 0 */ + + struct + { + __IOM uint32_t RE : 1; /*!< [0..0] Receive Enable */ + uint32_t : 3; + __IOM uint32_t TE : 1; /*!< [4..4] Transmit Enable */ + uint32_t : 3; + __IOM uint32_t MPIE : 1; /*!< [8..8] Multi-Processor Interrupt Enable */ + __IOM uint32_t DCME : 1; /*!< [9..9] Data Compare Match Enable */ + __IOM uint32_t IDSEL : 1; /*!< [10..10] ID frame select */ + uint32_t : 5; + __IOM uint32_t RIE : 1; /*!< [16..16] Receive Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t TIE : 1; /*!< [20..20] Transmit Interrupt Enable */ + __IOM uint32_t TEIE : 1; /*!< [21..21] Transmit End Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SSE : 1; /*!< [24..24] SSn Pin Function Enable */ + uint32_t : 7; + } CCR0_b; + }; + + union + { + __IOM uint32_t CCR1; /*!< (@ 0x0000000C) Common Control Register 1 */ + + struct + { + __IOM uint32_t CTSE : 1; /*!< [0..0] CTS Enable */ + __IOM uint32_t CTSPEN : 1; /*!< [1..1] CTS external pin Enable */ + uint32_t : 2; + __IOM uint32_t SPB2DT : 1; /*!< [4..4] Serial port break data select */ + __IOM uint32_t SPB2IO : 1; /*!< [5..5] Serial port break I/O */ + uint32_t : 2; + __IOM uint32_t PE : 1; /*!< [8..8] Parity Enable */ + __IOM uint32_t PM : 1; /*!< [9..9] Parity Mode */ + uint32_t : 2; + __IOM uint32_t TINV : 1; /*!< [12..12] TXD invert */ + __IOM uint32_t RINV : 1; /*!< [13..13] RXD invert */ + uint32_t : 2; + __IOM uint32_t SPLP : 1; /*!< [16..16] Loopback Control */ + uint32_t : 3; + __IOM uint32_t SHARPS : 1; /*!< [20..20] Half-duplex communication select */ + uint32_t : 3; + __IOM uint32_t NFCS : 3; /*!< [26..24] Noise Filter Clock Select */ + uint32_t : 1; + __IOM uint32_t NFEN : 1; /*!< [28..28] Digital Noise Filter Function Enable */ + uint32_t : 3; + } CCR1_b; + }; + + union + { + __IOM uint32_t CCR2; /*!< (@ 0x00000010) Common Control Register 2 */ + + struct + { + __IOM uint32_t BCP : 3; /*!< [2..0] Base Clock Pulse */ + uint32_t : 1; + __IOM uint32_t BGDM : 1; /*!< [4..4] Baud Rate Generator Double-Speed Mode Select */ + __IOM uint32_t ABCS : 1; /*!< [5..5] Asynchronous Mode Base Clock Select */ + __IOM uint32_t ABCSE : 1; /*!< [6..6] Asynchronous Mode Extended Base Clock Select */ + uint32_t : 1; + __IOM uint32_t BRR : 8; /*!< [15..8] Bit rate setting */ + __IOM uint32_t BRME : 1; /*!< [16..16] Bit Modulation Enable */ + uint32_t : 3; + __IOM uint32_t CKS : 2; /*!< [21..20] Clock Select */ + uint32_t : 2; + __IOM uint32_t MDDR : 8; /*!< [31..24] Modulation Duty Setting */ + } CCR2_b; + }; + + union + { + __IOM uint32_t CCR3; /*!< (@ 0x00000014) Common Control Register 3 */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] Clock Phase Select */ + __IOM uint32_t CPOL : 1; /*!< [1..1] Clock Polarity Select */ + uint32_t : 5; + __IOM uint32_t BPEN : 1; /*!< [7..7] Synchronizer bypass enable */ + __IOM uint32_t CHR : 2; /*!< [9..8] Character Length */ + uint32_t : 2; + __IOM uint32_t LSBF : 1; /*!< [12..12] LSB First select */ + __IOM uint32_t SINV : 1; /*!< [13..13] Transmitted/Received Data Invert */ + __IOM uint32_t STP : 1; /*!< [14..14] Stop Bit Length */ + __IOM uint32_t RXDESEL : 1; /*!< [15..15] Asynchronous Start Bit Edge Detection Select */ + __IOM uint32_t MOD : 3; /*!< [18..16] Communication mode select */ + __IOM uint32_t MP : 1; /*!< [19..19] Multi-Processor Mode */ + __IOM uint32_t FM : 1; /*!< [20..20] FIFO Mode select */ + __IOM uint32_t DEN : 1; /*!< [21..21] Driver enable */ + uint32_t : 2; + __IOM uint32_t CKE : 2; /*!< [25..24] Clock enable */ + uint32_t : 2; + __IOM uint32_t GM : 1; /*!< [28..28] GSM Mode */ + __IOM uint32_t BLK : 1; /*!< [29..29] Block Transfer Mode */ + uint32_t : 2; + } CCR3_b; + }; + + union + { + __IOM uint32_t CCR4; /*!< (@ 0x00000018) Common Control Register 4 */ + + struct + { + __IOM uint32_t CMPD : 9; /*!< [8..0] Compare Match Data */ + uint32_t : 7; + __IOM uint32_t ASEN : 1; /*!< [16..16] Adjust receive sampling timing enable */ + __IOM uint32_t ATEN : 1; /*!< [17..17] Adjust transmit timing enable */ + uint32_t : 1; + __IOM uint32_t SCKSEL : 1; /*!< [19..19] Master receive clock selection bit. */ + uint32_t : 4; + __IOM uint32_t AST : 3; /*!< [26..24] Adjustment value for receive Sampling Timing */ + __IOM uint32_t AJD : 1; /*!< [27..27] Adjustment Direction for receive sampling timing */ + __IOM uint32_t ATT : 3; /*!< [30..28] Adjustment value for Transmit timing */ + __IOM uint32_t AET : 1; /*!< [31..31] Adjustment edge for transmit timing */ + } CCR4_b; + }; + + union + { + __IM uint8_t CESR; /*!< (@ 0x0000001C) Communication Enable Status Register */ + + struct + { + __IM uint8_t RIST : 1; /*!< [0..0] RE Internal status */ + uint8_t : 3; + __IM uint8_t TIST : 1; /*!< [4..4] TE Internal status */ + uint8_t : 3; + } CESR_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t ICR; /*!< (@ 0x00000020) Simple I2C Control Register */ + + struct + { + __IOM uint32_t IICDL : 5; /*!< [4..0] SDA Delay Output Select */ + uint32_t : 3; + __IOM uint32_t IICINTM : 1; /*!< [8..8] IIC Interrupt Mode Select */ + __IOM uint32_t IICCSC : 1; /*!< [9..9] Clock Synchronization */ + uint32_t : 3; + __IOM uint32_t IICACKT : 1; /*!< [13..13] ACK Transmission Data */ + uint32_t : 2; + __IOM uint32_t IICSTAREQ : 1; /*!< [16..16] Start Condition Generation */ + __IOM uint32_t IICRSTAREQ : 1; /*!< [17..17] Restart Condition Generation */ + __IOM uint32_t IICSTPREQ : 1; /*!< [18..18] Stop Condition Generation */ + uint32_t : 1; + __IOM uint32_t IICSDAS : 2; /*!< [21..20] SDA Output Select */ + __IOM uint32_t IICSCLS : 2; /*!< [23..22] SCL Output Select */ + uint32_t : 8; + } ICR_b; + }; + + union + { + __IOM uint32_t FCR; /*!< (@ 0x00000024) FIFO Control Register */ + + struct + { + __IOM uint32_t DRES : 1; /*!< [0..0] Receive data ready error select bit */ + uint32_t : 7; + __IOM uint32_t TTRG : 5; /*!< [12..8] Transmit FIFO data trigger number */ + uint32_t : 2; + __OM uint32_t TFRST : 1; /*!< [15..15] Transmit FIFO Data Register Reset */ + __IOM uint32_t RTRG : 5; /*!< [20..16] Receive FIFO data trigger number */ + uint32_t : 2; + __OM uint32_t RFRST : 1; /*!< [23..23] Receive FIFO Data Register Reset */ + __IOM uint32_t RSTRG : 5; /*!< [28..24] RTS Output Active Trigger Number Select */ + uint32_t : 3; + } FCR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t MCR; /*!< (@ 0x0000002C) Manchester Control Register */ + + struct + { + __IOM uint32_t RMPOL : 1; /*!< [0..0] Polarity of Received Manchester Code */ + __IOM uint32_t TMPOL : 1; /*!< [1..1] Polarity of Transmit Manchester Code */ + __IOM uint32_t ERTEN : 1; /*!< [2..2] Manchester Edge Retiming Enable */ + uint32_t : 1; + __IOM uint32_t SYNVAL : 1; /*!< [4..4] SYNC value Setting */ + __IOM uint32_t SYNSEL : 1; /*!< [5..5] SYNC Select */ + __IOM uint32_t SBSEL : 1; /*!< [6..6] Start Bit Select */ + uint32_t : 1; + __IOM uint32_t TPLEN : 4; /*!< [11..8] Transmit preface length */ + __IOM uint32_t TPPAT : 2; /*!< [13..12] Transmit preface pattern */ + uint32_t : 2; + __IOM uint32_t RPLEN : 4; /*!< [19..16] Receive Preface Length */ + __IOM uint32_t RPPAT : 2; /*!< [21..20] Receive Preface Pattern */ + uint32_t : 2; + __IOM uint32_t PFEREN : 1; /*!< [24..24] Preface Error Enable */ + __IOM uint32_t SYEREN : 1; /*!< [25..25] Receive SYNC Error Enable */ + __IOM uint32_t SBEREN : 1; /*!< [26..26] Start Bit Error Enable */ + uint32_t : 5; + } MCR_b; + }; + + union + { + __IOM uint32_t DCR; /*!< (@ 0x00000030) Driver Control Register */ + + struct + { + __IOM uint32_t DEPOL : 1; /*!< [0..0] Driver effective polarity select */ + uint32_t : 7; + __IOM uint32_t DEAST : 5; /*!< [12..8] Driver Assertion Time */ + uint32_t : 3; + __IOM uint32_t DENGT : 5; /*!< [20..16] Driver negate time */ + uint32_t : 11; + } DCR_b; + }; + + union + { + __IOM uint32_t XCR0; /*!< (@ 0x00000034) Simple LIN(SCIX) Control Register 0 */ + + struct + { + __IOM uint32_t TCSS : 2; /*!< [1..0] Timer count clock source selection */ + uint32_t : 6; + __IOM uint32_t BFE : 1; /*!< [8..8] Break Field enable */ + __IOM uint32_t CF0RE : 1; /*!< [9..9] Control Field 0 enable */ + __IOM uint32_t CF1DS : 2; /*!< [11..10] Control Field1 compare data select */ + __IOM uint32_t PIBE : 1; /*!< [12..12] Priority interrupt bit enable */ + __IOM uint32_t PIBS : 3; /*!< [15..13] Priority interrupt bit select */ + __IOM uint32_t BFOIE : 1; /*!< [16..16] Break Field output completion interrupt enable */ + __IOM uint32_t BCDIE : 1; /*!< [17..17] Bus conflict detection interrupt enable */ + uint32_t : 2; + __IOM uint32_t BFDIE : 1; /*!< [20..20] Break Field detection interrupt enable */ + __IOM uint32_t COFIE : 1; /*!< [21..21] Counter overflow interrupt enable */ + __IOM uint32_t AEDIE : 1; /*!< [22..22] Active edge detection interrupt enable */ + uint32_t : 1; + __IOM uint32_t BCCS : 2; /*!< [25..24] Bus conflict detection clock selection */ + uint32_t : 6; + } XCR0_b; + }; + + union + { + __IOM uint32_t XCR1; /*!< (@ 0x00000038) Simple LIN(SCIX) Control Register 1 */ + + struct + { + __IOM uint32_t TCST : 1; /*!< [0..0] Break Field output timer count start trigger */ + uint32_t : 3; + __IOM uint32_t SDST : 1; /*!< [4..4] Start Frame detection enable */ + __IOM uint32_t BMEN : 1; /*!< [5..5] Bit rate measurement enable */ + uint32_t : 2; + __IOM uint32_t PCF1D : 8; /*!< [15..8] Priority compare data for Control Field 1 */ + __IOM uint32_t SCF1D : 8; /*!< [23..16] Secondary compare data for Control Field 1 */ + __IOM uint32_t CF1CE : 8; /*!< [31..24] Control Field 1 compare bit enable */ + } XCR1_b; + }; + + union + { + __IOM uint32_t XCR2; /*!< (@ 0x0000003C) Simple LIN(SCIX) Control Register 2 */ + + struct + { + __IOM uint32_t CF0D : 8; /*!< [7..0] Control Field 0compare data */ + __IOM uint32_t CF0CE : 8; /*!< [15..8] Control Field 0 compare bit enable */ + __IOM uint32_t BFLW : 16; /*!< [31..16] Break Field length setting */ + } XCR2_b; + }; + __IM uint32_t RESERVED3[2]; + + union + { + __IM uint32_t CSR; /*!< (@ 0x00000048) Common Status Register */ + + struct + { + uint32_t : 4; + __IM uint32_t ERS : 1; /*!< [4..4] Error Signal Status Flag */ + uint32_t : 10; + __IM uint32_t RXDMON : 1; /*!< [15..15] Serial input data monitor bit */ + __IM uint32_t DCMF : 1; /*!< [16..16] Data Compare Match Flag */ + __IM uint32_t DPER : 1; /*!< [17..17] Data Compare Match Parity Error Flag */ + __IM uint32_t DFER : 1; /*!< [18..18] Data Compare Match Framing Error Flag */ + uint32_t : 5; + __IM uint32_t ORER : 1; /*!< [24..24] Overrun Error Flag */ + uint32_t : 1; + __IM uint32_t MFF : 1; /*!< [26..26] Mode Fault Flag */ + __IM uint32_t PER : 1; /*!< [27..27] Parity Error Flag */ + __IM uint32_t FER : 1; /*!< [28..28] Framing Error Flag */ + __IM uint32_t TDRE : 1; /*!< [29..29] Transmit Data Empty Flag */ + __IM uint32_t TEND : 1; /*!< [30..30] Transmit End Flag */ + __IM uint32_t RDRF : 1; /*!< [31..31] Receive Data Full Flag */ + } CSR_b; + }; + + union + { + __IM uint32_t ISR; /*!< (@ 0x0000004C) Simple I2C Status Register */ + + struct + { + __IM uint32_t IICACKR : 1; /*!< [0..0] ACK Reception Data Flag */ + uint32_t : 2; + __IM uint32_t IICSTIF : 1; /*!< [3..3] Issuing of Start, Restart, or Stop Condition Completed + * Flag */ + uint32_t : 28; + } ISR_b; + }; + + union + { + __IM uint32_t FRSR; /*!< (@ 0x00000050) FIFO Receive Status Register */ + + struct + { + __IM uint32_t DR : 1; /*!< [0..0] Receive Data Ready flag */ + uint32_t : 7; + __IM uint32_t R : 6; /*!< [13..8] Receive-FIFO Data Count */ + uint32_t : 2; + __IM uint32_t PNUM : 6; /*!< [21..16] Parity Error Count */ + uint32_t : 2; + __IM uint32_t FNUM : 6; /*!< [29..24] Framing Error Count */ + uint32_t : 2; + } FRSR_b; + }; + + union + { + __IM uint32_t FTSR; /*!< (@ 0x00000054) FIFO Transmit Status Register */ + + struct + { + __IM uint32_t T : 6; /*!< [5..0] Transmit-FIFO Data Count */ + uint32_t : 26; + } FTSR_b; + }; + + union + { + __IM uint32_t MSR; /*!< (@ 0x00000058) Manchester Status Register */ + + struct + { + __IM uint32_t PFER : 1; /*!< [0..0] Preface Error flag */ + __IM uint32_t SYER : 1; /*!< [1..1] SYNC Error flag */ + __IM uint32_t SBER : 1; /*!< [2..2] Start Bit Error flag */ + uint32_t : 1; + __IM uint32_t MER : 1; /*!< [4..4] Manchester Error Flag */ + uint32_t : 1; + __IM uint32_t RSYNC : 1; /*!< [6..6] Receive SYNC data bit */ + uint32_t : 25; + } MSR_b; + }; + + union + { + __IM uint32_t XSR0; /*!< (@ 0x0000005C) Simple LIN (SCIX) Status Register 0 */ + + struct + { + __IM uint32_t SFSF : 1; /*!< [0..0] Start Frame Status flag */ + __IM uint32_t RXDSF : 1; /*!< [1..1] RXDn input status flag */ + uint32_t : 6; + __IM uint32_t BFOF : 1; /*!< [8..8] Break Field Output completion flag */ + __IM uint32_t BCDF : 1; /*!< [9..9] Bus Conflict detection flag */ + __IM uint32_t BFDF : 1; /*!< [10..10] Break Field detection flag */ + __IM uint32_t CF0MF : 1; /*!< [11..11] Control Field 0 compare match flag */ + __IM uint32_t CF1MF : 1; /*!< [12..12] Control Field 1 compare match flag */ + __IM uint32_t PIBDF : 1; /*!< [13..13] Priority interrupt bit detection flag */ + __IM uint32_t COF : 1; /*!< [14..14] Counter Overflow flag */ + __IM uint32_t AEDF : 1; /*!< [15..15] Active Edge detection flag */ + __IM uint32_t CF0RD : 8; /*!< [23..16] Control Field 0 received data */ + __IM uint32_t CF1RD : 8; /*!< [31..24] Control Field 1 received data */ + } XSR0_b; + }; + + union + { + __IM uint32_t XSR1; /*!< (@ 0x00000060) Simple LIN(SCIX) Status Register 1 */ + + struct + { + __IM uint32_t TCNT : 16; /*!< [15..0] Timer Count Capture value */ + uint32_t : 16; + } XSR1_b; + }; + __IM uint32_t RESERVED4; + + union + { + __OM uint32_t CFCLR; /*!< (@ 0x00000068) Common Flag Clear Register */ + + struct + { + uint32_t : 4; + __OM uint32_t ERSC : 1; /*!< [4..4] ERS clear bit */ + uint32_t : 11; + __OM uint32_t DCMFC : 1; /*!< [16..16] DCMF clear bit */ + __OM uint32_t DPERC : 1; /*!< [17..17] DPER clear bit */ + __OM uint32_t DFERC : 1; /*!< [18..18] DFER clear bit */ + uint32_t : 5; + __OM uint32_t ORERC : 1; /*!< [24..24] ORER clear bit */ + uint32_t : 1; + __OM uint32_t MFFC : 1; /*!< [26..26] MFF clear bit */ + __OM uint32_t PERC : 1; /*!< [27..27] PER clear bit */ + __OM uint32_t FERC : 1; /*!< [28..28] FER clear bit */ + __OM uint32_t TDREC : 1; /*!< [29..29] TDRE clear bit */ + uint32_t : 1; + __OM uint32_t RDRFC : 1; /*!< [31..31] RDRF clear bit */ + } CFCLR_b; + }; + + union + { + __OM uint32_t ICFCLR; /*!< (@ 0x0000006C) Simple I2C Flag Clear Register */ + + struct + { + uint32_t : 3; + __OM uint32_t IICSTIFC : 1; /*!< [3..3] IICSTIF clear bit */ + uint32_t : 28; + } ICFCLR_b; + }; + + union + { + __OM uint32_t FFCLR; /*!< (@ 0x00000070) FIFO Flag Clear Register */ + + struct + { + __OM uint32_t DRC : 1; /*!< [0..0] DR clear bit */ + uint32_t : 31; + } FFCLR_b; + }; + + union + { + __OM uint32_t MFCLR; /*!< (@ 0x00000074) Manchester Flag Clear Register */ + + struct + { + __OM uint32_t PFERC : 1; /*!< [0..0] PFER clear bit */ + __OM uint32_t SYERC : 1; /*!< [1..1] SYER clear bit */ + __OM uint32_t SBERC : 1; /*!< [2..2] SBER clear bit */ + uint32_t : 1; + __OM uint32_t MERC : 1; /*!< [4..4] MER clear bit */ + uint32_t : 27; + } MFCLR_b; + }; + + union + { + __OM uint32_t XFCLR; /*!< (@ 0x00000078) Simple LIN(SCIX) Flag Clear Register */ + + struct + { + uint32_t : 8; + __OM uint32_t BFOC : 1; /*!< [8..8] BFOF clear bit */ + __OM uint32_t BCDC : 1; /*!< [9..9] BCDF clear bit */ + __OM uint32_t BFDC : 1; /*!< [10..10] BFDF clear bit */ + __OM uint32_t CF0MC : 1; /*!< [11..11] CF0MF clear bit */ + __OM uint32_t CF1MC : 1; /*!< [12..12] CF1MF clear bit */ + __OM uint32_t PIBDC : 1; /*!< [13..13] PIBDF clear bit */ + __OM uint32_t COFC : 1; /*!< [14..14] COFF clear bit */ + __OM uint32_t AEDC : 1; /*!< [15..15] AEDF clear bit */ + uint32_t : 16; + } XFCLR_b; + }; +} R_SCI_B0_Type; /*!< Size = 124 (0x7c) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI_B0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Peripheral Interface 0 (R_SPI_B0) + */ + +typedef struct /*!< (@ 0x4035C000) R_SPI_B0 Structure */ +{ + __IOM uint32_t SPDR; /*!< (@ 0x00000000) RSPI Data Register */ + + union + { + __IOM uint32_t SPDECR; /*!< (@ 0x00000004) RSPI Delay Control Register */ + + struct + { + __IOM uint32_t SCKDL : 3; /*!< [2..0] RSPCK Delay */ + uint32_t : 5; + __IOM uint32_t SLNDL : 3; /*!< [10..8] SSL Negation Delay */ + uint32_t : 5; + __IOM uint32_t SPNDL : 3; /*!< [18..16] RSPI Next-Access Delay */ + uint32_t : 5; + __IOM uint32_t ARST : 3; /*!< [26..24] Receive Sampling Timing Adjustment bits */ + uint32_t : 5; + } SPDECR_b; + }; + + union + { + __IOM uint32_t SPCR; /*!< (@ 0x00000008) RSPI Control Register */ + + struct + { + __IOM uint32_t SPE : 1; /*!< [0..0] RSPI Function Enable */ + uint32_t : 6; + __IOM uint32_t SPSCKSEL : 1; /*!< [7..7] RSPI Master Receive Clock Select */ + __IOM uint32_t SPPE : 1; /*!< [8..8] Parity Enable */ + __IOM uint32_t SPOE : 1; /*!< [9..9] Parity Mode */ + uint32_t : 1; + __IOM uint32_t PTE : 1; /*!< [11..11] Parity Self-Diagnosis Enable */ + __IOM uint32_t SCKASE : 1; /*!< [12..12] RSPCK Auto-Stop Function Enable */ + __IOM uint32_t BFDS : 1; /*!< [13..13] Between Burst Transfer Frames Delay Select */ + __IOM uint32_t MODFEN : 1; /*!< [14..14] Mode Fault Error Detection Enable */ + uint32_t : 1; + __IOM uint32_t SPEIE : 1; /*!< [16..16] RSPI Error Interrupt Enable */ + __IOM uint32_t SPRIE : 1; /*!< [17..17] RSPI Receive Buffer Full Interrupt Enable */ + __IOM uint32_t SPIIE : 1; /*!< [18..18] RSPI Idle Interrupt Enable */ + __IOM uint32_t SPDRES : 1; /*!< [19..19] RSPI receive data ready error select */ + __IOM uint32_t SPTIE : 1; /*!< [20..20] RSPI Transmit Buffer Empty Interrupt Enable */ + __IOM uint32_t CENDIE : 1; /*!< [21..21] RSPI Communication End Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SPMS : 1; /*!< [24..24] RSPI Mode Select */ + __IOM uint32_t SPFRF : 1; /*!< [25..25] RSPI Frame Format Select */ + uint32_t : 2; + __IOM uint32_t TXMD : 2; /*!< [29..28] Communication Mode Select */ + __IOM uint32_t MSTR : 1; /*!< [30..30] RSPI Master/Slave Mode Select */ + __IOM uint32_t BPEN : 1; /*!< [31..31] Synchronization Circuit Bypass Enable */ + } SPCR_b; + }; + + union + { + __IOM uint32_t SPCR2; /*!< (@ 0x0000000C) RSPI Control Register 2 */ + + struct + { + __IOM uint32_t RMFM : 5; /*!< [4..0] Frame processing count setting in Master Receive only */ + uint32_t : 1; + __OM uint32_t RMEDTG : 1; /*!< [6..6] End Trigger in Master Receive only */ + __OM uint32_t RMSTTG : 1; /*!< [7..7] Start Trigger in Master Receive only */ + __IOM uint32_t SPDRC : 8; /*!< [15..8] RSPI received data ready detect adjustment */ + __IOM uint32_t SPLP : 1; /*!< [16..16] RSPI Loopback */ + __IOM uint32_t SPLP2 : 1; /*!< [17..17] RSPI Loopback 2 */ + uint32_t : 2; + __IOM uint32_t MOIFV : 1; /*!< [20..20] MOSI Idle Fixed Value */ + __IOM uint32_t MOIFE : 1; /*!< [21..21] MOSI Idle Fixed Value Enable */ + uint32_t : 10; + } SPCR2_b; + }; + + union + { + __IOM uint32_t SPCR3; /*!< (@ 0x00000010) RSPI Control Register 3 */ + + struct + { + __IOM uint32_t SSL0P : 1; /*!< [0..0] SSL0 Signal Polarity */ + __IOM uint32_t SSL1P : 1; /*!< [1..1] SSL1 Signal Polarity */ + __IOM uint32_t SSL2P : 1; /*!< [2..2] SSL2 Signal Polarity */ + __IOM uint32_t SSL3P : 1; /*!< [3..3] SSL3 Signal Polarity */ + uint32_t : 4; + __IOM uint32_t SPBR : 8; /*!< [15..8] SPI Bit Rate */ + uint32_t : 8; + __IOM uint32_t SPSLN : 3; /*!< [26..24] RSPI Sequence Length */ + uint32_t : 5; + } SPCR3_b; + }; + + union + { + __IOM uint32_t SPCMD0; /*!< (@ 0x00000014) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD0_b; + }; + + union + { + __IOM uint32_t SPCMD1; /*!< (@ 0x00000018) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD1_b; + }; + + union + { + __IOM uint32_t SPCMD2; /*!< (@ 0x0000001C) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD2_b; + }; + + union + { + __IOM uint32_t SPCMD3; /*!< (@ 0x00000020) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD3_b; + }; + + union + { + __IOM uint32_t SPCMD4; /*!< (@ 0x00000024) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD4_b; + }; + + union + { + __IOM uint32_t SPCMD5; /*!< (@ 0x00000028) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD5_b; + }; + + union + { + __IOM uint32_t SPCMD6; /*!< (@ 0x0000002C) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD6_b; + }; + + union + { + __IOM uint32_t SPCMD7; /*!< (@ 0x00000030) RSPI Command Register */ + + struct + { + __IOM uint32_t CPHA : 1; /*!< [0..0] RSPCK Phase */ + __IOM uint32_t CPOL : 1; /*!< [1..1] RSPCK Polarity */ + __IOM uint32_t BRDV : 2; /*!< [3..2] Bit Rate Division */ + uint32_t : 3; + __IOM uint32_t SSLKP : 1; /*!< [7..7] SSL Signal Level Hold */ + uint32_t : 4; + __IOM uint32_t LSBF : 1; /*!< [12..12] RSPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] RSPI Next-Access Delay Enable */ + __IOM uint32_t SLNDEN : 1; /*!< [14..14] SSL Negation Delay Setting Enable */ + __IOM uint32_t SCKDEN : 1; /*!< [15..15] RSPCK Delay Setting Enable */ + __IOM uint32_t SPB : 5; /*!< [20..16] RSPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 3; /*!< [26..24] SSL Signal Assertion */ + uint32_t : 5; + } SPCMD7_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t SPDCR; /*!< (@ 0x00000040) RSPI Data Control Register */ + + struct + { + __IOM uint32_t BYSW : 1; /*!< [0..0] Byte Swap Operating Mode Select */ + uint32_t : 2; + __IOM uint32_t SPRDTD : 1; /*!< [3..3] RSPI Receive Data or Transmit Data Select */ + __IOM uint32_t SINV : 1; /*!< [4..4] Serial data invert bit */ + uint32_t : 3; + __IOM uint32_t SPFC : 2; /*!< [9..8] Frame Count */ + uint32_t : 22; + } SPDCR_b; + }; + + union + { + __IOM uint32_t SPDCR2; /*!< (@ 0x00000044) RSPI Data Control Register 2 */ + + struct + { + __IOM uint32_t RTRG : 2; /*!< [1..0] Receive FIFO threshold setting */ + uint32_t : 6; + __IOM uint32_t TTRG : 2; /*!< [9..8] Transmission FIFO threshold setting */ + uint32_t : 22; + } SPDCR2_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IM uint32_t SPSR; /*!< (@ 0x00000050) SPI Status Register */ + + struct + { + uint32_t : 8; + __IM uint32_t SPCP : 3; /*!< [10..8] RSPI Command Pointer */ + uint32_t : 1; + __IM uint32_t SPECM : 3; /*!< [14..12] RSPI Error Command */ + uint32_t : 8; + __IM uint32_t SPDRF : 1; /*!< [23..23] RSPI Receive Data Ready Flag */ + __IM uint32_t OVRF : 1; /*!< [24..24] Overrun Error Flag */ + __IM uint32_t IDLNF : 1; /*!< [25..25] RSPI Idle Flag */ + __IM uint32_t MODF : 1; /*!< [26..26] Mode Fault Error Flag */ + __IM uint32_t PERF : 1; /*!< [27..27] Parity Error Flag */ + __IM uint32_t UDRF : 1; /*!< [28..28] Underrun Error Flag */ + __IM uint32_t SPTEF : 1; /*!< [29..29] RSPI Transmit Buffer Empty Flag */ + __IM uint32_t CENDF : 1; /*!< [30..30] Communication End Flag */ + __IM uint32_t SPRF : 1; /*!< [31..31] RSPI Receive Buffer Full Flag */ + } SPSR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IM uint32_t SPTFSR; /*!< (@ 0x00000058) RSPI Transfer FIFO Status Register */ + + struct + { + __IM uint32_t TFDN : 3; /*!< [2..0] Transmit FIFO data empty stage number */ + uint32_t : 29; + } SPTFSR_b; + }; + + union + { + __IM uint32_t SPRFSR; /*!< (@ 0x0000005C) RSPI Receive FIFO Status Register */ + + struct + { + __IM uint32_t RFDN : 3; /*!< [2..0] Receive FIFO data store stage number */ + uint32_t : 29; + } SPRFSR_b; + }; + + union + { + __IM uint32_t SPPSR; /*!< (@ 0x00000060) RSPI Poling Register */ + + struct + { + __IM uint32_t SPEPS : 1; /*!< [0..0] RSPI Poling Status */ + uint32_t : 31; + } SPPSR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t SPSRC; /*!< (@ 0x00000068) RSPI Status Clear Register */ + + struct + { + uint32_t : 23; + __OM uint32_t SPDRFC : 1; /*!< [23..23] RSPI Receive Data Ready Flag Clear */ + __OM uint32_t OVRFC : 1; /*!< [24..24] Overrun Error Flag Clear */ + uint32_t : 1; + __OM uint32_t MODFC : 1; /*!< [26..26] Mode Fault Error Flag Clear */ + __OM uint32_t PERFC : 1; /*!< [27..27] Parity Error Flag Clear */ + __OM uint32_t UDRFC : 1; /*!< [28..28] Underrun Error Flag Clear */ + __OM uint32_t SPTEFC : 1; /*!< [29..29] RSPI Transmit Buffer Empty Flag Clear */ + __OM uint32_t CENDFC : 1; /*!< [30..30] Communication End Flag Clear */ + __OM uint32_t SPRFC : 1; /*!< [31..31] RSPI Receive Buffer Full Flag Clear */ + } SPSRC_b; + }; + + union + { + __IOM uint32_t SPFCR; /*!< (@ 0x0000006C) RSPI FIFO Clear Register */ + + struct + { + __OM uint32_t SPFRST : 1; /*!< [0..0] RSPI FIFO clear */ + uint32_t : 31; + } SPFCR_b; + }; +} R_SPI_B0_Type; /*!< Size = 112 (0x70) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_HS0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 High-Speed Module (R_USB_HS0) + */ + +typedef struct /*!< (@ 0x40351000) R_USB_HS0 Structure */ +{ + union + { + __IOM uint16_t SYSCFG; /*!< (@ 0x00000000) System Configuration Control Register */ + + struct + { + __IOM uint16_t USBE : 1; /*!< [0..0] USB Operation Enable */ + uint16_t : 3; + __IOM uint16_t DPRPU : 1; /*!< [4..4] D+ Line Resistor Control */ + __IOM uint16_t DRPD : 1; /*!< [5..5] D+/D- Line Resistor Control */ + __IOM uint16_t DCFM : 1; /*!< [6..6] Controller Function Select */ + __IOM uint16_t HSE : 1; /*!< [7..7] High-Speed Operation Enable */ + __IOM uint16_t CNEN : 1; /*!< [8..8] Single End Receiver Enable */ + uint16_t : 7; + } SYSCFG_b; + }; + + union + { + __IOM uint16_t BUSWAIT; /*!< (@ 0x00000002) CPU Bus Wait Register */ + + struct + { + __IOM uint16_t BWAIT : 4; /*!< [3..0] CPU Bus Access Wait Specification BWAIT waits (BWAIT+2 + * access cycles) */ + uint16_t : 12; + } BUSWAIT_b; + }; + + union + { + __IM uint16_t SYSSTS0; /*!< (@ 0x00000004) System Configuration Status Register */ + + struct + { + __IM uint16_t LNST : 2; /*!< [1..0] USB Data Line Status Monitor */ + __IM uint16_t IDMON : 1; /*!< [2..2] ID0 Pin Monitor */ + uint16_t : 2; + __IM uint16_t SOFEA : 1; /*!< [5..5] SOF Active Monitor While Host Controller Function is + * Selected. */ + __IM uint16_t HTACT : 1; /*!< [6..6] Host Sequencer Status Monitor */ + uint16_t : 7; + __IM uint16_t OVCMON : 2; /*!< [15..14] External USB1_OVRCURA/USB1_OVRCURB Input Pin MonitorThe + * OCVMON[1] bit indicates the status of the USBHS_OVRCURA + * pin. The OCVMON[0] bit indicates the status of the USBHS_OVRCURB + * pin. */ + } SYSSTS0_b; + }; + + union + { + __IM uint16_t PLLSTA; /*!< (@ 0x00000006) PLL Status Register */ + + struct + { + __IM uint16_t PLLLOCK : 1; /*!< [0..0] PLL Lock Flag */ + uint16_t : 15; + } PLLSTA_b; + }; + + union + { + __IOM uint16_t DVSTCTR0; /*!< (@ 0x00000008) Device State Control Register 0 */ + + struct + { + __IM uint16_t RHST : 3; /*!< [2..0] USB Bus Reset Status */ + uint16_t : 1; + __IOM uint16_t UACT : 1; /*!< [4..4] USB Bus Operation Enable for the Host Controller Operation */ + __IOM uint16_t RESUME : 1; /*!< [5..5] Resume Signal Output for the Host Controller Operation */ + __IOM uint16_t USBRST : 1; /*!< [6..6] USB Bus Reset Output for the Host Controller Operation */ + __IOM uint16_t RWUPE : 1; /*!< [7..7] Remote Wakeup Detection Enable for the Host Controller + * Operation */ + __IOM uint16_t WKUP : 1; /*!< [8..8] Remote Wakeup Output for the Device Controller Operation */ + __IOM uint16_t VBUSEN : 1; /*!< [9..9] USBHS_VBUSEN Output Pin Control */ + __IOM uint16_t EXICEN : 1; /*!< [10..10] USBHS_EXICEN Output Pin Control */ + __IOM uint16_t HNPBTOA : 1; /*!< [11..11] Host Negotiation Protocol (HNP) Control Use this bit + * when switching from device B to device A in OTGmode. If + * the HNPBTOA bit is 1, the internal function controlremains + * in the Suspend state until the HNP processing endseven + * if SYSCFG.DPRPU = 0 or SYSCFG.DCFM = 1 is set. */ + uint16_t : 4; + } DVSTCTR0_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t TESTMODE; /*!< (@ 0x0000000C) USB Test Mode Register */ + + struct + { + __IOM uint16_t UTST : 4; /*!< [3..0] Test Mode */ + uint16_t : 12; + } TESTMODE_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + + union + { + union + { + __IOM uint32_t CFIFO; /*!< (@ 0x00000014) CFIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port.Read receive data from the FIFO buffer or + * write transmit data to the FIFO buffer by accessing these + * bits. */ + } CFIFO_b; + }; + + struct + { + union + { + __IOM uint16_t CFIFOL; /*!< (@ 0x00000014) CFIFO Port Register L */ + __IOM uint8_t CFIFOLL; /*!< (@ 0x00000014) CFIFO Port Register LL */ + }; + + union + { + __IOM uint16_t CFIFOH; /*!< (@ 0x00000016) CFIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED3; + __IOM uint8_t CFIFOHH; /*!< (@ 0x00000017) CFIFO Port Register HH */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t D0FIFO; /*!< (@ 0x00000018) D0FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port Read receive data from the FIFO buffer or + * write transmit data to the FIFO buffer by accessing these + * bits. */ + } D0FIFO_b; + }; + + struct + { + union + { + __IOM uint16_t D0FIFOL; /*!< (@ 0x00000018) D0FIFO Port Register L */ + __IOM uint8_t D0FIFOLL; /*!< (@ 0x00000018) D0FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D0FIFOH; /*!< (@ 0x0000001A) D0FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED4; + __IOM uint8_t D0FIFOHH; /*!< (@ 0x0000001B) D0FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t D1FIFO; /*!< (@ 0x0000001C) D1FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO PortRead receive data from the FIFO buffer or write + * transmit data to the FIFO buffer by accessing these bits. */ + } D1FIFO_b; + }; + + struct + { + union + { + __IOM uint16_t D1FIFOL; /*!< (@ 0x0000001C) D1FIFO Port Register L */ + __IOM uint8_t D1FIFOLL; /*!< (@ 0x0000001C) D1FIFO Port Register LL */ + }; + + union + { + __IOM uint16_t D1FIFOH; /*!< (@ 0x0000001E) D1FIFO Port Register H */ + + struct + { + __IM uint8_t RESERVED5; + __IOM uint8_t D1FIFOHH; /*!< (@ 0x0000001F) D1FIFO Port Register HH */ + }; + }; + }; + }; + + union + { + __IOM uint16_t CFIFOSEL; /*!< (@ 0x00000020) CFIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 1; + __IOM uint16_t ISEL : 1; /*!< [5..5] FIFO Port Access Direction when DCP is Selected */ + uint16_t : 2; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] CFIFO Port Access Bit Width */ + uint16_t : 2; + __OM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } CFIFOSEL_b; + }; + + union + { + __IOM uint16_t CFIFOCTR; /*!< (@ 0x00000022) CFIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length.Indicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port ReadyIndicates whether the FIFO port can + * be accessed. */ + __OM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer Clear */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } CFIFOCTR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint16_t D0FIFOSEL; /*!< (@ 0x00000028) D0FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] UCL_Dx_DREQ Signal Output Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __OM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D0FIFOSEL_b; + }; + + union + { + __IOM uint16_t D0FIFOCTR; /*!< (@ 0x0000002A) D0FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length.Indicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port ReadyIndicates whether the FIFO port can + * be accessed. */ + __OM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer Clear */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D0FIFOCTR_b; + }; + + union + { + __IOM uint16_t D1FIFOSEL; /*!< (@ 0x0000002C) D1FIFO Port Select Register */ + + struct + { + __IOM uint16_t CURPIPE : 4; /*!< [3..0] FIFO Port Access Pipe Specification */ + uint16_t : 4; + __IOM uint16_t BIGEND : 1; /*!< [8..8] FIFO Port Endian Control */ + uint16_t : 1; + __IOM uint16_t MBW : 2; /*!< [11..10] FIFO Port Access Bit Width */ + __IOM uint16_t DREQE : 1; /*!< [12..12] UCL_Dx_DREQ Signal Output Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode Accessed after Specified + * Pipe Data is Read */ + __OM uint16_t REW : 1; /*!< [14..14] Buffer Pointer Rewind */ + __IOM uint16_t RCNT : 1; /*!< [15..15] Read Count Mode */ + } D1FIFOSEL_b; + }; + + union + { + __IOM uint16_t D1FIFOCTR; /*!< (@ 0x0000002E) D1FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length.Indicates the length of the receive + * data. */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port ReadyIndicates whether the FIFO port can + * be accessed. */ + __OM uint16_t BCLR : 1; /*!< [14..14] CPU Buffer Clear */ + __IOM uint16_t BVAL : 1; /*!< [15..15] Buffer Memory Valid Flag */ + } D1FIFOCTR_b; + }; + + union + { + __IOM uint16_t INTENB0; /*!< (@ 0x00000030) Interrupt Enable Register 0 */ + + struct + { + uint16_t : 8; + __IOM uint16_t BRDYE : 1; /*!< [8..8] Buffer Ready Interrupt Enable */ + __IOM uint16_t NRDYE : 1; /*!< [9..9] Buffer Not Ready Response Interrupt Enable */ + __IOM uint16_t BEMPE : 1; /*!< [10..10] Buffer Empty Interrupt Enable */ + __IOM uint16_t CTRE : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Enable */ + __IOM uint16_t DVSE : 1; /*!< [12..12] Device State Transition Interrupt Enable */ + __IOM uint16_t SOFE : 1; /*!< [13..13] Frame Number Update Interrupt Enable */ + __IOM uint16_t RSME : 1; /*!< [14..14] Resume Interrupt Enable */ + __IOM uint16_t VBSE : 1; /*!< [15..15] VBUS Interrupt Enable */ + } INTENB0_b; + }; + + union + { + __IOM uint16_t INTENB1; /*!< (@ 0x00000032) Interrupt Enable Register 1 */ + + struct + { + __IOM uint16_t PDDETINTE0 : 1; /*!< [0..0] PDDETINT0 Detection Interrupt Enable */ + uint16_t : 3; + __IOM uint16_t SACKE : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Enable */ + __IOM uint16_t SIGNE : 1; /*!< [5..5] Setup Transaction Error Interrupt Enable */ + __IOM uint16_t EOFERRE : 1; /*!< [6..6] EOF Error Detection Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t LPMENDE : 1; /*!< [8..8] LPM Transaction End Interrupt Enable */ + __IOM uint16_t L1RSMENDE : 1; /*!< [9..9] L1 Resume End Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t ATTCHE : 1; /*!< [11..11] Connection Detection Interrupt Enable */ + __IOM uint16_t DTCHE : 1; /*!< [12..12] Disconnection Detection Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t BCHGE : 1; /*!< [14..14] USB Bus Change Interrupt Enable */ + __IOM uint16_t OVRCRE : 1; /*!< [15..15] OVRCRE Interrupt Enable */ + } INTENB1_b; + }; + __IM uint16_t RESERVED7; + + union + { + __IOM uint16_t BRDYENB; /*!< (@ 0x00000036) BRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPEBRDYE : 10; /*!< [9..0] BRDY Interrupt Enable for Each Pipe */ + uint16_t : 6; + } BRDYENB_b; + }; + + union + { + __IOM uint16_t NRDYENB; /*!< (@ 0x00000038) NRDY Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPENRDYE : 10; /*!< [9..0] NRDY Interrupt Enable for Each Pipe */ + uint16_t : 6; + } NRDYENB_b; + }; + + union + { + __IOM uint16_t BEMPENB; /*!< (@ 0x0000003A) BEMP Interrupt Enable Register */ + + struct + { + __IOM uint16_t PIPEBEMPE : 10; /*!< [9..0] BEMP Interrupt Enable for Each Pipe */ + uint16_t : 6; + } BEMPENB_b; + }; + + union + { + __IOM uint16_t SOFCFG; /*!< (@ 0x0000003C) SOF Pin Configuration Register */ + + struct + { + uint16_t : 4; + __IM uint16_t EDGESTS : 1; /*!< [4..4] Interrupt Edge Processing Status Monitor */ + __IOM uint16_t INTL : 1; /*!< [5..5] Interrupt Output Sense Select */ + __IOM uint16_t BRDYM : 1; /*!< [6..6] PIPEBRDY Interrupt Status Clear Timing.This bit can be + * set only in the initial setting (before communications).The + * setting cannot be changed once communication starts. */ + uint16_t : 1; + __IOM uint16_t TRNENSEL : 1; /*!< [8..8] Transaction-Enabled Time Select.The transfer efficiency + * can be improved by setting this bit to 1 if no low-speed + * device is connected directly or via FS-HUB to the USB port. */ + uint16_t : 7; + } SOFCFG_b; + }; + + union + { + __IOM uint16_t PHYSET; /*!< (@ 0x0000003E) PHY Setting Register */ + + struct + { + __IOM uint16_t DIRPD : 1; /*!< [0..0] Power-Down Control */ + __IOM uint16_t PLLRESET : 1; /*!< [1..1] PLL Reset Control */ + uint16_t : 1; + __IOM uint16_t CDPEN : 1; /*!< [3..3] Charging Downstream Port Enable */ + __IOM uint16_t CLKSEL : 2; /*!< [5..4] Input System Clock Frequency */ + uint16_t : 2; + __IOM uint16_t REPSEL : 2; /*!< [9..8] Terminating Resistance Adjustment Cycle */ + uint16_t : 1; + __IOM uint16_t REPSTART : 1; /*!< [11..11] Forcibly Start Terminating Resistance Adjustment */ + uint16_t : 3; + __IOM uint16_t HSEB : 1; /*!< [15..15] CL-Only Mode */ + } PHYSET_b; + }; + + union + { + __IOM uint16_t INTSTS0; /*!< (@ 0x00000040) Interrupt Status Register 0 */ + + struct + { + __IM uint16_t CTSQ : 3; /*!< [2..0] Control Transfer Stage */ + __IOM uint16_t VALID : 1; /*!< [3..3] USB Request Reception */ + __IM uint16_t DVSQ : 3; /*!< [6..4] Device State */ + __IM uint16_t VBSTS : 1; /*!< [7..7] VBUS Input Status */ + __IM uint16_t BRDY : 1; /*!< [8..8] Buffer Ready Interrupt Status */ + __IM uint16_t NRDY : 1; /*!< [9..9] Buffer Not Ready Interrupt Status */ + __IM uint16_t BEMP : 1; /*!< [10..10] Buffer Empty Interrupt Status */ + __IOM uint16_t CTRT : 1; /*!< [11..11] Control Transfer Stage Transition Interrupt Status */ + __IOM uint16_t DVST : 1; /*!< [12..12] Device State Transition Interrupt Status */ + __IOM uint16_t SOFR : 1; /*!< [13..13] Frame Number Refresh Interrupt Status */ + __IOM uint16_t RESM : 1; /*!< [14..14] Resume Interrupt Status */ + __IOM uint16_t VBINT : 1; /*!< [15..15] VBUS Interrupt Status */ + } INTSTS0_b; + }; + + union + { + __IOM uint16_t INTSTS1; /*!< (@ 0x00000042) Interrupt Status Register 1 */ + + struct + { + __IOM uint16_t PDDETINT0 : 1; /*!< [0..0] PDDET Detection Interrupt Status */ + uint16_t : 3; + __IOM uint16_t SACK : 1; /*!< [4..4] Setup Transaction Normal Response Interrupt Status */ + __IOM uint16_t SIGN : 1; /*!< [5..5] Setup Transaction Error Interrupt Status */ + __IOM uint16_t EOFERR : 1; /*!< [6..6] EOF Error Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t LPMEND : 1; /*!< [8..8] LPM Transaction End Interrupt Status */ + __IOM uint16_t L1RSMEND : 1; /*!< [9..9] L1 Resume End Interrupt Status */ + uint16_t : 1; + __IOM uint16_t ATTCH : 1; /*!< [11..11] USB Connection Detection Interrupt Status */ + __IOM uint16_t DTCH : 1; /*!< [12..12] USB Disconnection Detection Interrupt Status */ + uint16_t : 1; + __IOM uint16_t BCHG : 1; /*!< [14..14] USB Bus Change Interrupt Status */ + __IOM uint16_t OVRCR : 1; /*!< [15..15] Overcurrent Interrupt Status */ + } INTSTS1_b; + }; + __IM uint16_t RESERVED8; + + union + { + __IOM uint16_t BRDYSTS; /*!< (@ 0x00000046) BRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPEBRDY : 10; /*!< [9..0] BRDY Interrupt Status for Each Pipe */ + uint16_t : 6; + } BRDYSTS_b; + }; + + union + { + __IOM uint16_t NRDYSTS; /*!< (@ 0x00000048) NRDY Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPENRDY : 10; /*!< [9..0] NRDY Interrupt Status for Each Pipe */ + uint16_t : 6; + } NRDYSTS_b; + }; + + union + { + __IOM uint16_t BEMPSTS; /*!< (@ 0x0000004A) BEMP Interrupt Status Register */ + + struct + { + __IOM uint16_t PIPEBEMP : 10; /*!< [9..0] BEMP Interrupt Status for Each Pipe */ + uint16_t : 6; + } BEMPSTS_b; + }; + + union + { + __IOM uint16_t FRMNUM; /*!< (@ 0x0000004C) Frame Number Register */ + + struct + { + __IM uint16_t FRNM : 11; /*!< [10..0] Frame Number.Indicate the latest frame number. */ + uint16_t : 3; + __IOM uint16_t CRCE : 1; /*!< [14..14] CRC Error Detection Status */ + __IOM uint16_t OVRN : 1; /*!< [15..15] Overrun/Underrun Detection Status */ + } FRMNUM_b; + }; + + union + { + __IOM uint16_t UFRMNUM; /*!< (@ 0x0000004E) uFrame Number Register */ + + struct + { + __IM uint16_t UFRNM : 3; /*!< [2..0] MicroframeIndicate the microframe number. */ + uint16_t : 12; + __IOM uint16_t DVCHG : 1; /*!< [15..15] Device State Change */ + } UFRMNUM_b; + }; + + union + { + __IOM uint16_t USBADDR; /*!< (@ 0x00000050) USB Address Register */ + + struct + { + uint16_t : 8; + __IOM uint16_t STSRECOV0 : 3; /*!< [10..8] Status Recovery */ + uint16_t : 5; + } USBADDR_b; + }; + __IM uint16_t RESERVED9; + + union + { + __IOM uint16_t USBREQ; /*!< (@ 0x00000054) USB Request Type Register */ + + struct + { + __IOM uint16_t BMREQUESTTYPE : 8; /*!< [7..0] USB request bmRequestType value Finction controller selected + * : read-only Host controller selected : read-write */ + __IOM uint16_t BREQUEST : 8; /*!< [15..8] USB request bRequest value Finction controller selected + * : read-only Host controller selected : read-write */ + } USBREQ_b; + }; + + union + { + __IOM uint16_t USBVAL; /*!< (@ 0x00000056) USB Request Value Register */ + + struct + { + __IOM uint16_t WVALUE : 16; /*!< [15..0] Value of USB request wValue Finction controller selected + * : read-only Host controller selected : read-write */ + } USBVAL_b; + }; + + union + { + __IOM uint16_t USBINDX; /*!< (@ 0x00000058) USB Request Index Register */ + + struct + { + __IOM uint16_t WINDEX : 16; /*!< [15..0] Value of USB request wIndex Finction controller selected + * : read-only Host controller selected : read-write */ + } USBINDX_b; + }; + + union + { + __IOM uint16_t USBLENG; /*!< (@ 0x0000005A) USB Request Length Register */ + + struct + { + __IOM uint16_t WLENGTH : 16; /*!< [15..0] Value of USB request wLength Finction controller selected + * : read-only Host controller selected : read-write */ + } USBLENG_b; + }; + + union + { + __IOM uint16_t DCPCFG; /*!< (@ 0x0000005C) DCP Configuration Register */ + + struct + { + uint16_t : 4; + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Blocking on End of Transfer */ + __IOM uint16_t CNTMD : 1; /*!< [8..8] Continuous Transfer Mode */ + uint16_t : 7; + } DCPCFG_b; + }; + + union + { + __IOM uint16_t DCPMAXP; /*!< (@ 0x0000005E) DCP Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 7; /*!< [6..0] Maximum Packet SizeThese bits specify the maximum data + * payload (maximum packet size) for the DCP. */ + uint16_t : 5; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device SelectThese bits specify the address of the + * destination function device for control transfer when the + * host controller function is selected. */ + } DCPMAXP_b; + }; + + union + { + __IOM uint16_t DCPCTR; /*!< (@ 0x00000060) DCP Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PID */ + __IOM uint16_t CCPL : 1; /*!< [2..2] Control Transfer End Enable */ + uint16_t : 1; + __IOM uint16_t PINGE : 1; /*!< [4..4] PING Token Issue Enable */ + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe Busy */ + __IM uint16_t SQMON : 1; /*!< [6..6] Sequence Toggle Bit Monitor */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Toggle Bit Clear */ + uint16_t : 2; + __IOM uint16_t SUREQCLR : 1; /*!< [11..11] SUREQ Bit Clear */ + __IM uint16_t CSSTS : 1; /*!< [12..12] Split Transaction COMPLETE SPLIT(CSPLIT) Status */ + __IOM uint16_t CSCLR : 1; /*!< [13..13] Split Transaction CSPLIT Status Clear */ + __IOM uint16_t SUREQ : 1; /*!< [14..14] SETUP Token Transmission */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } DCPCTR_b; + }; + __IM uint16_t RESERVED10; + __IOM uint16_t PIPESEL; /*!< (@ 0x00000064) Pipe Window Select Register */ + __IM uint16_t RESERVED11; + + union + { + __IOM uint16_t PIPECFG; /*!< (@ 0x00000068) Pipe Configuration Register */ + + struct + { + __IOM uint16_t EPNUM : 4; /*!< [3..0] Endpoint Number */ + __IOM uint16_t DIR : 1; /*!< [4..4] Transfer Direction */ + uint16_t : 2; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Pipe Disabled at End of Transfer */ + __IOM uint16_t CNTMD : 1; /*!< [8..8] Continuous Transfer Mode */ + __IOM uint16_t DBLB : 1; /*!< [9..9] Double Buffer Mode */ + __IOM uint16_t BFRE : 1; /*!< [10..10] BRDY Interrupt Operation Specification */ + uint16_t : 3; + __IOM uint16_t TYPE : 2; /*!< [15..14] Transfer Type */ + } PIPECFG_b; + }; + + union + { + __IOM uint16_t PIPEBUF; /*!< (@ 0x0000006A) Pipe Buffer Register */ + + struct + { + __IOM uint16_t BUFNMB : 8; /*!< [7..0] Buffer NumberThese bits specify the FIFO buffer number + * of the selected pipe (04h to 87h). */ + uint16_t : 2; + __IOM uint16_t BUFSIZE : 5; /*!< [14..10] Buffer Size 00h: 64 bytes 01h: 128 bytes : 1Fh: 2 Kbytes */ + uint16_t : 1; + } PIPEBUF_b; + }; + + union + { + __IOM uint16_t PIPEMAXP; /*!< (@ 0x0000006C) Pipe Maximum Packet Size Register */ + + struct + { + __IOM uint16_t MXPS : 11; /*!< [10..0] Maximum Packet SizeThese bits specify the maximum data + * payload (maximum packet size) for the selected pipe.A size + * of 1h to 40h bytes can be set for PIPE6 to PIPE9. */ + uint16_t : 1; + __IOM uint16_t DEVSEL : 4; /*!< [15..12] Device SelectThese bits specify the address of the + * peripheral device when the host controller function is + * selected. */ + } PIPEMAXP_b; + }; + + union + { + __IOM uint16_t PIPEPERI; /*!< (@ 0x0000006E) Pipe Cycle Control Register */ + + struct + { + __IOM uint16_t IITV : 3; /*!< [2..0] Interval Error Detection IntervalThese bits specify the + * transfer interval timing for the selected pipe as n-th + * power of 2 of the frame timing. */ + uint16_t : 9; + __IOM uint16_t IFIS : 1; /*!< [12..12] Isochronous IN Buffer Flush */ + uint16_t : 3; + } PIPEPERI_b; + }; + + union + { + __IOM uint16_t PIPE_CTR[9]; /*!< (@ 0x00000070) PIPE Control Register */ + + struct + { + __IOM uint16_t PID : 2; /*!< [1..0] Response PIDThese bits specify the response type for + * the next transaction of the relevant pipe. */ + uint16_t : 3; + __IM uint16_t PBUSY : 1; /*!< [5..5] Pipe BusyThis bit indicates whether the relevant pipe + * is being used for the USB bus */ + __IM uint16_t SQMON : 1; /*!< [6..6] Toggle Bit ConfirmationThis bit indicates the expected + * value of the sequence toggle bit for the next transaction + * of the relevant pipe */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Toggle Bit SetThis bit is set to 1 when the expected + * value of the sequence toggle bit for the next transaction + * of the relevant pipe is set for DATA1 */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Toggle Bit ClearThis bit is set to 1 when the expected + * value of the sequence toggle bit for the next transaction + * of the relevant pipe is cleared to DATA0 */ + __IOM uint16_t ACLRM : 1; /*!< [9..9] Auto Buffer Clear ModeThis bit enables or disables auto + * buffer clear mode for the relevant pipe */ + __IOM uint16_t ATREPM : 1; /*!< [10..10] Auto Response ModeThis bit enables or disables auto + * response mode for the relevant pipe. */ + uint16_t : 1; + __IM uint16_t CSSTS : 1; /*!< [12..12] CSSTS StatusThis bit indicates the CSPLIT status of + * Split Transaction of the relevant pipe */ + __IOM uint16_t CSCLR : 1; /*!< [13..13] CSPLIT Status ClearSet this bit to 1 when clearing + * the CSSTS bit of the relevant pipe */ + __IM uint16_t INBUFM : 1; /*!< [14..14] Transmit Buffer MonitorThis bit indicates the FIFO + * buffer status for the relevant pipe in the transmitting + * direction. */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer StatusThis bit indicates the FIFO buffer status + * for the relevant pipe. */ + } PIPE_CTR_b[9]; + }; + __IM uint16_t RESERVED12; + __IM uint32_t RESERVED13[3]; + __IOM R_USB_HS0_PIPE_TR_Type PIPE_TR[5]; /*!< (@ 0x00000090) Pipe Transaction Counter Registers */ + __IM uint32_t RESERVED14[11]; + + union + { + __IOM uint16_t DEVADD[10]; /*!< (@ 0x000000D0) Device Address Configuration Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t USBSPD : 2; /*!< [7..6] Transfer Speed of Communication Target Device */ + __IOM uint16_t HUBPORT : 3; /*!< [10..8] Communication Target Connecting Hub Port */ + __IOM uint16_t UPPHUB : 4; /*!< [14..11] Communication Target Connecting Hub Register */ + uint16_t : 1; + } DEVADD_b[10]; + }; + __IM uint32_t RESERVED15[7]; + + union + { + __IOM uint16_t LPCTRL; /*!< (@ 0x00000100) Low Power Control Register */ + + struct + { + uint16_t : 7; + __IOM uint16_t HWUPM : 1; /*!< [7..7] Resume Return Mode Setting */ + uint16_t : 8; + } LPCTRL_b; + }; + + union + { + __IOM uint16_t LPSTS; /*!< (@ 0x00000102) Low Power Status Register */ + + struct + { + uint16_t : 14; + __IOM uint16_t SUSPENDM : 1; /*!< [14..14] UTMI SuspendM Control */ + uint16_t : 1; + } LPSTS_b; + }; + __IM uint32_t RESERVED16[15]; + + union + { + __IOM uint16_t BCCTRL; /*!< (@ 0x00000140) Battery Charging Control Register */ + + struct + { + __IOM uint16_t IDPSRCE : 1; /*!< [0..0] IDPSRC Control */ + __IOM uint16_t IDMSINKE : 1; /*!< [1..1] IDMSINK Control */ + __IOM uint16_t VDPSRCE : 1; /*!< [2..2] VDPSRC Control */ + __IOM uint16_t IDPSINKE : 1; /*!< [3..3] IDPSINK Control */ + __IOM uint16_t VDMSRCE : 1; /*!< [4..4] VDMSRC Control */ + __IOM uint16_t DCPMODE : 1; /*!< [5..5] DCP Mode Control */ + uint16_t : 2; + __IM uint16_t CHGDETSTS : 1; /*!< [8..8] CHGDET Status */ + __IM uint16_t PDDETSTS : 1; /*!< [9..9] PDDET Status */ + uint16_t : 6; + } BCCTRL_b; + }; + __IM uint16_t RESERVED17; + + union + { + __IOM uint16_t PL1CTRL1; /*!< (@ 0x00000144) Function L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1RESPEN : 1; /*!< [0..0] L1 Response Enable */ + __IOM uint16_t L1RESPMD : 2; /*!< [2..1] L1 Response Mode */ + __IOM uint16_t L1NEGOMD : 1; /*!< [3..3] L1 Response Negotiation Control.NOTE: This bit is valid + * only when the L1RESPMD[1:0] value is 2'b11. */ + __IM uint16_t DVSQ : 4; /*!< [7..4] DVSQ Extension.DVSQ[3] is Mirror of DVSQ[2:0] in INTSTS0.Indicates + * the L1 state together with the device state bits DVSQ[2:0]. */ + __IOM uint16_t HIRDTHR : 4; /*!< [11..8] L1 Response Negotiation Threshold ValueHIRD threshold + * value used for L1NEGOMD.The format is the same as the HIRD + * field in HL1CTRL. */ + uint16_t : 2; + __IOM uint16_t L1EXTMD : 1; /*!< [14..14] PHY Control Mode at L1 Return */ + uint16_t : 1; + } PL1CTRL1_b; + }; + + union + { + __IOM uint16_t PL1CTRL2; /*!< (@ 0x00000146) Function L1 Control Register 2 */ + + struct + { + uint16_t : 8; + __IOM uint16_t HIRDMON : 4; /*!< [11..8] HIRD Value Monitor */ + __IOM uint16_t RWEMON : 1; /*!< [12..12] RWE Value Monitor */ + uint16_t : 3; + } PL1CTRL2_b; + }; + + union + { + __IOM uint16_t HL1CTRL1; /*!< (@ 0x00000148) Host L1 Control Register 1 */ + + struct + { + __IOM uint16_t L1REQ : 1; /*!< [0..0] L1 Transition Request */ + __IM uint16_t L1STATUS : 2; /*!< [2..1] L1 Request Completion Status */ + uint16_t : 13; + } HL1CTRL1_b; + }; + + union + { + __IOM uint16_t HL1CTRL2; /*!< (@ 0x0000014A) Host L1 Control Register 2 */ + + struct + { + __IOM uint16_t L1ADDR : 4; /*!< [3..0] LPM Token DeviceAddressThese bits specify the value to + * be set in the ADDR field of LPM token. */ + uint16_t : 4; + __IOM uint16_t HIRD : 4; /*!< [11..8] LPM Token HIRD */ + __IOM uint16_t L1RWE : 1; /*!< [12..12] LPM Token L1 RemoteWake EnableThese bits specify the + * value to be set in the RWE field of LPM token. */ + uint16_t : 2; + __IOM uint16_t BESL : 1; /*!< [15..15] BESL & Alternate HIRDThis bit selects the K-State drive + * period at the time of L1 Resume. */ + } HL1CTRL2_b; + }; + __IM uint32_t RESERVED18; + + union + { + __IOM uint16_t PHYTRIM1; /*!< (@ 0x00000150) PHY Timing Register 1 */ + + struct + { + __IOM uint16_t DRISE : 2; /*!< [1..0] FS/LS Rising-Edge Output Waveform Adjustment Function */ + __IOM uint16_t DFALL : 2; /*!< [3..2] FS/LS Falling-Edge Output Waveform Adjustment Function */ + uint16_t : 3; + __IOM uint16_t PCOMPENB : 1; /*!< [7..7] PVDD Start-up Detection */ + __IOM uint16_t HSIUP : 4; /*!< [11..8] HS Output Level Setting */ + __IOM uint16_t IMPOFFSET : 3; /*!< [14..12] terminating resistance offset value setting.Offset + * value for adjusting the terminating resistance. */ + uint16_t : 1; + } PHYTRIM1_b; + }; + + union + { + __IOM uint16_t PHYTRIM2; /*!< (@ 0x00000152) PHY Timing Register 2 */ + + struct + { + __IOM uint16_t SQU : 4; /*!< [3..0] Squelch Detection Level */ + uint16_t : 3; + __IOM uint16_t HSRXENMO : 1; /*!< [7..7] HS Receive Enable Control Mode */ + __IOM uint16_t PDR : 2; /*!< [9..8] HS Output Adjustment Function */ + uint16_t : 2; + __IOM uint16_t DIS : 3; /*!< [14..12] Disconnect Detection Level */ + uint16_t : 1; + } PHYTRIM2_b; + }; + __IM uint32_t RESERVED19[3]; + + union + { + __IM uint32_t DPUSR0R; /*!< (@ 0x00000160) Deep Standby USB Transceiver Control/Pin Monitor + * Register */ + + struct + { + uint32_t : 20; + __IM uint32_t DOVCAHM : 1; /*!< [20..20] OVRCURA InputIndicates OVRCURA input signal on the + * HS side of USB port. */ + __IM uint32_t DOVCBHM : 1; /*!< [21..21] OVRCURB InputIndicates OVRCURB input signal on the + * HS side of USB port. */ + uint32_t : 1; + __IM uint32_t DVBSTSHM : 1; /*!< [23..23] VBUS InputIndicates VBUS input signal on the HS side + * of USB port. */ + uint32_t : 8; + } DPUSR0R_b; + }; + + union + { + __IOM uint32_t DPUSR1R; /*!< (@ 0x00000164) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t DOVCAHE : 1; /*!< [4..4] OVRCURA Interrupt Enable Clear */ + __IOM uint32_t DOVCBHE : 1; /*!< [5..5] OVRCURB Interrupt Enable Clear */ + uint32_t : 1; + __IOM uint32_t DVBSTSHE : 1; /*!< [7..7] VBUS Interrupt Enable/Clear */ + uint32_t : 12; + __IM uint32_t DOVCAH : 1; /*!< [20..20] Indication of Return from OVRCURA Interrupt Source */ + __IM uint32_t DOVCBH : 1; /*!< [21..21] Indication of Return from OVRCURB Interrupt Source */ + uint32_t : 1; + __IM uint32_t DVBSTSH : 1; /*!< [23..23] Indication of Return from VBUS Interrupt Source */ + uint32_t : 8; + } DPUSR1R_b; + }; + + union + { + __IOM uint16_t DPUSR2R; /*!< (@ 0x00000168) Deep Standby USB Suspend/Resume Interrupt Register */ + + struct + { + __IM uint16_t DPINT : 1; /*!< [0..0] Indication of Return from DP Interrupt Source */ + __IM uint16_t DMINT : 1; /*!< [1..1] Indication of Return from DM Interrupt Source */ + uint16_t : 2; + __IM uint16_t DPVAL : 1; /*!< [4..4] DP InputIndicates DP input signal on the HS side of USB + * port. */ + __IM uint16_t DMVAL : 1; /*!< [5..5] DM InputIndicates DM input signal on the HS side of USB + * port. */ + uint16_t : 2; + __IOM uint16_t DPINTE : 1; /*!< [8..8] DP Interrupt Enable Clear */ + __IOM uint16_t DMINTE : 1; /*!< [9..9] DM Interrupt Enable Clear */ + uint16_t : 6; + } DPUSR2R_b; + }; + + union + { + __IOM uint16_t DPUSRCR; /*!< (@ 0x0000016A) Deep Standby USB Suspend/Resume Command Register */ + + struct + { + __IOM uint16_t FIXPHY : 1; /*!< [0..0] USB Transceiver Control Fix */ + __IOM uint16_t FIXPHYPD : 1; /*!< [1..1] USB Transceiver Control Fix for PLL */ + uint16_t : 14; + } DPUSRCR_b; + }; +} R_USB_HS0_Type; /*!< Size = 364 (0x16c) */ + +/* =========================================================================================================================== */ +/* ================ R_XSPI ================ */ +/* =========================================================================================================================== */ + +/** + * @brief eXpanded SPI (R_XSPI) + */ + +typedef struct /*!< (@ 0x40268000) R_XSPI Structure */ +{ + union + { + __IOM uint32_t WRAPCFG; /*!< (@ 0x00000000) xSPI Wrapper Configuration register */ + + struct + { + __IOM uint32_t CKSFTCS0 : 5; /*!< [4..0] CK shift for slave0 */ + uint32_t : 3; + __IOM uint32_t DSSFTCS0 : 5; /*!< [12..8] DS shift for slave0 */ + uint32_t : 3; + __IOM uint32_t CKSFTCS1 : 5; /*!< [20..16] CK shift for slave1 */ + uint32_t : 3; + __IOM uint32_t DSSFTCS1 : 5; /*!< [28..24] DS shift for slave1 */ + uint32_t : 3; + } WRAPCFG_b; + }; + + union + { + __IOM uint32_t COMCFG; /*!< (@ 0x00000004) xSPI Common Configuration register */ + + struct + { + __IOM uint32_t ARBMD : 2; /*!< [1..0] Channel arbitration mode */ + uint32_t : 2; + __IOM uint32_t ECSINTOUTEN : 2; /*!< [5..4] ECS/INT Output Enable */ + uint32_t : 10; + __IOM uint32_t OEASTEX : 1; /*!< [16..16] Output Enable Asserting extension */ + __IOM uint32_t OENEGEX : 1; /*!< [17..17] Output Enable Negating extension */ + uint32_t : 14; + } COMCFG_b; + }; + + union + { + __IOM uint32_t BMCFGCH[2]; /*!< (@ 0x00000008) xSPI Bridge Map Configuration register */ + + struct + { + __IOM uint32_t WRMD : 1; /*!< [0..0] AHB Write Response mode */ + uint32_t : 6; + __IOM uint32_t MWRCOMB : 1; /*!< [7..7] Memory Write Combination mode */ + __IOM uint32_t MWRSIZE : 8; /*!< [15..8] Memory Write Size */ + __IOM uint32_t PREEN : 1; /*!< [16..16] Prefetch enable */ + uint32_t : 7; + __IOM uint32_t CMBTIM : 8; /*!< [31..24] Combination timer */ + } BMCFGCH_b[2]; + }; + __IOM R_XSPI_CMCFGCS_Type CMCFGCS[2]; /*!< (@ 0x00000010) xSPI Command Map Configuration registers */ + __IM uint32_t RESERVED[8]; + + union + { + __IOM uint32_t LIOCFGCS[2]; /*!< (@ 0x00000050) xSPI Link I/O Configuration register CS[0..1] */ + + struct + { + __IOM uint32_t PRTMD : 10; /*!< [9..0] Protocol mode */ + __IOM uint32_t LATEMD : 1; /*!< [10..10] Latency mode */ + __IOM uint32_t WRMSKMD : 1; /*!< [11..11] Write mask mode */ + uint32_t : 4; + __IOM uint32_t CSMIN : 4; /*!< [19..16] CS minimum idle term */ + __IOM uint32_t CSASTEX : 1; /*!< [20..20] CS asserting extension */ + __IOM uint32_t CSNEGEX : 1; /*!< [21..21] CS negating extension */ + __IOM uint32_t SDRDRV : 1; /*!< [22..22] SDR driving timing */ + __IOM uint32_t SDRSMPMD : 1; /*!< [23..23] SDR Sampling mode */ + __IOM uint32_t SDRSMPSFT : 4; /*!< [27..24] SDR Sampling window shift */ + __IOM uint32_t DDRSMPEX : 4; /*!< [31..28] DDR sampling window extend */ + } LIOCFGCS_b[2]; + }; + + union + { + __IOM uint32_t ABMCFG; /*!< (@ 0x00000058) xSPI AXI Bridge Map Config */ + + struct + { + __IOM uint32_t ODRMD : 2; /*!< [1..0] AXI Transfer Ordering Mode */ + uint32_t : 14; + __IOM uint32_t CHSEL : 16; /*!< [31..16] AXI ID to Bridge Channel Select */ + } ABMCFG_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t BMCTL0; /*!< (@ 0x00000060) xSPI Bridge Map Control register 0 */ + + struct + { + __IOM uint32_t CH0CS0ACC : 2; /*!< [1..0] System bus ch0 to slave0 memory area access enable */ + __IOM uint32_t CH0CS1ACC : 2; /*!< [3..2] System bus ch0 to slave1 memory area access enable */ + __IOM uint32_t CH1CS0ACC : 2; /*!< [5..4] System bus ch1 to slave0 memory area access enable */ + __IOM uint32_t CH1CS1ACC : 2; /*!< [7..6] System bus ch1 to slave1 memory area access enable */ + uint32_t : 24; + } BMCTL0_b; + }; + + union + { + __OM uint32_t BMCTL1; /*!< (@ 0x00000064) xSPI Bridge Map Control register 1 */ + + struct + { + uint32_t : 8; + __OM uint32_t MWRPUSHCH0 : 1; /*!< [8..8] Memory Write Data Push for ch0 */ + __OM uint32_t MWRPUSHCH1 : 1; /*!< [9..9] Memory Write Data Push for ch1 */ + __OM uint32_t PBUFCLRCH0 : 1; /*!< [10..10] Prefetch Buffer clear for ch0 */ + __OM uint32_t PBUFCLRCH1 : 1; /*!< [11..11] Prefetch Buffer clear for ch1 */ + uint32_t : 20; + } BMCTL1_b; + }; + + union + { + __IOM uint32_t CMCTLCH[2]; /*!< (@ 0x00000068) xSPI Command Map Control register */ + + struct + { + __IOM uint32_t XIPENCODE : 8; /*!< [7..0] XiP mode enter code */ + __IOM uint32_t XIPEXCODE : 8; /*!< [15..8] XiP mode exit code */ + __IOM uint32_t XIPEN : 1; /*!< [16..16] XiP mode enable */ + uint32_t : 15; + } CMCTLCH_b[2]; + }; + + union + { + __IOM uint32_t CDCTL0; /*!< (@ 0x00000070) xSPI Command Manual Control register 0 */ + + struct + { + __IOM uint32_t TRREQ : 1; /*!< [0..0] Transaction request */ + __IOM uint32_t PERMD : 1; /*!< [1..1] Periodic mode */ + uint32_t : 1; + __IOM uint32_t CSSEL : 1; /*!< [3..3] Chip select */ + __IOM uint32_t TRNUM : 2; /*!< [5..4] Transaction number */ + uint32_t : 10; + __IOM uint32_t PERITV : 5; /*!< [20..16] Periodic transaction interval */ + uint32_t : 3; + __IOM uint32_t PERREP : 4; /*!< [27..24] Periodic transaction repeat */ + uint32_t : 4; + } CDCTL0_b; + }; + + union + { + __IOM uint32_t CDCTL1; /*!< (@ 0x00000074) xSPI Command Manual Control register 1 */ + + struct + { + __IOM uint32_t PEREXP : 32; /*!< [31..0] Periodic transaction expected value */ + } CDCTL1_b; + }; + + union + { + __IOM uint32_t CDCTL2; /*!< (@ 0x00000078) xSPI Command Manual Control register 2 */ + + struct + { + __IOM uint32_t PERMSK : 32; /*!< [31..0] Periodic transaction masked value */ + } CDCTL2_b; + }; + __IM uint32_t RESERVED2; + __IOM R_XSPI_CDBUF_Type CDBUF[4]; /*!< (@ 0x00000080) xSPI BUF register */ + __IM uint32_t RESERVED3[16]; + + union + { + __IOM uint32_t LPCTL0; /*!< (@ 0x00000100) xSPI Link Pattern Control register 0 */ + + struct + { + __IOM uint32_t PATREQ : 1; /*!< [0..0] Pattern request */ + uint32_t : 2; + __IOM uint32_t CSSEL : 1; /*!< [3..3] Chip select */ + __IOM uint32_t XDPIN : 2; /*!< [5..4] XiP Disable pattern pin */ + uint32_t : 10; + __IOM uint32_t XD1LEN : 5; /*!< [20..16] XiP Disable pattern 1st phase length */ + uint32_t : 2; + __IOM uint32_t XD1VAL : 1; /*!< [23..23] XiP Disable pattern 1st phase value */ + __IOM uint32_t XD2LEN : 5; /*!< [28..24] XiP Disable pattern 2nd phase length */ + uint32_t : 2; + __IOM uint32_t XD2VAL : 1; /*!< [31..31] XiP Disable pattern 2nd phase value */ + } LPCTL0_b; + }; + + union + { + __IOM uint32_t LPCTL1; /*!< (@ 0x00000104) xSPI Link Pattern Control register 1 */ + + struct + { + __IOM uint32_t PATREQ : 2; /*!< [1..0] Pattern request */ + uint32_t : 1; + __IOM uint32_t CSSEL : 1; /*!< [3..3] Chip select */ + __IOM uint32_t RSTREP : 2; /*!< [5..4] Reset pattern repeat */ + uint32_t : 2; + __IOM uint32_t RSTWID : 3; /*!< [10..8] Reset pattern width */ + uint32_t : 1; + __IOM uint32_t RSTSU : 3; /*!< [14..12] Reset pattern data output setup time */ + uint32_t : 17; + } LPCTL1_b; + }; + + union + { + __IOM uint32_t LIOCTL; /*!< (@ 0x00000108) xSPI Link I/O Control register */ + + struct + { + __IOM uint32_t WPCS0 : 1; /*!< [0..0] WP drive for slave 0 */ + __IOM uint32_t WPCS1 : 1; /*!< [1..1] WP drive for slave 1 */ + uint32_t : 14; + __IOM uint32_t RSTCS0 : 1; /*!< [16..16] Reset drive for slave 0 */ + __IOM uint32_t RSTCS1 : 1; /*!< [17..17] Reset drive for slave 1 */ + uint32_t : 14; + } LIOCTL_b; + }; + __IM uint32_t RESERVED4[9]; + __IOM R_XSPI_CCCTLCS_Type CCCTLCS[2]; /*!< (@ 0x00000130) xSPI CS register */ + __IM uint32_t RESERVED5[4]; + + union + { + __IM uint32_t VERSTT; /*!< (@ 0x00000180) xSPI Version register */ + + struct + { + __IM uint32_t VER : 32; /*!< [31..0] Version */ + } VERSTT_b; + }; + + union + { + __IM uint32_t COMSTT; /*!< (@ 0x00000184) xSPI Common Status register */ + + struct + { + __IM uint32_t MEMACCCH0 : 1; /*!< [0..0] Memory access ongoing from ch0 */ + __IM uint32_t MEMACCCH1 : 1; /*!< [1..1] Memory access ongoing from ch1 */ + uint32_t : 2; + __IM uint32_t PBUFNECH0 : 1; /*!< [4..4] Prefetch Buffer Not Empty for ch0 */ + __IM uint32_t PBUFNECH1 : 1; /*!< [5..5] Prefetch Buffer Not Empty for ch1 */ + __IM uint32_t WRBUFNECH0 : 1; /*!< [6..6] Write Buffer Not Empty for ch0 */ + __IM uint32_t WRBUFNECH1 : 1; /*!< [7..7] Write Buffer Not Empty for ch1 */ + uint32_t : 8; + __IM uint32_t ECSCS0 : 1; /*!< [16..16] ECS monitor for slave0 */ + __IM uint32_t INTCS0 : 1; /*!< [17..17] INT monitor for slave0 */ + __IM uint32_t RSTOCS0 : 1; /*!< [18..18] RSTO monitor for slave0 */ + uint32_t : 1; + __IM uint32_t ECSCS1 : 1; /*!< [20..20] ECS monitor for slave1 */ + __IM uint32_t INTCS1 : 1; /*!< [21..21] INT monitor for slave1 */ + __IM uint32_t RSTOCS1 : 1; /*!< [22..22] RSTO monitor for slave1 */ + uint32_t : 9; + } COMSTT_b; + }; + + union + { + __IM uint32_t CASTTCS[2]; /*!< (@ 0x00000188) xSPI Calibration Status register */ + + struct + { + __IM uint32_t CASUC : 32; /*!< [31..0] Calibration Success */ + } CASTTCS_b[2]; + }; + + union + { + __IM uint32_t INTS; /*!< (@ 0x00000190) xSPI Interrupt Status register */ + + struct + { + __IM uint32_t CMDCMP : 1; /*!< [0..0] Command Completed */ + __IM uint32_t PATCMP : 1; /*!< [1..1] Pattern Completed */ + __IM uint32_t INICMP : 1; /*!< [2..2] Initial Sequence Completed */ + __IM uint32_t PERTO : 1; /*!< [3..3] Periodic transaction timeout */ + __IM uint32_t DSTOCS0 : 1; /*!< [4..4] DS timeout for slave0 */ + __IM uint32_t DSTOCS1 : 1; /*!< [5..5] DS timeout for slave1 */ + uint32_t : 2; + __IM uint32_t ECSCS0 : 1; /*!< [8..8] ECC error detection for slave0 */ + __IM uint32_t ECSCS1 : 1; /*!< [9..9] ECC error detection for slave1 */ + uint32_t : 2; + __IM uint32_t INTCS0 : 1; /*!< [12..12] Interrupt detection for slave0 */ + __IM uint32_t INTCS1 : 1; /*!< [13..13] Interrupt detection for slave1 */ + uint32_t : 2; + __IM uint32_t BRGOFCH0 : 1; /*!< [16..16] Bridge Buffer overflow for CH0 */ + __IM uint32_t BRGOFCH1 : 1; /*!< [17..17] Bridge Buffer overflow for CH1 */ + __IM uint32_t BRGUFCH0 : 1; /*!< [18..18] Bridge Buffer underflow for CH0 */ + __IM uint32_t BRGUFCH1 : 1; /*!< [19..19] Bridge Buffer underflow for CH1 */ + __IM uint32_t BUSERRCH0 : 1; /*!< [20..20] AHB bus error for CH0 */ + __IM uint32_t BUSERRCH1 : 1; /*!< [21..21] AHB bus error for CH1 */ + uint32_t : 6; + __IM uint32_t CAFAILCS0 : 1; /*!< [28..28] Calibration failed for slave0 */ + __IM uint32_t CAFAILCS1 : 1; /*!< [29..29] Calibration failed for slave1 */ + __IM uint32_t CASUCCS0 : 1; /*!< [30..30] Calibration success for slave0 */ + __IM uint32_t CASUCCS1 : 1; /*!< [31..31] Calibration success for slave1 */ + } INTS_b; + }; + + union + { + __OM uint32_t INTC; /*!< (@ 0x00000194) xSPI Interrupt Clear register */ + + struct + { + __OM uint32_t CMDCMPC : 1; /*!< [0..0] Command Completed interrupt clear */ + __OM uint32_t PATCMPC : 1; /*!< [1..1] Pattern Completed interrupt clear */ + __OM uint32_t INICMPC : 1; /*!< [2..2] Initial Sequence Completed interrupt clear */ + __OM uint32_t PERTOC : 1; /*!< [3..3] Periodic transaction timeout interrupt clear */ + __OM uint32_t DSTOCS0C : 1; /*!< [4..4] DS timeout for slave0 interrupt clear */ + __OM uint32_t DSTOCS1C : 1; /*!< [5..5] DS timeout for slave1 interrupt clear */ + uint32_t : 2; + __OM uint32_t ECSCS0C : 1; /*!< [8..8] ECC error detection for slave0 interrupt clear */ + __OM uint32_t ECSCS1C : 1; /*!< [9..9] ECC error detection for slave1 interrupt clear */ + uint32_t : 2; + __OM uint32_t INTCS0C : 1; /*!< [12..12] Interrupt detection for slave0 interrupt clear */ + __OM uint32_t INTCS1C : 1; /*!< [13..13] Interrupt detection for slave1 interrupt clear */ + uint32_t : 2; + __OM uint32_t BRGOFCH0C : 1; /*!< [16..16] Bridge Buffer overflow for CH0 interrupt clear */ + __OM uint32_t BRGOFCH1C : 1; /*!< [17..17] Bridge Buffer overflow for CH1 interrupt clear */ + __OM uint32_t BRGUFCH0C : 1; /*!< [18..18] Bridge Buffer underflow for CH0 interrupt clear */ + __OM uint32_t BRGUFCH1C : 1; /*!< [19..19] Bridge Buffer underflow for CH1 interrupt clear */ + __OM uint32_t BUSERRCH0C : 1; /*!< [20..20] AHB bus error for CH0 interrupt clear */ + __OM uint32_t BUSERRCH1C : 1; /*!< [21..21] AHB bus error for CH1 interrupt clear */ + uint32_t : 6; + __OM uint32_t CAFAILCS0C : 1; /*!< [28..28] Calibration failed for slave0 interrupt clear */ + __OM uint32_t CAFAILCS1C : 1; /*!< [29..29] Calibration failed for slave1 interrupt clear */ + __OM uint32_t CASUCCS0C : 1; /*!< [30..30] Calibration success for slave0 interrupt clear */ + __OM uint32_t CASUCCS1C : 1; /*!< [31..31] Calibration success for slave1 interrupt clear */ + } INTC_b; + }; + + union + { + __IOM uint32_t INTE; /*!< (@ 0x00000198) xSPI Interrupt Enable register */ + + struct + { + __IOM uint32_t CMDCMPE : 1; /*!< [0..0] Command Completed interrupt enable */ + __IOM uint32_t PATCMPE : 1; /*!< [1..1] Pattern Completed interrupt enable */ + __IOM uint32_t INICMPE : 1; /*!< [2..2] Initial Sequence Completed interrupt enable */ + __IOM uint32_t PERTOE : 1; /*!< [3..3] Periodic transaction timeout interrupt enable */ + __IOM uint32_t DSTOCS0E : 1; /*!< [4..4] DS timeout for slave0 interrupt enable */ + __IOM uint32_t DSTOCS1E : 1; /*!< [5..5] DS timeout for slave1 interrupt enable */ + uint32_t : 2; + __IOM uint32_t ECSCS0E : 1; /*!< [8..8] ECC error detection for slave0 interrupt enable */ + __IOM uint32_t ECSCS1E : 1; /*!< [9..9] ECC error detection for slave1 interrupt enable */ + uint32_t : 2; + __IOM uint32_t INTCS0E : 1; /*!< [12..12] Interrupt detection for slave0 interrupt enable */ + __IOM uint32_t INTCS1E : 1; /*!< [13..13] Interrupt detection for slave1 interrupt enable */ + uint32_t : 2; + __IOM uint32_t BRGOFCH0E : 1; /*!< [16..16] Bridge Buffer overflow for CH0 interrupt enable */ + __IOM uint32_t BRGOFCH1E : 1; /*!< [17..17] Bridge Buffer overflow for CH1 interrupt enable */ + __IOM uint32_t BRGUFCH0E : 1; /*!< [18..18] Bridge Buffer underflow for CH0 interrupt enable */ + __IOM uint32_t BRGUFCH1E : 1; /*!< [19..19] Bridge Buffer underflow for CH1 interrupt enable */ + __IOM uint32_t BUSERRCH0E : 1; /*!< [20..20] AHB bus error for CH0 interrupt enable */ + __IOM uint32_t BUSERRCH1E : 1; /*!< [21..21] AHB bus error for CH1 interrupt enable */ + uint32_t : 6; + __IOM uint32_t CAFAILCS0E : 1; /*!< [28..28] Calibration failed for slave0 interrupt enable */ + __IOM uint32_t CAFAILCS1E : 1; /*!< [29..29] Calibration failed for slave1 interrupt enable */ + __IOM uint32_t CASUCCS0E : 1; /*!< [30..30] Calibration success for slave0 interrupt enable */ + __IOM uint32_t CASUCCS1E : 1; /*!< [31..31] Calibration success for slave1 interrupt enable */ + } INTE_b; + }; +} R_XSPI_Type; /*!< Size = 412 (0x19c) */ + +/* =========================================================================================================================== */ +/* ================ R_CEU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Capture Engine Unit (R_CEU) + */ + +typedef struct /*!< (@ 0x40348000) R_CEU Structure */ +{ + union + { + __IOM uint32_t CAPSR; /*!< (@ 0x00000000) Capture Start Register */ + + struct + { + __IOM uint32_t CE : 1; /*!< [0..0] Capture enable */ + uint32_t : 15; + __IOM uint32_t CPKIL : 1; /*!< [16..16] Write 1 to this bit to perform a software reset of + * capturing. */ + uint32_t : 15; + } CAPSR_b; + }; + + union + { + __IOM uint32_t CAPCR; /*!< (@ 0x00000004) Capture Control Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t CTNCP : 1; /*!< [16..16] When capturing is started with this bit set to 1, capturing + * continues until the CE bit in CAPSR is cleared to 0 or + * a software reset is initiated by the CPKIL bit in CAPSR + * (see ). Continuous capture must be set before capturing + * is started. */ + uint32_t : 3; + __IOM uint32_t MTCM : 2; /*!< [21..20] Specify the unit for transferring data to a bus bridge + * module. */ + uint32_t : 2; + __IOM uint32_t FDRP : 8; /*!< [31..24] Set the frame drop interval in continuous-frame capture. */ + } CAPCR_b; + }; + + union + { + __IOM uint32_t CAMCR; /*!< (@ 0x00000008) Capture interface control register */ + + struct + { + __IOM uint32_t HDPOL : 1; /*!< [0..0] Sets the polarity for detection of the horizontal sync + * signal input from an external module. */ + __IOM uint32_t VDPOL : 1; /*!< [1..1] Sets the polarity for detection of the vertical sync + * signal input from an external module. */ + uint32_t : 2; + __IOM uint32_t JPG : 2; /*!< [5..4] These bits select the fetched data type. */ + uint32_t : 2; + __IOM uint32_t DTARY : 2; /*!< [9..8] Set the input order of the luminance component and chrominance + * component. */ + uint32_t : 2; + __IOM uint32_t DTIF : 1; /*!< [12..12] Sets the digital image input pins from which data is + * to be captured. */ + uint32_t : 3; + __IOM uint32_t FLDPOL : 1; /*!< [16..16] Sets the polarity of the field identification signal + * (FLD) from an external module. */ + uint32_t : 7; + __IOM uint32_t DSEL : 1; /*!< [24..24] Sets the edge for fetching the image data (D7 to D0) + * from an external module. */ + __IOM uint32_t FLDSEL : 1; /*!< [25..25] Sets the edge for capturing the field identification + * signal (FLD) from an external module. */ + __IOM uint32_t HDSEL : 1; /*!< [26..26] Sets the edge for capturing the horizontal sync signal + * (HD) from an external module. */ + __IOM uint32_t VDSEL : 1; /*!< [27..27] Sets the edge for capturing the vertical sync signal + * (VD) from an external module. */ + uint32_t : 4; + } CAMCR_b; + }; + + union + { + __IOM uint32_t CMCYR; /*!< (@ 0x0000000C) Capture Interface Cycle Register */ + + struct + { + __IOM uint32_t HCYL : 14; /*!< [13..0] Horizontal Cycle Count of External Module */ + uint32_t : 2; + __IOM uint32_t VCYL : 14; /*!< [29..16] Vertical HD Count of External Module */ + uint32_t : 2; + } CMCYR_b; + }; + + union + { + __IOM uint32_t CAMOR; /*!< (@ 0x00000010) Capture Interface Offset Register */ + + struct + { + __IOM uint32_t HOFST : 13; /*!< [12..0] Specify the capture start location in terms of the number + * of clock cycles from a horizontal sync signal (1-cycle + * units). */ + uint32_t : 3; + __IOM uint32_t VOFST : 12; /*!< [27..16] Specify the capture start location in terms of the + * HD count from a vertical sync signal (1-HD units). */ + uint32_t : 4; + } CAMOR_b; + }; + + union + { + __IOM uint32_t CAPWR; /*!< (@ 0x00000014) Capture Interface Width Register */ + + struct + { + __IOM uint32_t HWDTH : 13; /*!< [12..0] Specify the horizontal capture period. */ + uint32_t : 3; + __IOM uint32_t VWDTH : 12; /*!< [27..16] Specify the vertical capture period (4-HD units). */ + uint32_t : 4; + } CAPWR_b; + }; + + union + { + __IOM uint32_t CAIFR; /*!< (@ 0x00000018) Capture Interface Input Format Register */ + + struct + { + __IOM uint32_t FCI : 2; /*!< [1..0] Set the timing to start capturing. */ + uint32_t : 2; + __IOM uint32_t CIM : 1; /*!< [4..4] Sets the images to be captured. */ + uint32_t : 3; + __IOM uint32_t IFS : 1; /*!< [8..8] Sets the input mode for capturing images. */ + uint32_t : 23; + } CAIFR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t CRCNTR; /*!< (@ 0x00000028) CEU Register Control Register */ + + struct + { + __IOM uint32_t RC : 1; /*!< [0..0] Specifies switching of the register plane used by the + * CEU in synchronization with VD. */ + __IOM uint32_t RS : 1; /*!< [1..1] Specifies which register plane is used by the CEU in + * synchronization with VD. */ + uint32_t : 2; + __IOM uint32_t RVS : 1; /*!< [4..4] Sets the timing to switch the register plane in both-field + * capture. */ + uint32_t : 27; + } CRCNTR_b; + }; + + union + { + __IOM uint32_t CRCMPR; /*!< (@ 0x0000002C) CEU Register Forcible Control Register */ + + struct + { + __IOM uint32_t RA : 1; /*!< [0..0] Indicates the register plane currently specified. */ + uint32_t : 31; + } CRCMPR_b; + }; + + union + { + __IOM uint32_t CFLCR; /*!< (@ 0x00000030) Capture Filter Control Register */ + + struct + { + __IOM uint32_t HFRAC : 12; /*!< [11..0] Fraction Part of Horizontal Scale-Down Factor */ + __IOM uint32_t HMANT : 4; /*!< [15..12] Mantissa Part of Horizontal Scale-Down Factor */ + __IOM uint32_t VFRAC : 12; /*!< [27..16] Fraction Part of Vertical Scale-Down Factor */ + __IOM uint32_t VMANT : 4; /*!< [31..28] Mantissa Part of Vertical Scale-Down Factor */ + } CFLCR_b; + }; + + union + { + __IOM uint32_t CFSZR; /*!< (@ 0x00000034) Capture Filter Size Clip Register */ + + struct + { + __IOM uint32_t HFCLP : 12; /*!< [11..0] Specify the horizontal clipping value of the filter + * output size (4-pixel units). */ + uint32_t : 4; + __IOM uint32_t VFCLP : 12; /*!< [27..16] Set the vertical clipping value of the filter output + * size (4-pixel units). */ + uint32_t : 4; + } CFSZR_b; + }; + + union + { + __IOM uint32_t CDWDR; /*!< (@ 0x00000038) Capture Destination Width Register */ + + struct + { + __IOM uint32_t CHDW : 13; /*!< [12..0] Specify the horizontal image size in the memory area + * where the captured image is to be stored (4-byte units). */ + uint32_t : 19; + } CDWDR_b; + }; + + union + { + __IOM uint32_t CDAYR; /*!< (@ 0x0000003C) Capture Data Address Y Register */ + + struct + { + __IOM uint32_t CAYR : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR_b; + }; + + union + { + __IOM uint32_t CDACR; /*!< (@ 0x00000040) Capture Data Address C Register */ + + struct + { + __IOM uint32_t CACR : 32; /*!< [31..0] Capture Data Address C */ + } CDACR_b; + }; + + union + { + __IOM uint32_t CDBYR; /*!< (@ 0x00000044) Capture Data Bottom-Field Address Y Register */ + + struct + { + __IOM uint32_t CBYR : 32; /*!< [31..0] Set the address for storing the Y (luminance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBYR_b; + }; + + union + { + __IOM uint32_t CDBCR; /*!< (@ 0x00000048) Capture Data Bottom-Field Address C Register */ + + struct + { + __IOM uint32_t CBCR : 32; /*!< [31..0] Set the address for storing the C (chrominance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBCR_b; + }; + + union + { + __IOM uint32_t CBDSR; /*!< (@ 0x0000004C) Capture Bundle Destination Size Register */ + + struct + { + __IOM uint32_t CBVS : 23; /*!< [22..0] Select the number of lines or number of bytes for output + * to the memory in a bundle write. */ + uint32_t : 9; + } CBDSR_b; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t CFWCR; /*!< (@ 0x0000005C) Firewall Operation Control Register */ + + struct + { + __IOM uint32_t FWE : 1; /*!< [0..0] With the setting of FWE = 1, when an address exceeds + * the value set with FWV, the address is retained and an + * interrupt source FWF is set. After this, the address is + * not incremented and data is overwritten on the upper limit + * address. */ + uint32_t : 4; + __IOM uint32_t FWV : 27; /*!< [31..5] Specify the upper limit of a write address. */ + } CFWCR_b; + }; + + union + { + __IOM uint32_t CLFCR; /*!< (@ 0x00000060) Capture Low-Pass Filter Control Register */ + + struct + { + __IOM uint32_t LPF : 1; /*!< [0..0] Enables or disables operation of the low-pass filter. */ + uint32_t : 31; + } CLFCR_b; + }; + + union + { + __IOM uint32_t CDOCR; /*!< (@ 0x00000064) Capture Data Output Control Register */ + + struct + { + __IOM uint32_t COBS : 1; /*!< [0..0] Controls swapping in 8-bit units for data output from + * the CEU. */ + __IOM uint32_t COWS : 1; /*!< [1..1] Controls swapping in 16-bit units for data output from + * the CEU. */ + __IOM uint32_t COLS : 1; /*!< [2..2] Controls swapping in 32-bit units for data output from + * the CEU. */ + uint32_t : 1; + __IOM uint32_t CDS : 1; /*!< [4..4] Sets the image format when outputting the image data + * captured in the YCbCr422 format to the memory. */ + uint32_t : 11; + __IOM uint32_t CBE : 1; /*!< [16..16] Controls the number of lines of captured data to be + * written to the memory. */ + uint32_t : 15; + } CDOCR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t CEIER; /*!< (@ 0x00000070) Capture Event Interrupt Enable Register */ + + struct + { + __IOM uint32_t CPEIE : 1; /*!< [0..0] One-Frame Capture End Interrupt Enable */ + __IOM uint32_t CFEIE : 1; /*!< [1..1] CFE Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t IGRWIE : 1; /*!< [4..4] Register-Access-During-Capture Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t HDIE : 1; /*!< [8..8] HD Interrupt Enable */ + __IOM uint32_t VDIE : 1; /*!< [9..9] VD Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t CPBE1IE : 1; /*!< [12..12] CPBE1 Interrupt Enable */ + __IOM uint32_t CPBE2IE : 1; /*!< [13..13] CPBE2 Interrupt Enable */ + __IOM uint32_t CPBE3IE : 1; /*!< [14..14] CPBE3 Interrupt Enable */ + __IOM uint32_t CPBE4IE : 1; /*!< [15..15] CPBE4 Interrupt Enable */ + __IOM uint32_t CDTOFIE : 1; /*!< [16..16] CDTOF Interrupt Enable */ + __IOM uint32_t IGHSIE : 1; /*!< [17..17] IGHS Interrupt Enable */ + __IOM uint32_t IGVSIE : 1; /*!< [18..18] IGVS Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t VBPIE : 1; /*!< [20..20] VBP Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t FWFIE : 1; /*!< [23..23] FWF Interrupt Enable */ + __IOM uint32_t NHDIE : 1; /*!< [24..24] Non-HD Interrupt Enable */ + __IOM uint32_t NVDIE : 1; /*!< [25..25] Non-VD Interrupt Enable */ + uint32_t : 6; + } CEIER_b; + }; + + union + { + __IOM uint32_t CETCR; /*!< (@ 0x00000074) Capture Event Flag Clear Register */ + + struct + { + __IOM uint32_t CPE : 1; /*!< [0..0] An interrupt indicating that capturing of one frame from + * an external module has finished. */ + __IOM uint32_t CFE : 1; /*!< [1..1] An interrupt indicating that capturing of one field from + * an external module has finished. */ + uint32_t : 2; + __IOM uint32_t IGRW : 1; /*!< [4..4] An interrupt indicating that during capturing, access + * was attempted to a register to which writing during operation + * is prohibited. */ + uint32_t : 3; + __IOM uint32_t HD : 1; /*!< [8..8] An interrupt indicating that HD (horizontal sync signal) + * was input from an external module. */ + __IOM uint32_t VD : 1; /*!< [9..9] An interrupt indicating that VD (vertical sync signal) + * was input from an external module. */ + uint32_t : 2; + __IOM uint32_t CPBE1 : 1; /*!< [12..12] An interrupt indicating that writing to CDAYR and CDACR + * in a bundle write has finished. */ + __IOM uint32_t CPBE2 : 1; /*!< [13..13] An interrupt indicating that writing to CDAYR2 and + * CDACR2 in a bundle write has finished. */ + __IOM uint32_t CPBE3 : 1; /*!< [14..14] An interrupt indicating that writing to CDBYR and CDBCR + * in a bundle write has finished. */ + __IOM uint32_t CPBE4 : 1; /*!< [15..15] An interrupt indicating that writing to CDBYR2 and + * CDBCR2 in a bundle write has finished. */ + __IOM uint32_t CDTOF : 1; /*!< [16..16] An interrupt indicating that data overflowed in the + * CRAM of the write buffer */ + __IOM uint32_t IGHS : 1; /*!< [17..17] An interrupt generated when the number of HD cycles + * set in CMCYR differ from the number of HD cycles input + * from an external module. */ + __IOM uint32_t IGVS : 1; /*!< [18..18] An interrupt generated when the number of VD cycles + * set in CMCYR differ from the number of VD cycles input + * from an external module. */ + uint32_t : 1; + __IOM uint32_t VBP : 1; /*!< [20..20] An interrupt indicating that VD has been input while + * the CEU holds data (insufficient vertical-sync front porch). */ + uint32_t : 2; + __IOM uint32_t FWF : 1; /*!< [23..23] The interrupt is generated when data is written to + * the address that exceeds the value specified with CFWCR.FMV. */ + __IOM uint32_t NHD : 1; /*!< [24..24] An interrupt indicating that no HD was input. */ + __IOM uint32_t NVD : 1; /*!< [25..25] An interrupt indicating that no VD was input. */ + uint32_t : 6; + } CETCR_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IM uint32_t CSTSR; /*!< (@ 0x0000007C) Capture Status Register */ + + struct + { + __IM uint32_t CPTON : 1; /*!< [0..0] Indicates that the CEU is operating. */ + uint32_t : 15; + __IM uint32_t CPFLD : 1; /*!< [16..16] Indicates which field is being captured. */ + uint32_t : 7; + __IM uint32_t CRST : 1; /*!< [24..24] Indicates which register plane is currently used. */ + uint32_t : 7; + } CSTSR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IM uint32_t CDSSR; /*!< (@ 0x00000084) Capture Data Size Register */ + + struct + { + __IM uint32_t CDSS : 32; /*!< [31..0] Indicate the size of data written to the memory in data + * enable fetch. */ + } CDSSR_b; + }; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t CDAYR2; /*!< (@ 0x00000090) Capture Data Address Y Register 2 */ + + struct + { + __IOM uint32_t CAYR2 : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR2_b; + }; + + union + { + __IOM uint32_t CDACR2; /*!< (@ 0x00000094) Capture Data Address C Register 2 */ + + struct + { + __IOM uint32_t CACR2 : 32; /*!< [31..0] Capture Data Address C2 */ + } CDACR2_b; + }; + + union + { + __IOM uint32_t CDBYR2; /*!< (@ 0x00000098) Capture Data Bottom-Field Address Y Register + * 2 */ + + struct + { + __IOM uint32_t CBYR2 : 32; /*!< [31..0] Set the address for storing the Y component data of + * the captured bottom-field data (4-pixel units). */ + } CDBYR2_b; + }; + + union + { + __IOM uint32_t CDBCR2; /*!< (@ 0x0000009C) Capture Data Bottom-Field Address C Register + * 2 */ + + struct + { + __IOM uint32_t CBCR2 : 32; /*!< [31..0] Set the address for storing the C component data of + * the captured bottom-field data (4-pixel units). */ + } CDBCR2_b; + }; + + union + { + __IOM uint32_t AXIBUSCTL2; /*!< (@ 0x000000A0) AXI Bus Control Register 2 */ + + struct + { + __IOM uint32_t AWCACHE : 4; /*!< [3..0] AWCACHE[3:0] Signals for Capture Engine Unit */ + uint32_t : 28; + } AXIBUSCTL2_b; + }; + __IM uint32_t RESERVED6[987]; + + union + { + __IOM uint32_t CAMOR_B; /*!< (@ 0x00001010) Capture Interface Offset Register */ + + struct + { + __IOM uint32_t HOFST : 13; /*!< [12..0] Specify the capture start location in terms of the number + * of clock cycles from a horizontal sync signal (1-cycle + * units). */ + uint32_t : 3; + __IOM uint32_t VOFST : 12; /*!< [27..16] Specify the capture start location in terms of the + * HD count from a vertical sync signal (1-HD units). */ + uint32_t : 4; + } CAMOR_B_b; + }; + + union + { + __IOM uint32_t CAPWR_B; /*!< (@ 0x00001014) Capture Interface Width Register */ + + struct + { + __IOM uint32_t HWDTH : 13; /*!< [12..0] Specify the horizontal capture period. */ + uint32_t : 3; + __IOM uint32_t VWDTH : 12; /*!< [27..16] Specify the vertical capture period (4-HD units). */ + uint32_t : 4; + } CAPWR_B_b; + }; + __IM uint32_t RESERVED7[6]; + + union + { + __IOM uint32_t CFLCR_B; /*!< (@ 0x00001030) Capture Filter Control Register */ + + struct + { + __IOM uint32_t HFRAC : 12; /*!< [11..0] Fraction Part of Horizontal Scale-Down Factor */ + __IOM uint32_t HMANT : 4; /*!< [15..12] Mantissa Part of Horizontal Scale-Down Factor */ + __IOM uint32_t VFRAC : 12; /*!< [27..16] Fraction Part of Vertical Scale-Down Factor */ + __IOM uint32_t VMANT : 4; /*!< [31..28] Mantissa Part of Vertical Scale-Down Factor */ + } CFLCR_B_b; + }; + + union + { + __IOM uint32_t CFSZR_B; /*!< (@ 0x00001034) Capture Filter Size Clip Register */ + + struct + { + __IOM uint32_t HFCLP : 12; /*!< [11..0] Specify the horizontal clipping value of the filter + * output size (4-pixel units). */ + uint32_t : 4; + __IOM uint32_t VFCLP : 12; /*!< [27..16] Set the vertical clipping value of the filter output + * size (4-pixel units). */ + uint32_t : 4; + } CFSZR_B_b; + }; + + union + { + __IOM uint32_t CDWDR_B; /*!< (@ 0x00001038) Capture Destination Width Register */ + + struct + { + __IOM uint32_t CHDW : 13; /*!< [12..0] Specify the horizontal image size in the memory area + * where the captured image is to be stored (4-byte units). */ + uint32_t : 19; + } CDWDR_B_b; + }; + + union + { + __IOM uint32_t CDAYR_B; /*!< (@ 0x0000103C) Capture Data Address Y Register */ + + struct + { + __IOM uint32_t CAYR : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR_B_b; + }; + + union + { + __IOM uint32_t CDACR_B; /*!< (@ 0x00001040) Capture Data Address C Register */ + + struct + { + __IOM uint32_t CACR : 32; /*!< [31..0] Capture Data Address C */ + } CDACR_B_b; + }; + + union + { + __IOM uint32_t CDBYR_B; /*!< (@ 0x00001044) Capture Data Bottom-Field Address Y Register */ + + struct + { + __IOM uint32_t CBYR : 32; /*!< [31..0] Set the address for storing the Y (luminance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBYR_B_b; + }; + + union + { + __IOM uint32_t CDBCR_B; /*!< (@ 0x00001048) Capture Data Bottom-Field Address C Register */ + + struct + { + __IOM uint32_t CBCR : 32; /*!< [31..0] Set the address for storing the C (chrominance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBCR_B_b; + }; + + union + { + __IOM uint32_t CBDSR_B; /*!< (@ 0x0000104C) Capture Bundle Destination Size Register */ + + struct + { + __IOM uint32_t CBVS : 23; /*!< [22..0] Select the number of lines or number of bytes for output + * to the memory in a bundle write. */ + uint32_t : 9; + } CBDSR_B_b; + }; + __IM uint32_t RESERVED8[4]; + + union + { + __IOM uint32_t CLFCR_B; /*!< (@ 0x00001060) Capture Low-Pass Filter Control Register */ + + struct + { + __IOM uint32_t LPF : 1; /*!< [0..0] Enables or disables operation of the low-pass filter. */ + uint32_t : 31; + } CLFCR_B_b; + }; + + union + { + __IOM uint32_t CDOCR_B; /*!< (@ 0x00001064) Capture Data Output Control Register */ + + struct + { + __IOM uint32_t COBS : 1; /*!< [0..0] Controls swapping in 8-bit units for data output from + * the CEU. */ + __IOM uint32_t COWS : 1; /*!< [1..1] Controls swapping in 16-bit units for data output from + * the CEU. */ + __IOM uint32_t COLS : 1; /*!< [2..2] Controls swapping in 32-bit units for data output from + * the CEU. */ + uint32_t : 1; + __IOM uint32_t CDS : 1; /*!< [4..4] Sets the image format when outputting the image data + * captured in the YCbCr422 format to the memory. */ + uint32_t : 11; + __IOM uint32_t CBE : 1; /*!< [16..16] Controls the number of lines of captured data to be + * written to the memory. */ + uint32_t : 15; + } CDOCR_B_b; + }; + __IM uint32_t RESERVED9[10]; + + union + { + __IOM uint32_t CDAYR2_B; /*!< (@ 0x00001090) Capture Data Address Y Register 2 */ + + struct + { + __IOM uint32_t CAYR2 : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR2_B_b; + }; + + union + { + __IOM uint32_t CDACR2_B; /*!< (@ 0x00001094) Capture Data Address C Register 2 */ + + struct + { + __IOM uint32_t CACR2 : 32; /*!< [31..0] Capture Data Address C2 */ + } CDACR2_B_b; + }; + + union + { + __IOM uint32_t CDBYR2_B; /*!< (@ 0x00001098) Capture Data Bottom-Field Address Y Register + * 2 */ + + struct + { + __IOM uint32_t CBYR2 : 32; /*!< [31..0] Set the address for storing the Y component data of + * the captured bottom-field data (4-pixel units). */ + } CDBYR2_B_b; + }; + + union + { + __IOM uint32_t CDBCR2_B; /*!< (@ 0x0000109C) Capture Data Bottom-Field Address C Register + * 2 */ + + struct + { + __IOM uint32_t CBCR2 : 32; /*!< [31..0] Set the address for storing the C component data of + * the captured bottom-field data (4-pixel units). */ + } CDBCR2_B_b; + }; + __IM uint32_t RESERVED10[988]; + + union + { + __IOM uint32_t CAMOR_M; /*!< (@ 0x00002010) Capture Interface Offset Register */ + + struct + { + __IOM uint32_t HOFST : 13; /*!< [12..0] Specify the capture start location in terms of the number + * of clock cycles from a horizontal sync signal (1-cycle + * units). */ + uint32_t : 3; + __IOM uint32_t VOFST : 12; /*!< [27..16] Specify the capture start location in terms of the + * HD count from a vertical sync signal (1-HD units). */ + uint32_t : 4; + } CAMOR_M_b; + }; + + union + { + __IOM uint32_t CAPWR_M; /*!< (@ 0x00002014) Capture Interface Width Register */ + + struct + { + __IOM uint32_t HWDTH : 13; /*!< [12..0] Specify the horizontal capture period. */ + uint32_t : 3; + __IOM uint32_t VWDTH : 12; /*!< [27..16] Specify the vertical capture period (4-HD units). */ + uint32_t : 4; + } CAPWR_M_b; + }; + __IM uint32_t RESERVED11[6]; + + union + { + __IOM uint32_t CFLCR_M; /*!< (@ 0x00002030) Capture Filter Control Register */ + + struct + { + __IOM uint32_t HFRAC : 12; /*!< [11..0] Fraction Part of Horizontal Scale-Down Factor */ + __IOM uint32_t HMANT : 4; /*!< [15..12] Mantissa Part of Horizontal Scale-Down Factor */ + __IOM uint32_t VFRAC : 12; /*!< [27..16] Fraction Part of Vertical Scale-Down Factor */ + __IOM uint32_t VMANT : 4; /*!< [31..28] Mantissa Part of Vertical Scale-Down Factor */ + } CFLCR_M_b; + }; + + union + { + __IOM uint32_t CFSZR_M; /*!< (@ 0x00002034) Capture Filter Size Clip Register */ + + struct + { + __IOM uint32_t HFCLP : 12; /*!< [11..0] Specify the horizontal clipping value of the filter + * output size (4-pixel units). */ + uint32_t : 4; + __IOM uint32_t VFCLP : 12; /*!< [27..16] Set the vertical clipping value of the filter output + * size (4-pixel units). */ + uint32_t : 4; + } CFSZR_M_b; + }; + + union + { + __IOM uint32_t CDWDR_M; /*!< (@ 0x00002038) Capture Destination Width Register */ + + struct + { + __IOM uint32_t CHDW : 13; /*!< [12..0] Specify the horizontal image size in the memory area + * where the captured image is to be stored (4-byte units). */ + uint32_t : 19; + } CDWDR_M_b; + }; + + union + { + __IOM uint32_t CDAYR_M; /*!< (@ 0x0000203C) Capture Data Address Y Register */ + + struct + { + __IOM uint32_t CAYR : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR_M_b; + }; + + union + { + __IOM uint32_t CDACR_M; /*!< (@ 0x00002040) Capture Data Address C Register */ + + struct + { + __IOM uint32_t CACR : 32; /*!< [31..0] Capture Data Address C */ + } CDACR_M_b; + }; + + union + { + __IOM uint32_t CDBYR_M; /*!< (@ 0x00002044) Capture Data Bottom-Field Address Y Register */ + + struct + { + __IOM uint32_t CBYR : 32; /*!< [31..0] Set the address for storing the Y (luminance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBYR_M_b; + }; + + union + { + __IOM uint32_t CDBCR_M; /*!< (@ 0x00002048) Capture Data Bottom-Field Address C Register */ + + struct + { + __IOM uint32_t CBCR : 32; /*!< [31..0] Set the address for storing the C (chrominance) component + * data of the captured bottom-field data (4-pixel units). */ + } CDBCR_M_b; + }; + + union + { + __IOM uint32_t CBDSR_M; /*!< (@ 0x0000204C) Capture Bundle Destination Size Register */ + + struct + { + __IOM uint32_t CBVS : 23; /*!< [22..0] Select the number of lines or number of bytes for output + * to the memory in a bundle write. */ + uint32_t : 9; + } CBDSR_M_b; + }; + __IM uint32_t RESERVED12[4]; + + union + { + __IOM uint32_t CLFCR_M; /*!< (@ 0x00002060) Capture Low-Pass Filter Control Register */ + + struct + { + __IOM uint32_t LPF : 1; /*!< [0..0] Enables or disables operation of the low-pass filter. */ + uint32_t : 31; + } CLFCR_M_b; + }; + + union + { + __IOM uint32_t CDOCR_M; /*!< (@ 0x00002064) Capture Data Output Control Register */ + + struct + { + __IOM uint32_t COBS : 1; /*!< [0..0] Controls swapping in 8-bit units for data output from + * the CEU. */ + __IOM uint32_t COWS : 1; /*!< [1..1] Controls swapping in 16-bit units for data output from + * the CEU. */ + __IOM uint32_t COLS : 1; /*!< [2..2] Controls swapping in 32-bit units for data output from + * the CEU. */ + uint32_t : 1; + __IOM uint32_t CDS : 1; /*!< [4..4] Sets the image format when outputting the image data + * captured in the YCbCr422 format to the memory. */ + uint32_t : 11; + __IOM uint32_t CBE : 1; /*!< [16..16] Controls the number of lines of captured data to be + * written to the memory. */ + uint32_t : 15; + } CDOCR_M_b; + }; + __IM uint32_t RESERVED13[10]; + + union + { + __IOM uint32_t CDAYR2_M; /*!< (@ 0x00002090) Capture Data Address Y Register 2 */ + + struct + { + __IOM uint32_t CAYR2 : 32; /*!< [31..0] Capture Data Address Y */ + } CDAYR2_M_b; + }; + + union + { + __IOM uint32_t CDACR2_M; /*!< (@ 0x00002094) Capture Data Address C Register 2 */ + + struct + { + __IOM uint32_t CACR2 : 32; /*!< [31..0] Capture Data Address C2 */ + } CDACR2_M_b; + }; + + union + { + __IOM uint32_t CDBYR2_M; /*!< (@ 0x00002098) Capture Data Bottom-Field Address Y Register + * 2 */ + + struct + { + __IOM uint32_t CBYR2 : 32; /*!< [31..0] Set the address for storing the Y component data of + * the captured bottom-field data (4-pixel units). */ + } CDBYR2_M_b; + }; + + union + { + __IOM uint32_t CDBCR2_M; /*!< (@ 0x0000209C) Capture Data Bottom-Field Address C Register + * 2 */ + + struct + { + __IOM uint32_t CBCR2 : 32; /*!< [31..0] Set the address for storing the C component data of + * the captured bottom-field data (4-pixel units). */ + } CDBCR2_M_b; + }; +} R_CEU_Type; /*!< Size = 8352 (0x20a0) */ + +/* =========================================================================================================================== */ +/* ================ R_ULPT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ultra-Low Power Timer 0 (R_ULPT0) + */ + +typedef struct /*!< (@ 0x40220000) R_ULPT0 Structure */ +{ + union + { + __IOM uint32_t ULPTCNT; /*!< (@ 0x00000000) ULPT Counter Register */ + + struct + { + __IOM uint32_t ULPTCNT : 32; /*!< [31..0] 32bit counter and reload registerNOTE : When 1 is written + * to the TSTOP bit in the ULPTCR register, the 32-bit counter + * is forcibly stopped and set to FFFFFFFFH. */ + } ULPTCNT_b; + }; + + union + { + __IOM uint32_t ULPTCMA; /*!< (@ 0x00000004) ULPT Compare Match A Register */ + + struct + { + __IOM uint32_t ULPTCMA : 32; /*!< [31..0] ULPT Compare Match A RegisterNOTE : When 1 is written + * to the TSTOP bit in the ULPTCR register, set to FFFFFFFFH */ + } ULPTCMA_b; + }; + + union + { + __IOM uint32_t ULPTCMB; /*!< (@ 0x00000008) ULPT Compare Match B Register */ + + struct + { + __IOM uint32_t ULPTCMB : 32; /*!< [31..0] AGT Compare Match B RegisterNOTE : When 1 is written + * to the TSTOP bit in the ULPTCR register, set to FFFFFFFFH */ + } ULPTCMB_b; + }; + + union + { + __IOM uint8_t ULPTCR; /*!< (@ 0x0000000C) ULPT Control Register */ + + struct + { + __IOM uint8_t TSTART : 1; /*!< [0..0] ULPT count start */ + __IM uint8_t TCSTF : 1; /*!< [1..1] ULPT count status flag */ + __OM uint8_t TSTOP : 1; /*!< [2..2] ULPT count forced stop */ + uint8_t : 2; + __IOM uint8_t TUNDF : 1; /*!< [5..5] ULPT underflow flag */ + __IOM uint8_t TCMAF : 1; /*!< [6..6] ULPT compare match A flag */ + __IOM uint8_t TCMBF : 1; /*!< [7..7] ULPT compare match B flag */ + } ULPTCR_b; + }; + + union + { + __IOM uint8_t ULPTMR1; /*!< (@ 0x0000000D) ULPT Mode Register 1 */ + + struct + { + uint8_t : 1; + __IOM uint8_t TMOD1 : 1; /*!< [1..1] ULPT operating mode select */ + uint8_t : 1; + __IOM uint8_t TEDGPL : 1; /*!< [3..3] ULPTEVI edge polarity select */ + uint8_t : 1; + __IOM uint8_t TCK1 : 1; /*!< [5..5] ULPT count source select */ + uint8_t : 2; + } ULPTMR1_b; + }; + + union + { + __IOM uint8_t ULPTMR2; /*!< (@ 0x0000000E) ULPT Mode Register 2 */ + + struct + { + __IOM uint8_t CKS : 3; /*!< [2..0] fsub/LOCO count source clock frequency division ratio + * select */ + uint8_t : 4; + __IOM uint8_t LPM : 1; /*!< [7..7] ULPT Low Power Mode */ + } ULPTMR2_b; + }; + + union + { + __IOM uint8_t ULPTMR3; /*!< (@ 0x0000000F) ULPT Mode Register 3 */ + + struct + { + __IOM uint8_t TCNTCTL : 1; /*!< [0..0] ULPT count function select */ + __IOM uint8_t TEVPOL : 1; /*!< [1..1] ULPTEVI polarity switch */ + __IOM uint8_t TOPOL : 1; /*!< [2..2] ULPTO polarity select */ + uint8_t : 1; + __IOM uint8_t TEECTL : 2; /*!< [5..4] ULPTEE function select */ + __IOM uint8_t TEEPOL : 2; /*!< [7..6] ULPTEE edge polarity select */ + } ULPTMR3_b; + }; + + union + { + __IOM uint8_t ULPTIOC; /*!< (@ 0x00000010) ULPT I/O Control Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t TOE : 1; /*!< [2..2] ULPTO output enable */ + uint8_t : 1; + __IOM uint8_t TIPF : 2; /*!< [5..4] ULPTEVI input filter select */ + __IOM uint8_t TIOGT0 : 1; /*!< [6..6] ULPTEVI count control */ + uint8_t : 1; + } ULPTIOC_b; + }; + + union + { + __IOM uint8_t ULPTISR; /*!< (@ 0x00000011) ULPT Event Pin Select Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t RCCPSEL2 : 1; /*!< [2..2] ULPTEE polarty selection */ + uint8_t : 5; + } ULPTISR_b; + }; + + union + { + __IOM uint8_t ULPTCMSR; /*!< (@ 0x00000012) ULPT Compare Match Function Select Register */ + + struct + { + __IOM uint8_t TCMEA : 1; /*!< [0..0] Compare match A register enable */ + __IOM uint8_t TOEA : 1; /*!< [1..1] ULPTOA output enable */ + __IOM uint8_t TOPOLA : 1; /*!< [2..2] ULPTOA polarity select */ + uint8_t : 1; + __IOM uint8_t TCMEB : 1; /*!< [4..4] Compare match B register enable */ + __IOM uint8_t TOEB : 1; /*!< [5..5] ULPTOB output enable */ + __IOM uint8_t TOPOLB : 1; /*!< [6..6] ULPTOB polarity select */ + uint8_t : 1; + } ULPTCMSR_b; + }; + __IM uint8_t RESERVED; +} R_ULPT0_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG_OCD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief On-Chip Debug Function (R_DEBUG_OCD) + */ + +typedef struct /*!< (@ 0x40011000) R_DEBUG_OCD Structure */ +{ + __IM uint32_t RESERVED[192]; + + union + { + __IM uint32_t FSBLSTATM; /*!< (@ 0x00000300) First Stage Boot Loader Status Monitor Register */ + + struct + { + __IM uint32_t CS : 1; /*!< [0..0] FSBL completion status. */ + __IM uint32_t RS : 1; /*!< [1..1] FSBL result status. */ + uint32_t : 30; + } FSBLSTATM_b; + }; +} R_DEBUG_OCD_Type; /*!< Size = 772 (0x304) */ + +/* =========================================================================================================================== */ +/* ================ R_DOTF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Decryption On The Fly (R_DOTF) + */ + +typedef struct /*!< (@ 0x40268800) R_DOTF Structure */ +{ + union + { + __IOM uint32_t CONVAREAST; /*!< (@ 0x00000000) DOTF Conversion Area Start Address Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t CONVAREAST : 20; /*!< [31..12] First address of decryption processing area */ + } CONVAREAST_b; + }; + + union + { + __IOM uint32_t CONVAREAD; /*!< (@ 0x00000004) DOTF Conversion Area End Address Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t CONVAREAD : 20; /*!< [31..12] End address of decryption processing area */ + } CONVAREAD_b; + }; + __IM uint32_t RESERVED[30]; + + union + { + __IOM uint32_t REG00; /*!< (@ 0x00000080) Register 0 */ + + struct + { + uint32_t : 9; + __IOM uint32_t B09 : 1; /*!< [9..9] Bit 09 */ + uint32_t : 6; + __IOM uint32_t B16 : 1; /*!< [16..16] Bit 09 */ + __IOM uint32_t B17 : 1; /*!< [17..17] Bit 17 */ + uint32_t : 2; + __IOM uint32_t B20 : 1; /*!< [20..20] Bit 20 */ + uint32_t : 3; + __IOM uint32_t B24 : 2; /*!< [25..24] Bit24-25 */ + uint32_t : 2; + __IOM uint32_t B28 : 2; /*!< [29..28] Bit28-29 */ + uint32_t : 2; + } REG00_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t REG03; /*!< (@ 0x0000008C) Register 03 */ + + struct + { + __IOM uint32_t B00 : 32; /*!< [31..0] Bit 0 */ + } REG03_b; + }; +} R_DOTF_Type; /*!< Size = 144 (0x90) */ + +/* =========================================================================================================================== */ +/* ================ R_AGTX0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Asynchronous General Purpose Timer (R_AGTX0) + */ + +typedef struct /*!< (@ 0x40221000) R_AGTX0 Structure */ +{ + union + { + __IOM R_AGTX0_AGT32_Type AGT32; /*!< (@ 0x00000000) AGTW (32-bit) peripheral registers */ + __IOM R_AGTX0_AGT16_Type AGT16; /*!< (@ 0x00000000) AGT (16-bit) peripheral registers */ + }; +} R_AGTX0_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_DPHYCNT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief D-PHY Controller Top (R_DPHYCNT) + */ + +typedef struct /*!< (@ 0x40346C00) R_DPHYCNT Structure */ +{ + union + { + __IOM uint32_t DPHYREFCR; /*!< (@ 0x00000000) D-PHY Reference Clock Setting Register */ + + struct + { + __IOM uint32_t RFREQ : 8; /*!< [7..0] Reference Clock Frequency Setting */ + uint32_t : 24; + } DPHYREFCR_b; + }; + + union + { + __IOM uint32_t DPHYPLFCR; /*!< (@ 0x00000004) D-PHY PLL Frequency Control Register */ + + struct + { + __IOM uint32_t IDIV : 2; /*!< [1..0] D-PHY PLL Input Frequency Division Ratio Select */ + uint32_t : 6; + __IOM uint32_t NFMUL : 2; /*!< [9..8] D-PHY PLL Frequency Multiplication Factor Select (Fractional + * Part) */ + uint32_t : 6; + __IOM uint32_t NMUL : 8; /*!< [23..16] D-PHY PLL Frequency Multiplication Factor Select (Integer + * Part) */ + uint32_t : 8; + } DPHYPLFCR_b; + }; + + union + { + __IOM uint32_t DPHYPLOCR; /*!< (@ 0x00000008) D-PHY PLL Operation Control Register */ + + struct + { + __IOM uint32_t PLLSTP : 1; /*!< [0..0] D-PHY PLL Operation Control */ + uint32_t : 31; + } DPHYPLOCR_b; + }; + + union + { + __IOM uint32_t DPHYESCCR; /*!< (@ 0x0000000C) D-PHY Escape Mode Clock Control Register */ + + struct + { + __IOM uint32_t ESCDIV : 5; /*!< [4..0] Escape Mode Transfer Clock Division Ratio */ + uint32_t : 27; + } DPHYESCCR_b; + }; + + union + { + __IOM uint32_t DPHYPWRCR; /*!< (@ 0x00000010) D-PHY Power Supplying Control Register */ + + struct + { + __IOM uint32_t PWRSEN : 1; /*!< [0..0] D-PHY Power Supplying Control */ + uint32_t : 31; + } DPHYPWRCR_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IM uint32_t DPHYSFR; /*!< (@ 0x0000001C) D-PHY Status Flag Register */ + + struct + { + __IM uint32_t PWRSF : 1; /*!< [0..0] D-PHY LDO Power-on Status Flag */ + uint32_t : 7; + __IM uint32_t PLLSF : 1; /*!< [8..8] D-PHY PLL Oscillation Stabilization Flag */ + uint32_t : 23; + } DPHYSFR_b; + }; + + union + { + __IOM uint32_t DPHYOCR; /*!< (@ 0x00000020) D-PHY Operation Control Register */ + + struct + { + __IOM uint32_t DPHYEN : 1; /*!< [0..0] D-PHY Operation Control */ + uint32_t : 31; + } DPHYOCR_b; + }; + + union + { + __IOM uint32_t DPHYTIM1; /*!< (@ 0x00000024) D-PHY Timing Control Register 1 */ + + struct + { + __IOM uint32_t TINIT : 19; /*!< [18..0] D-PHY T_INIT Parameter Setting */ + uint32_t : 13; + } DPHYTIM1_b; + }; + + union + { + __IOM uint32_t DPHYTIM2; /*!< (@ 0x00000028) D-PHY Timing Control Register 2 */ + + struct + { + __IOM uint32_t TCLKPREP : 8; /*!< [7..0] D-PHY T_CLK_PREPARE Parameter Setting */ + uint32_t : 24; + } DPHYTIM2_b; + }; + + union + { + __IOM uint32_t DPHYTIM3; /*!< (@ 0x0000002C) D-PHY Timing Control Register 3 */ + + struct + { + __IOM uint32_t THSPREP : 8; /*!< [7..0] D-PHY T_THS_PREPARE Parameter Setting */ + uint32_t : 24; + } DPHYTIM3_b; + }; + + union + { + __IOM uint32_t DPHYTIM4; /*!< (@ 0x00000030) D-PHY Timing Control Register 4 */ + + struct + { + __IOM uint32_t TCLKZERO : 8; /*!< [7..0] D-PHY T_CLK_ZERO Parameter Setting */ + __IOM uint32_t TCLKPRE : 8; /*!< [15..8] D-PHY T_TCLK_PRE Parameter Setting */ + __IOM uint32_t TCLKPOST : 8; /*!< [23..16] D-PHY T_TCLK_POST Parameter Setting */ + __IOM uint32_t TCLKTRL : 8; /*!< [31..24] D-PHY T_TCLK_TRAIL Parameter Setting */ + } DPHYTIM4_b; + }; + + union + { + __IOM uint32_t DPHYTIM5; /*!< (@ 0x00000034) D-PHY Timing Control Register 5 */ + + struct + { + __IOM uint32_t THSZERO : 8; /*!< [7..0] D-PHY T_THS_ZERO Parameter Setting */ + __IOM uint32_t THSTRL : 8; /*!< [15..8] D-PHY T_THS_TRAIL Parameter Setting */ + __IOM uint32_t THSEXIT : 8; /*!< [23..16] D-PHY T_THS_EXIT Parameter Setting */ + uint32_t : 8; + } DPHYTIM5_b; + }; + + union + { + __IOM uint32_t DPHYTIM6; /*!< (@ 0x00000038) D-PHY Timing Control Register 6 */ + + struct + { + __IOM uint32_t TLPX : 8; /*!< [7..0] D-PHY T_TLPX Parameter Setting */ + uint32_t : 24; + } DPHYTIM6_b; + }; +} R_DPHYCNT_Type; /*!< Size = 60 (0x3c) */ + +/* =========================================================================================================================== */ +/* ================ R_DSILINK ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DSI Link (R_DSILINK) + */ + +typedef struct /*!< (@ 0x40346000) R_DSILINK Structure */ +{ + union + { + __IM uint32_t ISR; /*!< (@ 0x00000000) Interrupt Status Register */ + + struct + { + __IM uint32_t SQ0 : 1; /*!< [0..0] Sequence Channel-0 Interrupt Flag */ + uint32_t : 3; + __IM uint32_t SQ1 : 1; /*!< [4..4] Sequence Channel-1 Interrupt Flag */ + uint32_t : 3; + __IM uint32_t VM : 1; /*!< [8..8] Video Mode Interrupt Flag */ + uint32_t : 3; + __IM uint32_t RCV : 1; /*!< [12..12] Receive Interrupt Flag */ + uint32_t : 3; + __IM uint32_t FERR : 1; /*!< [16..16] Fatal Error Interrupt Flag */ + uint32_t : 3; + __IM uint32_t PPI : 1; /*!< [20..20] PPI Interrupt Flag */ + uint32_t : 11; + } ISR_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IM uint32_t LINKSR; /*!< (@ 0x00000010) Link Status Register */ + + struct + { + __IM uint32_t SQ0RUN : 1; /*!< [0..0] Sequence Channel-0 Running Flag */ + uint32_t : 3; + __IM uint32_t SQ1RUN : 1; /*!< [4..4] Sequence Channel-1 Running Flag */ + uint32_t : 3; + __IM uint32_t VRUN : 1; /*!< [8..8] Video Mode Operation Running Flag */ + uint32_t : 3; + __IM uint32_t HSBUSY : 1; /*!< [12..12] HS Operation Busy Flag */ + __IM uint32_t LPBUSY : 1; /*!< [13..13] LP Operation Busy Flag */ + uint32_t : 18; + } LINKSR_b; + }; + __IM uint32_t RESERVED1[59]; + + union + { + __IOM uint32_t TXSETR; /*!< (@ 0x00000100) Transmit Set Register */ + + struct + { + __IOM uint32_t NUMLANE : 2; /*!< [1..0] Number of Lane */ + uint32_t : 6; + __IOM uint32_t CLEN : 1; /*!< [8..8] Clock Lane Enable */ + __IOM uint32_t DLEN : 1; /*!< [9..9] Data Lane Enable */ + uint32_t : 22; + } TXSETR_b; + }; + + union + { + __IOM uint32_t HSCLKSETR; /*!< (@ 0x00000104) HS Clock Set Register */ + + struct + { + __IOM uint32_t HSCLST : 1; /*!< [0..0] HS Clock Start */ + __IOM uint32_t HSCLMD : 1; /*!< [1..1] HS Clock Running Mode */ + uint32_t : 30; + } HSCLKSETR_b; + }; + + union + { + __IOM uint32_t ULPSSETR; /*!< (@ 0x00000108) ULPS Set Register */ + + struct + { + __IOM uint32_t WKUP : 8; /*!< [7..0] ULPS Wakeup Period */ + uint32_t : 24; + } ULPSSETR_b; + }; + + union + { + __OM uint32_t ULPSCR; /*!< (@ 0x0000010C) ULPS Control Register */ + + struct + { + uint32_t : 24; + __OM uint32_t CLENT : 1; /*!< [24..24] CL ULPS Enter */ + __OM uint32_t CLEXIT : 1; /*!< [25..25] CL ULPS Exit */ + uint32_t : 2; + __OM uint32_t DLENT : 1; /*!< [28..28] DL ULPS Enter */ + __OM uint32_t DLEXIT : 1; /*!< [29..29] DL ULPS Exit */ + uint32_t : 2; + } ULPSCR_b; + }; + + union + { + __IOM uint32_t RSTCR; /*!< (@ 0x00000110) Reset Control Register */ + + struct + { + __IOM uint32_t SWRST : 1; /*!< [0..0] Software Reset */ + uint32_t : 15; + __IOM uint32_t FTXSTP : 1; /*!< [16..16] Force Tx Stop Mode */ + uint32_t : 15; + } RSTCR_b; + }; + + union + { + __IM uint32_t RSTSR; /*!< (@ 0x00000114) Reset Status Register */ + + struct + { + __IM uint32_t RSTHS : 1; /*!< [0..0] HS Software Reset Status */ + __IM uint32_t RSTLP : 1; /*!< [1..1] LP Software Reset Status */ + __IM uint32_t RSTAPB : 1; /*!< [2..2] APB Software Reset Status */ + __IM uint32_t RSTAXI : 1; /*!< [3..3] AXI Software Reset Status */ + __IM uint32_t RSTV : 1; /*!< [4..4] Video Software Reset Status */ + uint32_t : 3; + __IM uint32_t DL0STP : 1; /*!< [8..8] Data Lane-0 Stop Status */ + __IM uint32_t DL1STP : 1; /*!< [9..9] Data Lane-1 Stop Status */ + uint32_t : 5; + __IM uint32_t DL0DIR : 1; /*!< [15..15] Data Lane-0 Direction */ + uint32_t : 16; + } RSTSR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t DSISETR; /*!< (@ 0x00000120) DSI Set Register */ + + struct + { + __IOM uint32_t MRPSZ : 16; /*!< [15..0] Maximum Return Packet Size */ + __IOM uint32_t ECCEN : 1; /*!< [16..16] ECC Check Enable */ + uint32_t : 3; + __IOM uint32_t VC0CRCEN : 1; /*!< [20..20] VC-0 CRC Check Enable */ + __IOM uint32_t VC1CRCEN : 1; /*!< [21..21] VC-1 CRC Check Enable */ + __IOM uint32_t VC2CRCEN : 1; /*!< [22..22] VC-2 CRC Check Enable */ + __IOM uint32_t VC3CRCEN : 1; /*!< [23..23] VC-3 CRC Check Enable */ + uint32_t : 5; + __IOM uint32_t SCREN : 1; /*!< [29..29] Data Scramble Enable */ + __IOM uint32_t EXTEMD : 1; /*!< [30..30] External Tearing Effect Detection Sense Select */ + __IOM uint32_t EOTPEN : 1; /*!< [31..31] HS Transfer EoTp Enable */ + } DSISETR_b; + }; + __IM uint32_t RESERVED3[15]; + + union + { + __IOM uint32_t TXPPD0R; /*!< (@ 0x00000160) Transmit Packet Payload Data 0 Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Payload Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Payload Data 1 */ + __IOM uint32_t DATA2 : 8; /*!< [23..16] Payload Data 2 */ + __IOM uint32_t DATA3 : 8; /*!< [31..24] Payload Data 3 */ + } TXPPD0R_b; + }; + + union + { + __IOM uint32_t TXPPD1R; /*!< (@ 0x00000164) Transmit Packet Payload Data 1 Register */ + + struct + { + __IOM uint32_t DATA4 : 8; /*!< [7..0] Payload Data 4 */ + __IOM uint32_t DATA5 : 8; /*!< [15..8] Payload Data 5 */ + __IOM uint32_t DATA6 : 8; /*!< [23..16] Payload Data 6 */ + __IOM uint32_t DATA7 : 8; /*!< [31..24] Payload Data 7 */ + } TXPPD1R_b; + }; + + union + { + __IOM uint32_t TXPPD2R; /*!< (@ 0x00000168) Transmit Packet Payload Data 2 Register */ + + struct + { + __IOM uint32_t DATA8 : 8; /*!< [7..0] Payload Data 8 */ + __IOM uint32_t DATA9 : 8; /*!< [15..8] Payload Data 9 */ + __IOM uint32_t DATA10 : 8; /*!< [23..16] Payload Data 10 */ + __IOM uint32_t DATA11 : 8; /*!< [31..24] Payload Data 11 */ + } TXPPD2R_b; + }; + + union + { + __IOM uint32_t TXPPD3R; /*!< (@ 0x0000016C) Transmit Packet Payload Data 3 Register */ + + struct + { + __IOM uint32_t DATA12 : 8; /*!< [7..0] Payload Data 12 */ + __IOM uint32_t DATA13 : 8; /*!< [15..8] Payload Data 13 */ + __IOM uint32_t DATA14 : 8; /*!< [23..16] Payload Data 14 */ + __IOM uint32_t DATA15 : 8; /*!< [31..24] Payload Data 15 */ + } TXPPD3R_b; + }; + __IM uint32_t RESERVED4[36]; + + union + { + __IM uint32_t RXSR; /*!< (@ 0x00000200) Receive Status Register */ + + struct + { + __IM uint32_t BTAREND : 1; /*!< [0..0] BTA Request End Interrupt Flag */ + __IM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag */ + __IM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag */ + uint32_t : 5; + __IM uint32_t RXRESP : 1; /*!< [8..8] Response Packet Receive Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXEOTP : 1; /*!< [10..10] EoTp Receive Interrupt Flag */ + uint32_t : 2; + __IM uint32_t RXTE : 1; /*!< [13..13] Tearing Effect Trigger Receive Interrupt Flag */ + __IM uint32_t RXACK : 1; /*!< [14..14] ACK Trigger Receive Interrupt Flag */ + __IM uint32_t EXTEDET : 1; /*!< [15..15] External Tearing Effect Detect Interrupt Flag */ + __IM uint32_t MLFERR : 1; /*!< [16..16] Malform Error Interrupt Flag */ + __IM uint32_t ECCERRM : 1; /*!< [17..17] Multi Bit ECC Error Interrupt Flag */ + __IM uint32_t UNEXERR : 1; /*!< [18..18] Unexpected Packet Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t WCERR : 1; /*!< [20..20] Word Count Error Interrupt Flag */ + __IM uint32_t CRCERR : 1; /*!< [21..21] CRC Error Interrupt Flag */ + __IM uint32_t IBERR : 1; /*!< [22..22] Internal Bus Error Interrupt Flag */ + __IM uint32_t RXOVFERR : 1; /*!< [23..23] Receive Buffer Overflow Error Interrupt Flag */ + __IM uint32_t PRTOERR : 1; /*!< [24..24] Peripheral Response Timeout Error Interrupt Flag */ + __IM uint32_t NORESERR : 1; /*!< [25..25] No Response Error Interrupt Flag */ + __IM uint32_t RSIZEERR : 1; /*!< [26..26] Return Packet Size Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t ECCERRS : 1; /*!< [28..28] Single Bit ECC Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXAKE : 1; /*!< [30..30] Acknowledge and Error Report Receive Interrupt Flag */ + uint32_t : 1; + } RXSR_b; + }; + + union + { + __IOM uint32_t RXSCR; /*!< (@ 0x00000204) Receive Status Clear Register */ + + struct + { + __IOM uint32_t BTAREND : 1; /*!< [0..0] BTA Request End Interrupt Flag Clear */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag Clear */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag Clear */ + uint32_t : 5; + __IOM uint32_t RXRESP : 1; /*!< [8..8] Response Packet Receive Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXEOTP : 1; /*!< [10..10] EoTp Receive Interrupt Flag Clear */ + uint32_t : 2; + __IOM uint32_t RXTE : 1; /*!< [13..13] Tearing Effect Trigger Receive Interrupt Flag Clear */ + __IOM uint32_t RXACK : 1; /*!< [14..14] ACK Trigger Receive Interrupt Flag Clear */ + __IOM uint32_t EXTEDET : 1; /*!< [15..15] External Tearing Effect Detect Interrupt Flag Clear */ + __IOM uint32_t MLFERR : 1; /*!< [16..16] Malform Error Interrupt Flag Clear */ + __IOM uint32_t ECCERRM : 1; /*!< [17..17] Multi Bit ECC Error Interrupt Flag Clear */ + __IOM uint32_t UNEXERR : 1; /*!< [18..18] Unexpected Packet Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t WCERR : 1; /*!< [20..20] Word Count Error Interrupt Flag Clear */ + __IOM uint32_t CRCERR : 1; /*!< [21..21] CRC Error Interrupt Flag Clear */ + __IOM uint32_t IBERR : 1; /*!< [22..22] Internal Bus Error Interrupt Flag Clear */ + __IOM uint32_t RXOVFERR : 1; /*!< [23..23] Receive Buffer Overflow Error Interrupt Flag Clear */ + __IOM uint32_t PRTOERR : 1; /*!< [24..24] Peripheral Response Timeout Error Interrupt Flag Clear */ + __IOM uint32_t NORESERR : 1; /*!< [25..25] No Response Error Interrupt Flag Clear */ + __IOM uint32_t RSIZEERR : 1; /*!< [26..26] Return Packet Size Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t ECCERRS : 1; /*!< [28..28] Single Bit ECC Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXAKE : 1; /*!< [30..30] Acknowledge and Error Report Receive Interrupt Flag + * Clear */ + uint32_t : 1; + } RXSCR_b; + }; + + union + { + __IOM uint32_t RXIER; /*!< (@ 0x00000208) Receive Interrupt Enable Register */ + + struct + { + __IOM uint32_t BTAREND : 1; /*!< [0..0] BTA Request End Interrupt Enable */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Enable */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Enable */ + uint32_t : 5; + __IOM uint32_t RXRESP : 1; /*!< [8..8] Response Packet Receive Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXEOTP : 1; /*!< [10..10] EoTp Receive Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t RXTE : 1; /*!< [13..13] Tearing Effect Trigger Receive Interrupt Enable */ + __IOM uint32_t RXACK : 1; /*!< [14..14] ACK Trigger Receive Interrupt Enable */ + __IOM uint32_t EXTEDET : 1; /*!< [15..15] External Tearing Effect Detect Interrupt Enable */ + __IOM uint32_t MLFERR : 1; /*!< [16..16] Malform Error Interrupt Enable */ + __IOM uint32_t ECCERRM : 1; /*!< [17..17] Multi Bit ECC Error Interrupt Enable */ + __IOM uint32_t UNEXERR : 1; /*!< [18..18] Unexpected Packet Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t WCERR : 1; /*!< [20..20] Word Count Error Interrupt Enable */ + __IOM uint32_t CRCERR : 1; /*!< [21..21] CRC Error Interrupt Enable */ + __IOM uint32_t IBERR : 1; /*!< [22..22] Internal Bus Error Interrupt Enable */ + __IOM uint32_t RXOVFERR : 1; /*!< [23..23] Receive Buffer Overflow Error Interrupt Enable */ + __IOM uint32_t PRTOERR : 1; /*!< [24..24] Peripheral Response Timeout Error Interrupt Enable */ + __IOM uint32_t NORESERR : 1; /*!< [25..25] No Response Error Interrupt Enable */ + __IOM uint32_t RSIZEERR : 1; /*!< [26..26] Return Packet Size Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t ECCERRS : 1; /*!< [28..28] Single Bit ECC Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXAKE : 1; /*!< [30..30] Acknowledge and Error Report Receive Interrupt Enable */ + uint32_t : 1; + } RXIER_b; + }; + __IM uint32_t RESERVED5; + + union + { + __IOM uint32_t PRESPTOBTASETR; /*!< (@ 0x00000210) Peripheral Response Timeout BTA Set Register */ + + struct + { + __IOM uint32_t PRTBTA : 32; /*!< [31..0] Peripheral Response Timeout Count */ + } PRESPTOBTASETR_b; + }; + + union + { + __IOM uint32_t PRESPTOLPSETR; /*!< (@ 0x00000214) Peripheral Response Timeout LP Set Register */ + + struct + { + __IOM uint32_t LPWTO : 16; /*!< [15..0] LPDT WRITE Request Timeout */ + __IOM uint32_t LPRTO : 16; /*!< [31..16] LPDT READ Request Timeout */ + } PRESPTOLPSETR_b; + }; + + union + { + __IOM uint32_t PRESPTOHSSETR; /*!< (@ 0x00000218) Peripheral Response Timeout HS Set Register */ + + struct + { + __IOM uint32_t HSWTO : 16; /*!< [15..0] HS WRITE Request Timeout */ + __IOM uint32_t HSRTO : 16; /*!< [31..16] HS READ Request Timeout */ + } PRESPTOHSSETR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IM uint32_t AKEPLATIR; /*!< (@ 0x00000220) Acknowledge and Error Report Packet Parameter + * Latest Info Register */ + + struct + { + __IM uint32_t EREP : 16; /*!< [15..0] Error Report */ + __IM uint32_t VC : 4; /*!< [19..16] Virtual Channel ID */ + uint32_t : 12; + } AKEPLATIR_b; + }; + + union + { + __IM uint32_t AKEPACMSR; /*!< (@ 0x00000224) Acknowledge and Error Report Packet Parameter + * Accumulate Status Register */ + + struct + { + __IM uint32_t AEREP : 16; /*!< [15..0] Accumulated Error Report */ + __IM uint32_t AVC : 4; /*!< [19..16] Virtual Channel ID */ + uint32_t : 12; + } AKEPACMSR_b; + }; + + union + { + __IOM uint32_t AKEPSCR; /*!< (@ 0x00000228) Acknowledge and Error Report Packet Parameter + * Status Clear Register */ + + struct + { + __IOM uint32_t AEREP : 16; /*!< [15..0] Accumulated Error Report Clear */ + __IM uint32_t AVC : 4; /*!< [19..16] Virtual Channel ID */ + uint32_t : 12; + } AKEPSCR_b; + }; + __IM uint32_t RESERVED7; + + union + { + __IM uint32_t RXRSSR; /*!< (@ 0x00000230) Receive Result Saved Status Register */ + + struct + { + __IM uint32_t SLT0VLD : 1; /*!< [0..0] Slot-0 Valid Flag */ + __IM uint32_t SLT1VLD : 1; /*!< [1..1] Slot-1 Valid Flag */ + __IM uint32_t SLT2VLD : 1; /*!< [2..2] Slot-2 Valid Flag */ + __IM uint32_t SLT3VLD : 1; /*!< [3..3] Slot-3 Valid Flag */ + uint32_t : 28; + } RXRSSR_b; + }; + + union + { + __IOM uint32_t RXRSSCR; /*!< (@ 0x00000234) Receive Result Saved Status Clear Register */ + + struct + { + __IOM uint32_t SLT0VLD : 1; /*!< [0..0] Slot-0 Valid Flag Clear */ + __IOM uint32_t SLT1VLD : 1; /*!< [1..1] Slot-1 Valid Flag Clear */ + __IOM uint32_t SLT2VLD : 1; /*!< [2..2] Slot-2 Valid Flag Clear */ + __IOM uint32_t SLT3VLD : 1; /*!< [3..3] Slot-3 Valid Flag Clear */ + uint32_t : 28; + } RXRSSCR_b; + }; + + union + { + __IM uint32_t RXRINFOOWSR; /*!< (@ 0x00000238) Receive Result Info Overwrite Status Register */ + + struct + { + __IM uint32_t SL0OW : 1; /*!< [0..0] Slot-0 Information Overwrite Flag */ + __IM uint32_t SL1OW : 1; /*!< [1..1] Slot-1 Information Overwrite Flag */ + __IM uint32_t SL2OW : 1; /*!< [2..2] Slot-2 Information Overwrite Flag */ + __IM uint32_t SL3OW : 1; /*!< [3..3] Slot-3 Information Overwrite Flag */ + uint32_t : 28; + } RXRINFOOWSR_b; + }; + + union + { + __IOM uint32_t RXRINFOOWSCR; /*!< (@ 0x0000023C) Receive Result Info Overwrite Status Clear Register */ + + struct + { + __IOM uint32_t SL0OW : 1; /*!< [0..0] Slot-0 Information Overwrite Flag Clear */ + __IOM uint32_t SL1OW : 1; /*!< [1..1] Slot-1 Information Overwrite Flag Clear */ + __IOM uint32_t SL2OW : 1; /*!< [2..2] Slot-2 Information Overwrite Flag Clear */ + __IOM uint32_t SL3OW : 1; /*!< [3..3] Slot-3 Information Overwrite Flag Clear */ + uint32_t : 28; + } RXRINFOOWSCR_b; + }; + + union + { + union + { + __IM uint32_t RXRSS0R; /*!< (@ 0x00000240) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS0R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS0R_L; /*!< (@ 0x00000240) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS0R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS0R_LL; /*!< (@ 0x00000240) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS0R_LL_b; + }; + + union + { + __IM uint8_t RXRSS0R_LH; /*!< (@ 0x00000241) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS0R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS0R_H; /*!< (@ 0x00000242) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS0R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS0R_HL; /*!< (@ 0x00000242) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS0R_HL_b; + }; + + union + { + __IM uint8_t RXRSS0R_HH; /*!< (@ 0x00000243) Receive Result Save Slot-0 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS0R_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IM uint32_t RXRSS1R; /*!< (@ 0x00000244) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS1R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS1R_L; /*!< (@ 0x00000244) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS1R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS1R_LL; /*!< (@ 0x00000244) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS1R_LL_b; + }; + + union + { + __IM uint8_t RXRSS1R_LH; /*!< (@ 0x00000245) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS1R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS1R_H; /*!< (@ 0x00000246) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS1R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS1R_HL; /*!< (@ 0x00000246) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS1R_HL_b; + }; + + union + { + __IM uint8_t RXRSS1R_HH; /*!< (@ 0x00000247) Receive Result Save Slot-1 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS1R_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IM uint32_t RXRSS2R; /*!< (@ 0x00000248) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS2R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS2R_L; /*!< (@ 0x00000248) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS2R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS2R_LL; /*!< (@ 0x00000248) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS2R_LL_b; + }; + + union + { + __IM uint8_t RXRSS2R_LH; /*!< (@ 0x00000249) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS2R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS2R_H; /*!< (@ 0x0000024A) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS2R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS2R_HL; /*!< (@ 0x0000024A) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS2R_HL_b; + }; + + union + { + __IM uint8_t RXRSS2R_HH; /*!< (@ 0x0000024B) Receive Result Save Slot-2 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS2R_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IM uint32_t RXRSS3R; /*!< (@ 0x0000024C) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IM uint32_t FMT : 1; /*!< [24..24] Packet Format */ + __IM uint32_t RXSUC : 1; /*!< [25..25] Receive Success */ + __IM uint32_t RXFERR : 1; /*!< [26..26] Fatal Error */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail */ + __IM uint32_t RXCERR : 1; /*!< [29..29] Receive Correctable Error */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet */ + __IM uint32_t INFOOW : 1; /*!< [31..31] Information Overwrite */ + } RXRSS3R_b; + }; + + struct + { + union + { + union + { + __IM uint16_t RXRSS3R_L; /*!< (@ 0x0000024C) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } RXRSS3R_L_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS3R_LL; /*!< (@ 0x0000024C) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } RXRSS3R_LL_b; + }; + + union + { + __IM uint8_t RXRSS3R_LH; /*!< (@ 0x0000024D) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } RXRSS3R_LH_b; + }; + }; + }; + + union + { + union + { + __IM uint16_t RXRSS3R_H; /*!< (@ 0x0000024E) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IM uint16_t FMT : 1; /*!< [8..8] Packet Format */ + __IM uint16_t RXSUC : 1; /*!< [9..9] Receive Success */ + __IM uint16_t RXFERR : 1; /*!< [10..10] Fatal Error */ + __IM uint16_t RXFAIL : 1; /*!< [11..11] Receive Fail */ + __IM uint16_t RXPFAIL : 1; /*!< [12..12] Receive Packet Data Fail */ + __IM uint16_t RXCERR : 1; /*!< [13..13] Receive Correctable Error */ + __IM uint16_t RXAKE : 1; /*!< [14..14] Receive Acknowledge and Error Report Packet */ + __IM uint16_t INFOOW : 1; /*!< [15..15] Information Overwrite */ + } RXRSS3R_H_b; + }; + + struct + { + union + { + __IM uint8_t RXRSS3R_HL; /*!< (@ 0x0000024E) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } RXRSS3R_HL_b; + }; + + union + { + __IM uint8_t RXRSS3R_HH; /*!< (@ 0x0000024F) Receive Result Save Slot-3 Register */ + + struct + { + __IM uint8_t FMT : 1; /*!< [0..0] Packet Format */ + __IM uint8_t RXSUC : 1; /*!< [1..1] Receive Success */ + __IM uint8_t RXFERR : 1; /*!< [2..2] Fatal Error */ + __IM uint8_t RXFAIL : 1; /*!< [3..3] Receive Fail */ + __IM uint8_t RXPFAIL : 1; /*!< [4..4] Receive Packet Data Fail */ + __IM uint8_t RXCERR : 1; /*!< [5..5] Receive Correctable Error */ + __IM uint8_t RXAKE : 1; /*!< [6..6] Receive Acknowledge and Error Report Packet */ + __IM uint8_t INFOOW : 1; /*!< [7..7] Information Overwrite */ + } RXRSS3R_HH_b; + }; + }; + }; + }; + }; + __IM uint32_t RESERVED8[28]; + + union + { + __IM uint32_t RXPPD0R; /*!< (@ 0x000002C0) Receive Packet Payload Data 0 Register */ + + struct + { + __IM uint32_t DATA0 : 8; /*!< [7..0] Payload Data 0 */ + __IM uint32_t DATA1 : 8; /*!< [15..8] Payload Data 1 */ + __IM uint32_t DATA2 : 8; /*!< [23..16] Payload Data 2 */ + __IM uint32_t DATA3 : 8; /*!< [31..24] Payload Data 3 */ + } RXPPD0R_b; + }; + + union + { + __IM uint32_t RXPPD1R; /*!< (@ 0x000002C4) Receive Packet Payload Data 1 Register */ + + struct + { + __IM uint32_t DATA4 : 8; /*!< [7..0] Payload Data 0 */ + __IM uint32_t DATA5 : 8; /*!< [15..8] Payload Data 1 */ + __IM uint32_t DATA6 : 8; /*!< [23..16] Payload Data 2 */ + __IM uint32_t DATA7 : 8; /*!< [31..24] Payload Data 3 */ + } RXPPD1R_b; + }; + + union + { + __IM uint32_t RXPPD2R; /*!< (@ 0x000002C8) Receive Packet Payload Data 2 Register */ + + struct + { + __IM uint32_t DATA8 : 8; /*!< [7..0] Payload Data 8 */ + __IM uint32_t DATA9 : 8; /*!< [15..8] Payload Data 9 */ + __IM uint32_t DATA10 : 8; /*!< [23..16] Payload Data 10 */ + __IM uint32_t DATA11 : 8; /*!< [31..24] Payload Data 11 */ + } RXPPD2R_b; + }; + + union + { + __IM uint32_t RXPPD3R; /*!< (@ 0x000002CC) Receive Packet Payload Data 3 Register */ + + struct + { + __IM uint32_t DATA12 : 8; /*!< [7..0] Payload Data 12 */ + __IM uint32_t DATA13 : 8; /*!< [15..8] Payload Data 13 */ + __IM uint32_t DATA14 : 8; /*!< [23..16] Payload Data 14 */ + __IM uint32_t DATA15 : 8; /*!< [31..24] Payload Data 15 */ + } RXPPD3R_b; + }; + __IM uint32_t RESERVED9[4]; + + union + { + __IOM uint32_t HSTXTOSETR; /*!< (@ 0x000002E0) HS TX Timeout Set Register */ + + struct + { + __IOM uint32_t HTXTO : 32; /*!< [31..0] HS TX Timeout Count */ + } HSTXTOSETR_b; + }; + + union + { + __IOM uint32_t LRXHTOSETR; /*!< (@ 0x000002E4) LRX-H Timeout Set Register */ + + struct + { + __IOM uint32_t LRXHTO : 32; /*!< [31..0] LP-RX Host Processor Timeout */ + } LRXHTOSETR_b; + }; + + union + { + __IOM uint32_t TATOSETR; /*!< (@ 0x000002E8) TA Timeout Set Register */ + + struct + { + __IOM uint32_t TATO : 32; /*!< [31..0] Turnaround Acknowledge Timeout */ + } TATOSETR_b; + }; + __IM uint32_t RESERVED10[5]; + + union + { + __IM uint32_t FERRSR; /*!< (@ 0x00000300) Fatal Error Status Register */ + + struct + { + __IM uint32_t HTXTO : 1; /*!< [0..0] HS TX Timeout Interrupt Flag */ + __IM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag */ + __IM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag */ + uint32_t : 13; + __IM uint32_t ESCENT : 1; /*!< [16..16] Escape mode Entry Error Interrupt Flag */ + __IM uint32_t SYNCESC : 1; /*!< [17..17] LPDT Sync Error Interrupt Flag */ + __IM uint32_t CTRL : 1; /*!< [18..18] Control Error Interrupt Flag */ + __IM uint32_t CLP0 : 1; /*!< [19..19] LP0 Contention Error Interrupt Flag */ + __IM uint32_t CLP1 : 1; /*!< [20..20] LP1 Contention Error Interrupt Flag */ + uint32_t : 6; + __IM uint32_t CLP0S : 1; /*!< [27..27] LP0 Contention Error Status */ + __IM uint32_t CLP1S : 1; /*!< [28..28] LP1 Contention Error Status */ + uint32_t : 3; + } FERRSR_b; + }; + + union + { + __IOM uint32_t FERRSCR; /*!< (@ 0x00000304) Fatal Error Status Clear Register */ + + struct + { + __IOM uint32_t HTXTO : 1; /*!< [0..0] HS TX Timeout Interrupt Flag Clear */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Flag Clear */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Flag Clear */ + uint32_t : 13; + __IOM uint32_t ESCENT : 1; /*!< [16..16] Escape mode Entry Error Interrupt Flag Clear */ + __IOM uint32_t SYNCESC : 1; /*!< [17..17] LPDT Sync Error Interrupt Flag Clear */ + __IOM uint32_t CTRL : 1; /*!< [18..18] Control Error Interrupt Flag Clear */ + __IOM uint32_t CLP0 : 1; /*!< [19..19] LP0 Contention Error Interrupt Flag Clear */ + __IOM uint32_t CLP1 : 1; /*!< [20..20] LP1 Contention Error Interrupt Flag Clear */ + uint32_t : 11; + } FERRSCR_b; + }; + + union + { + __IOM uint32_t FERRIER; /*!< (@ 0x00000308) Fatal Error Interrupt Enable Register */ + + struct + { + __IOM uint32_t HTXTO : 1; /*!< [0..0] HS TX Timeout Interrupt Enable */ + __IOM uint32_t LRXHTO : 1; /*!< [1..1] LP-RX Host Processor Timeout Interrupt Enable */ + __IOM uint32_t TATO : 1; /*!< [2..2] Turnaround Acknowledge Timeout Interrupt Enable */ + uint32_t : 13; + __IOM uint32_t ESCENT : 1; /*!< [16..16] Escape mode Entry Error Interrupt Enable */ + __IOM uint32_t SYNCESC : 1; /*!< [17..17] LPDT Sync Error Interrupt Enable */ + __IOM uint32_t CTRL : 1; /*!< [18..18] Control Error Interrupt Enable */ + __IOM uint32_t CLP0 : 1; /*!< [19..19] LP0 Contention Error Interrupt Enable */ + __IOM uint32_t CLP1 : 1; /*!< [20..20] LP1 Contention Error Interrupt Enable */ + uint32_t : 11; + } FERRIER_b; + }; + __IM uint32_t RESERVED11[2]; + + union + { + __IOM uint32_t CLSTPTSETR; /*!< (@ 0x00000314) Clock Lane Stop Time Set Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t CLKSTPT : 10; /*!< [11..2] Clock Stop Time */ + uint32_t : 4; + __IOM uint32_t CLKBFHT : 8; /*!< [23..16] Clock Beforehand Time */ + __IOM uint32_t CLKKPT : 8; /*!< [31..24] Clock Keep Time */ + } CLSTPTSETR_b; + }; + + union + { + __IOM uint32_t LPTRNSTSETR; /*!< (@ 0x00000318) LP Transition Time Set Register */ + + struct + { + __IOM uint32_t GOLPBKT : 10; /*!< [9..0] Go LP and Back Time */ + uint32_t : 22; + } LPTRNSTSETR_b; + }; + __IM uint32_t RESERVED12; + + union + { + __IM uint32_t PLSR; /*!< (@ 0x00000320) Physical Lane Status Register */ + + struct + { + __IM uint32_t CLUAN : 1; /*!< [0..0] Clock Lane UlpsActiveNot Status */ + __IM uint32_t CLSTP : 1; /*!< [1..1] Clock Lane Stop Status */ + __IM uint32_t DL0RLE : 1; /*!< [2..2] Data Lane-0 RxLpdtEsc Status */ + __IM uint32_t DL0RUE : 1; /*!< [3..3] Data Lane-0 RxUlpsEsc Status */ + __IM uint32_t DL0UAN : 1; /*!< [4..4] Data Lane-0 UlpsActiveNot Status */ + __IM uint32_t DL1UAN : 1; /*!< [5..5] Data Lane-1 UlpsActiveNot Status */ + uint32_t : 2; + __IM uint32_t DL0STP : 1; /*!< [8..8] Data Lane-0 Stop Status */ + __IM uint32_t DL1STP : 1; /*!< [9..9] Data Lane-1 Stop Status */ + uint32_t : 2; + __IM uint32_t DL0RX2TX : 1; /*!< [12..12] Data Lane-0 RX to TX Transition Interrupt Flag */ + __IM uint32_t DL0TX2RX : 1; /*!< [13..13] Data Lane-0 TX to RX Transition Interrupt Flag */ + uint32_t : 1; + __IM uint32_t DL0DIR : 1; /*!< [15..15] Data Lane-0 Direction */ + uint32_t : 8; + __IM uint32_t CLULPENT : 1; /*!< [24..24] Clock Lane ULPS Enter Interrupt Flag */ + __IM uint32_t CLULPEXT : 1; /*!< [25..25] Clock Lane ULPS Exit Interrupt Flag */ + __IM uint32_t CLLP2HS : 1; /*!< [26..26] Clock Lane LP to HS Transition Interrupt Flag */ + __IM uint32_t CLHS2LP : 1; /*!< [27..27] Clock Lane HS to LP Transition Interrupt Flag */ + __IM uint32_t DLULPENT : 1; /*!< [28..28] Data Lane ULPS Enter Interrupt Flag */ + __IM uint32_t DLULPEXT : 1; /*!< [29..29] Data Lane ULPS Exit Interrupt Flag */ + uint32_t : 2; + } PLSR_b; + }; + + union + { + __IOM uint32_t PLSCR; /*!< (@ 0x00000324) Physical Lane Status Clear Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t DL0RX2TX : 1; /*!< [12..12] Data Lane-0 RX to TX Transition Interrupt Flag Clear */ + __IOM uint32_t DL0TX2RX : 1; /*!< [13..13] Data Lane-0 TX to RX Transition Interrupt Flag Clear */ + uint32_t : 10; + __IOM uint32_t CLULPENT : 1; /*!< [24..24] Clock Lane ULPS Enter Interrupt Flag Clear */ + __IOM uint32_t CLULPEXT : 1; /*!< [25..25] Clock Lane ULPS Exit Interrupt Flag Clear */ + __IOM uint32_t CLLP2HS : 1; /*!< [26..26] Clock Lane LP to HS Transition Interrupt Flag Clear */ + __IOM uint32_t CLHS2LP : 1; /*!< [27..27] Clock Lane HS to LP Transition Interrupt Flag Clear */ + __IOM uint32_t DLULPENT : 1; /*!< [28..28] Data Lane ULPS Enter Interrupt Flag Clear */ + __IOM uint32_t DLULPEXT : 1; /*!< [29..29] Data Lane ULPS Exit Interrupt Flag Clear */ + uint32_t : 2; + } PLSCR_b; + }; + + union + { + __IOM uint32_t PLIER; /*!< (@ 0x00000328) Physical Lane Interrupt Enable Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t DL0RX2TX : 1; /*!< [12..12] Data Lane-0 RX to TX Transition Interrupt Enable */ + __IOM uint32_t DL0TX2RX : 1; /*!< [13..13] Data Lane-0 TX to RX Transition Interrupt Enable */ + uint32_t : 10; + __IOM uint32_t CLULPENT : 1; /*!< [24..24] Clock Lane ULPS Enter Interrupt Enable */ + __IOM uint32_t CLULPEXT : 1; /*!< [25..25] Clock Lane ULPS Exit Interrupt Enable */ + __IOM uint32_t CLLP2HS : 1; /*!< [26..26] Clock Lane LP to HS Transition Interrupt Enable */ + __IOM uint32_t CLHS2LP : 1; /*!< [27..27] Clock Lane HS to LP Transition Interrupt Enable */ + __IOM uint32_t DLULPENT : 1; /*!< [28..28] Data Lane ULPS Enter Interrupt Enable */ + __IOM uint32_t DLULPEXT : 1; /*!< [29..29] Data Lane ULPS Exit Interrupt Enable */ + uint32_t : 2; + } PLIER_b; + }; + __IM uint32_t RESERVED13[53]; + + union + { + __IOM uint32_t VMSET0R; /*!< (@ 0x00000400) Video Mode Set 0 Register */ + + struct + { + __OM uint32_t VSTART : 1; /*!< [0..0] Video Mode Operation Start */ + __OM uint32_t VSTOP : 1; /*!< [1..1] Video Mode Operation Stop */ + uint32_t : 6; + __IOM uint32_t HSANOLP : 1; /*!< [8..8] HSA period No LP */ + __IOM uint32_t HBPNOLP : 1; /*!< [9..9] HBP period No LP */ + __IOM uint32_t HFPNOLP : 1; /*!< [10..10] HFP period No LP */ + uint32_t : 21; + } VMSET0R_b; + }; + + union + { + __IOM uint32_t VMSET1R; /*!< (@ 0x00000404) Video Mode Set 1 Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t DLY : 12; /*!< [13..2] Delay Value */ + uint32_t : 18; + } VMSET1R_b; + }; + __IM uint32_t RESERVED14[2]; + + union + { + __IM uint32_t VMSR; /*!< (@ 0x00000410) Video Mode Status Register */ + + struct + { + __IM uint32_t START : 1; /*!< [0..0] Video Mode Operation Start Interrupt Flag */ + __IM uint32_t STOP : 1; /*!< [1..1] Video Mode Operation Stop Interrupt Flag */ + __IM uint32_t RUNNING : 1; /*!< [2..2] Video Mode Operation Running Status */ + __IM uint32_t VIRDY : 1; /*!< [3..3] Video Mode Operation Ready Interrupt Flag */ + uint32_t : 16; + __IM uint32_t TIMERR : 1; /*!< [20..20] Timing Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t VBUFUDF : 1; /*!< [22..22] Video Buffer Underflow Error Interrupt Flag */ + __IM uint32_t VBUFOVF : 1; /*!< [23..23] Video Buffer Overflow Error Interrupt Flag */ + uint32_t : 8; + } VMSR_b; + }; + + union + { + __IOM uint32_t VMSCR; /*!< (@ 0x00000414) Video Mode Status Clear Register */ + + struct + { + __IOM uint32_t START : 1; /*!< [0..0] Video Mode Operation Start Interrupt Flag Clear */ + __IOM uint32_t STOP : 1; /*!< [1..1] Video Mode Operation Stop Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t VIRDY : 1; /*!< [3..3] Video Mode Operation Ready Interrupt Flag Clear */ + uint32_t : 16; + __IOM uint32_t TIMERR : 1; /*!< [20..20] Timing Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t VBUFUDF : 1; /*!< [22..22] Video Buffer Underflow Error Interrupt Flag Clear */ + __IOM uint32_t VBUFOVF : 1; /*!< [23..23] Video Buffer Overflow Error Interrupt Flag Clear */ + uint32_t : 8; + } VMSCR_b; + }; + + union + { + __IOM uint32_t VMIER; /*!< (@ 0x00000418) Video Mode Interrupt Enable Register */ + + struct + { + __IOM uint32_t START : 1; /*!< [0..0] Video Mode Operation Start Interrupt Enable */ + __IOM uint32_t STOP : 1; /*!< [1..1] Video Mode Operation Stop Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t VIRDY : 1; /*!< [3..3] Video Mode Operation Ready Interrupt Enable */ + uint32_t : 16; + __IOM uint32_t TIMERR : 1; /*!< [20..20] Timing Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t VBUFUDF : 1; /*!< [22..22] Video Buffer Underflow Error Interrupt Enable */ + __IOM uint32_t VBUFOVF : 1; /*!< [23..23] Video Buffer Overflow Error Interrupt Enable */ + uint32_t : 8; + } VMIER_b; + }; + __IM uint32_t RESERVED15; + + union + { + __IOM uint32_t VMPPSETR; /*!< (@ 0x00000420) Video Mode Pixel Packet Set Register */ + + struct + { + uint32_t : 15; + __IOM uint32_t TXESYNC : 1; /*!< [15..15] Transmit End of Sync Pulse */ + __IOM uint32_t DT : 6; /*!< [21..16] Video Mode Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Video Mode Virtual Channel */ + uint32_t : 8; + } VMPPSETR_b; + }; + __IM uint32_t RESERVED16; + + union + { + __IOM uint32_t VMVSSETR; /*!< (@ 0x00000428) Video Mode Vertical Size Set Register */ + + struct + { + __IOM uint32_t VSA : 12; /*!< [11..0] VSA Lines */ + uint32_t : 3; + __IOM uint32_t VSPOL : 1; /*!< [15..15] VSYNC Polarity */ + __IOM uint32_t VACT : 15; /*!< [30..16] Vertical Active Lines */ + uint32_t : 1; + } VMVSSETR_b; + }; + + union + { + __IOM uint32_t VMVPSETR; /*!< (@ 0x0000042C) Video Mode Vertical Porch Set Register */ + + struct + { + __IOM uint32_t VBP : 13; /*!< [12..0] VBP Lines */ + uint32_t : 3; + __IOM uint32_t VFP : 13; /*!< [28..16] VFP Lines */ + uint32_t : 3; + } VMVPSETR_b; + }; + + union + { + __IOM uint32_t VMHSSETR; /*!< (@ 0x00000430) Video Mode Horizontal Size Set Register */ + + struct + { + __IOM uint32_t HSA : 12; /*!< [11..0] HSA Pixels */ + uint32_t : 3; + __IOM uint32_t HSPOL : 1; /*!< [15..15] HSYNC Polarity */ + __IOM uint32_t HACT : 15; /*!< [30..16] HACT Pixels */ + uint32_t : 1; + } VMHSSETR_b; + }; + + union + { + __IOM uint32_t VMHPSETR; /*!< (@ 0x00000434) Video Mode Horizontal Porch Set Register */ + + struct + { + __IOM uint32_t HBP : 13; /*!< [12..0] HBP Pixels */ + uint32_t : 3; + __IOM uint32_t HFP : 13; /*!< [28..16] HFP Pixels */ + uint32_t : 3; + } VMHPSETR_b; + }; + __IM uint32_t RESERVED17[98]; + + union + { + __IOM uint32_t SQCH0SET0R; /*!< (@ 0x000005C0) Sequence Channel 0 Set 0 Register */ + + struct + { + __OM uint32_t START : 1; /*!< [0..0] Sequence Operation Start */ + uint32_t : 31; + } SQCH0SET0R_b; + }; + __IM uint32_t RESERVED18[3]; + + union + { + __IM uint32_t SQCH0SR; /*!< (@ 0x000005D0) Sequence Channel 0 Status Register */ + + struct + { + uint32_t : 2; + __IM uint32_t RUNNING : 1; /*!< [2..2] Sequence Operation Running Status */ + uint32_t : 1; + __IM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag */ + uint32_t : 3; + __IM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag */ + uint32_t : 7; + __IM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag */ + uint32_t : 2; + __IM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag */ + uint32_t : 4; + __IM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag */ + __IM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag */ + uint32_t : 1; + } SQCH0SR_b; + }; + + union + { + __IOM uint32_t SQCH0SCR; /*!< (@ 0x000005D4) Sequence Channel 0 Status Clear Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag Clear */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag Clear */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag Clear */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag Clear */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag Clear */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag Clear */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag Clear */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag Clear */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag Clear */ + uint32_t : 1; + } SQCH0SCR_b; + }; + + union + { + __IOM uint32_t SQCH0IER; /*!< (@ 0x000005D8) Sequence Channel 0 Interrupt Enable Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Enable */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Enable */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Enable */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Enable */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Enable */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Enable */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Enable */ + uint32_t : 1; + } SQCH0IER_b; + }; + __IM uint32_t RESERVED19[9]; + + union + { + __IOM uint32_t SQCH1SET0R; /*!< (@ 0x00000600) Sequence Channel 1 Set 0 Register */ + + struct + { + __OM uint32_t START : 1; /*!< [0..0] Sequence Operation Start */ + uint32_t : 31; + } SQCH1SET0R_b; + }; + __IM uint32_t RESERVED20[3]; + + union + { + __IM uint32_t SQCH1SR; /*!< (@ 0x00000610) Sequence Channel 1 Status Register */ + + struct + { + uint32_t : 2; + __IM uint32_t RUNNING : 1; /*!< [2..2] Sequence Operation Running Status */ + uint32_t : 1; + __IM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag */ + uint32_t : 3; + __IM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag */ + uint32_t : 7; + __IM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag */ + uint32_t : 2; + __IM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag */ + uint32_t : 4; + __IM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag */ + uint32_t : 1; + __IM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag */ + __IM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag */ + __IM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag */ + __IM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag */ + __IM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag */ + uint32_t : 1; + } SQCH1SR_b; + }; + + union + { + __IOM uint32_t SQCH1SCR; /*!< (@ 0x00000614) Sequence Channel 1 Status Clear Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Flag Clear */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Flag Clear */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Flag Clear */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Flag Clear */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Flag Clear */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Flag Clear */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Flag Clear */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Flag Clear */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Flag Clear */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Flag Clear */ + uint32_t : 1; + } SQCH1SCR_b; + }; + + union + { + __IOM uint32_t SQCH1IER; /*!< (@ 0x00000618) Sequence Channel 1 Interrupt Enable Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t AACTFIN : 1; /*!< [4..4] All Actions Finish Interrupt Enable */ + uint32_t : 3; + __IOM uint32_t ADESFIN : 1; /*!< [8..8] All-Descriptors Finish Interrupt Enable */ + uint32_t : 7; + __IOM uint32_t DABORT : 1; /*!< [16..16] Descriptor Abort Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SIZEERR : 1; /*!< [19..19] Packet Size Error Interrupt Enable */ + uint32_t : 4; + __IOM uint32_t TXIBERR : 1; /*!< [24..24] Tx Internal Bus Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t RXFERR : 1; /*!< [26..26] Receive Fatal Error Interrupt Enable */ + __IOM uint32_t RXFAIL : 1; /*!< [27..27] Receive Fail Interrupt Enable */ + __IOM uint32_t RXPFAIL : 1; /*!< [28..28] Receive Packet Data Fail Interrupt Enable */ + __IOM uint32_t RXCORERR : 1; /*!< [29..29] Receive Correctable Error Interrupt Enable */ + __IOM uint32_t RXAKE : 1; /*!< [30..30] Receive Acknowledge and Error Report Packet Interrupt + * Enable */ + uint32_t : 1; + } SQCH1IER_b; + }; + __IM uint32_t RESERVED21[89]; + + union + { + union + { + __IOM uint32_t SQCH0DSC0AR; /*!< (@ 0x00000780) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC0AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC0AR_L; /*!< (@ 0x00000780) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC0AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0AR_LL; /*!< (@ 0x00000780) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC0AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0AR_LH; /*!< (@ 0x00000781) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC0AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC0AR_H; /*!< (@ 0x00000782) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC0AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0AR_HL; /*!< (@ 0x00000782) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC0AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0AR_HH; /*!< (@ 0x00000783) Sequence Channel 0 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC0AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC0BR; /*!< (@ 0x00000784) Sequence Channel 0 Descriptor-0 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC0BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC0CR; /*!< (@ 0x00000788) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC0CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC0CR_L; /*!< (@ 0x00000788) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC0CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0CR_LL; /*!< (@ 0x00000788) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC0CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC0CR_H; /*!< (@ 0x0000078A) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC0CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0CR_HL; /*!< (@ 0x0000078A) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC0CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0CR_HH; /*!< (@ 0x0000078B) Sequence Channel 0 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC0CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC0DR; /*!< (@ 0x0000078C) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC0DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC0DR_L; /*!< (@ 0x0000078C) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC0DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0DR_LL; /*!< (@ 0x0000078C) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0DR_LH; /*!< (@ 0x0000078D) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC0DR_H; /*!< (@ 0x0000078E) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC0DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC0DR_HL; /*!< (@ 0x0000078E) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC0DR_HH; /*!< (@ 0x0000078F) Sequence Channel 0 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC0DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC1AR; /*!< (@ 0x00000790) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC1AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC1AR_L; /*!< (@ 0x00000790) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC1AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1AR_LL; /*!< (@ 0x00000790) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC1AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1AR_LH; /*!< (@ 0x00000791) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC1AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC1AR_H; /*!< (@ 0x00000792) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC1AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1AR_HL; /*!< (@ 0x00000792) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC1AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1AR_HH; /*!< (@ 0x00000793) Sequence Channel 0 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC1AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC1BR; /*!< (@ 0x00000794) Sequence Channel 0 Descriptor-1 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC1BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC1CR; /*!< (@ 0x00000798) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC1CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC1CR_L; /*!< (@ 0x00000798) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC1CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1CR_LL; /*!< (@ 0x00000798) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC1CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC1CR_H; /*!< (@ 0x0000079A) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC1CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1CR_HL; /*!< (@ 0x0000079A) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC1CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1CR_HH; /*!< (@ 0x0000079B) Sequence Channel 0 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC1CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC1DR; /*!< (@ 0x0000079C) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC1DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC1DR_L; /*!< (@ 0x0000079C) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC1DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1DR_LL; /*!< (@ 0x0000079C) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1DR_LH; /*!< (@ 0x0000079D) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC1DR_H; /*!< (@ 0x0000079E) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC1DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC1DR_HL; /*!< (@ 0x0000079E) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC1DR_HH; /*!< (@ 0x0000079F) Sequence Channel 0 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC1DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC2AR; /*!< (@ 0x000007A0) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC2AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC2AR_L; /*!< (@ 0x000007A0) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC2AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2AR_LL; /*!< (@ 0x000007A0) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC2AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2AR_LH; /*!< (@ 0x000007A1) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC2AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC2AR_H; /*!< (@ 0x000007A2) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC2AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2AR_HL; /*!< (@ 0x000007A2) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC2AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2AR_HH; /*!< (@ 0x000007A3) Sequence Channel 0 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC2AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC2BR; /*!< (@ 0x000007A4) Sequence Channel 0 Descriptor-2 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC2BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC2CR; /*!< (@ 0x000007A8) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC2CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC2CR_L; /*!< (@ 0x000007A8) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC2CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2CR_LL; /*!< (@ 0x000007A8) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC2CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC2CR_H; /*!< (@ 0x000007AA) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC2CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2CR_HL; /*!< (@ 0x000007AA) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC2CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2CR_HH; /*!< (@ 0x000007AB) Sequence Channel 0 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC2CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC2DR; /*!< (@ 0x000007AC) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC2DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC2DR_L; /*!< (@ 0x000007AC) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC2DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2DR_LL; /*!< (@ 0x000007AC) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2DR_LH; /*!< (@ 0x000007AD) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC2DR_H; /*!< (@ 0x000007AE) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC2DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC2DR_HL; /*!< (@ 0x000007AE) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC2DR_HH; /*!< (@ 0x000007AF) Sequence Channel 0 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC2DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC3AR; /*!< (@ 0x000007B0) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC3AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC3AR_L; /*!< (@ 0x000007B0) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC3AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3AR_LL; /*!< (@ 0x000007B0) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC3AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3AR_LH; /*!< (@ 0x000007B1) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC3AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC3AR_H; /*!< (@ 0x000007B2) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC3AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3AR_HL; /*!< (@ 0x000007B2) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC3AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3AR_HH; /*!< (@ 0x000007B3) Sequence Channel 0 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC3AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC3BR; /*!< (@ 0x000007B4) Sequence Channel 0 Descriptor-3 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC3BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC3CR; /*!< (@ 0x000007B8) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC3CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC3CR_L; /*!< (@ 0x000007B8) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC3CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3CR_LL; /*!< (@ 0x000007B8) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC3CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC3CR_H; /*!< (@ 0x000007BA) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC3CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3CR_HL; /*!< (@ 0x000007BA) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC3CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3CR_HH; /*!< (@ 0x000007BB) Sequence Channel 0 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC3CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC3DR; /*!< (@ 0x000007BC) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC3DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC3DR_L; /*!< (@ 0x000007BC) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC3DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3DR_LL; /*!< (@ 0x000007BC) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3DR_LH; /*!< (@ 0x000007BD) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC3DR_H; /*!< (@ 0x000007BE) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC3DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC3DR_HL; /*!< (@ 0x000007BE) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC3DR_HH; /*!< (@ 0x000007BF) Sequence Channel 0 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC3DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC4AR; /*!< (@ 0x000007C0) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC4AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC4AR_L; /*!< (@ 0x000007C0) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC4AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4AR_LL; /*!< (@ 0x000007C0) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC4AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4AR_LH; /*!< (@ 0x000007C1) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC4AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC4AR_H; /*!< (@ 0x000007C2) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC4AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4AR_HL; /*!< (@ 0x000007C2) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC4AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4AR_HH; /*!< (@ 0x000007C3) Sequence Channel 0 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC4AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC4BR; /*!< (@ 0x000007C4) Sequence Channel 0 Descriptor-4 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC4BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC4CR; /*!< (@ 0x000007C8) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC4CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC4CR_L; /*!< (@ 0x000007C8) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC4CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4CR_LL; /*!< (@ 0x000007C8) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC4CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC4CR_H; /*!< (@ 0x000007CA) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC4CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4CR_HL; /*!< (@ 0x000007CA) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC4CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4CR_HH; /*!< (@ 0x000007CB) Sequence Channel 0 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC4CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC4DR; /*!< (@ 0x000007CC) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC4DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC4DR_L; /*!< (@ 0x000007CC) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC4DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4DR_LL; /*!< (@ 0x000007CC) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4DR_LH; /*!< (@ 0x000007CD) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC4DR_H; /*!< (@ 0x000007CE) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC4DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC4DR_HL; /*!< (@ 0x000007CE) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC4DR_HH; /*!< (@ 0x000007CF) Sequence Channel 0 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC4DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC5AR; /*!< (@ 0x000007D0) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC5AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC5AR_L; /*!< (@ 0x000007D0) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC5AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5AR_LL; /*!< (@ 0x000007D0) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC5AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5AR_LH; /*!< (@ 0x000007D1) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC5AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC5AR_H; /*!< (@ 0x000007D2) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC5AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5AR_HL; /*!< (@ 0x000007D2) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC5AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5AR_HH; /*!< (@ 0x000007D3) Sequence Channel 0 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC5AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC5BR; /*!< (@ 0x000007D4) Sequence Channel 0 Descriptor-5 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC5BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC5CR; /*!< (@ 0x000007D8) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC5CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC5CR_L; /*!< (@ 0x000007D8) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC5CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5CR_LL; /*!< (@ 0x000007D8) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC5CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC5CR_H; /*!< (@ 0x000007DA) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC5CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5CR_HL; /*!< (@ 0x000007DA) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC5CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5CR_HH; /*!< (@ 0x000007DB) Sequence Channel 0 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC5CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC5DR; /*!< (@ 0x000007DC) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC5DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC5DR_L; /*!< (@ 0x000007DC) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC5DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5DR_LL; /*!< (@ 0x000007DC) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5DR_LH; /*!< (@ 0x000007DD) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC5DR_H; /*!< (@ 0x000007DE) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC5DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC5DR_HL; /*!< (@ 0x000007DE) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC5DR_HH; /*!< (@ 0x000007DF) Sequence Channel 0 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC5DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC6AR; /*!< (@ 0x000007E0) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC6AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC6AR_L; /*!< (@ 0x000007E0) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC6AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6AR_LL; /*!< (@ 0x000007E0) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC6AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6AR_LH; /*!< (@ 0x000007E1) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC6AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC6AR_H; /*!< (@ 0x000007E2) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC6AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6AR_HL; /*!< (@ 0x000007E2) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC6AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6AR_HH; /*!< (@ 0x000007E3) Sequence Channel 0 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC6AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC6BR; /*!< (@ 0x000007E4) Sequence Channel 0 Descriptor-6 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC6BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC6CR; /*!< (@ 0x000007E8) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC6CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC6CR_L; /*!< (@ 0x000007E8) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC6CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6CR_LL; /*!< (@ 0x000007E8) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC6CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC6CR_H; /*!< (@ 0x000007EA) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC6CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6CR_HL; /*!< (@ 0x000007EA) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC6CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6CR_HH; /*!< (@ 0x000007EB) Sequence Channel 0 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC6CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC6DR; /*!< (@ 0x000007EC) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC6DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC6DR_L; /*!< (@ 0x000007EC) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC6DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6DR_LL; /*!< (@ 0x000007EC) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6DR_LH; /*!< (@ 0x000007ED) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC6DR_H; /*!< (@ 0x000007EE) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC6DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC6DR_HL; /*!< (@ 0x000007EE) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC6DR_HH; /*!< (@ 0x000007EF) Sequence Channel 0 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC6DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC7AR; /*!< (@ 0x000007F0) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH0DSC7AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC7AR_L; /*!< (@ 0x000007F0) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH0DSC7AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7AR_LL; /*!< (@ 0x000007F0) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH0DSC7AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7AR_LH; /*!< (@ 0x000007F1) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH0DSC7AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC7AR_H; /*!< (@ 0x000007F2) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH0DSC7AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7AR_HL; /*!< (@ 0x000007F2) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH0DSC7AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7AR_HH; /*!< (@ 0x000007F3) Sequence Channel 0 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH0DSC7AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH0DSC7BR; /*!< (@ 0x000007F4) Sequence Channel 0 Descriptor-7 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH0DSC7BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC7CR; /*!< (@ 0x000007F8) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH0DSC7CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC7CR_L; /*!< (@ 0x000007F8) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH0DSC7CR_L_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7CR_LL; /*!< (@ 0x000007F8) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH0DSC7CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC7CR_H; /*!< (@ 0x000007FA) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH0DSC7CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7CR_HL; /*!< (@ 0x000007FA) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH0DSC7CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7CR_HH; /*!< (@ 0x000007FB) Sequence Channel 0 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH0DSC7CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH0DSC7DR; /*!< (@ 0x000007FC) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH0DSC7DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH0DSC7DR_L; /*!< (@ 0x000007FC) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC7DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7DR_LL; /*!< (@ 0x000007FC) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7DR_LH; /*!< (@ 0x000007FD) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH0DSC7DR_H; /*!< (@ 0x000007FE) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH0DSC7DR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH0DSC7DR_HL; /*!< (@ 0x000007FE) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH0DSC7DR_HH; /*!< (@ 0x000007FF) Sequence Channel 0 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH0DSC7DR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC0AR; /*!< (@ 0x00000800) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC0AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC0AR_L; /*!< (@ 0x00000800) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC0AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0AR_LL; /*!< (@ 0x00000800) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC0AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0AR_LH; /*!< (@ 0x00000801) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC0AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC0AR_H; /*!< (@ 0x00000802) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC0AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0AR_HL; /*!< (@ 0x00000802) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC0AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0AR_HH; /*!< (@ 0x00000803) Sequence Channel 1 Descriptor-0 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC0AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC0BR; /*!< (@ 0x00000804) Sequence Channel 1 Descriptor-0 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC0BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC0CR; /*!< (@ 0x00000808) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC0CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC0CR_L; /*!< (@ 0x00000808) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC0CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0CR_LL; /*!< (@ 0x00000808) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC0CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC0CR_H; /*!< (@ 0x0000080A) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC0CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0CR_HL; /*!< (@ 0x0000080A) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC0CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0CR_HH; /*!< (@ 0x0000080B) Sequence Channel 1 Descriptor-0 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC0CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC0DR; /*!< (@ 0x0000080C) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC0DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC0DR_L; /*!< (@ 0x0000080C) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC0DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC0DR_LL; /*!< (@ 0x0000080C) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0DR_LH; /*!< (@ 0x0000080D) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC0DR_HL; /*!< (@ 0x0000080E) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC0DR_HH; /*!< (@ 0x0000080F) Sequence Channel 1 Descriptor-0 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC0DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC1AR; /*!< (@ 0x00000810) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC1AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC1AR_L; /*!< (@ 0x00000810) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC1AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1AR_LL; /*!< (@ 0x00000810) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC1AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1AR_LH; /*!< (@ 0x00000811) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC1AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC1AR_H; /*!< (@ 0x00000812) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC1AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1AR_HL; /*!< (@ 0x00000812) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC1AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1AR_HH; /*!< (@ 0x00000813) Sequence Channel 1 Descriptor-1 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC1AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC1BR; /*!< (@ 0x00000814) Sequence Channel 1 Descriptor-1 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC1BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC1CR; /*!< (@ 0x00000818) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC1CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC1CR_L; /*!< (@ 0x00000818) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC1CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1CR_LL; /*!< (@ 0x00000818) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC1CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC1CR_H; /*!< (@ 0x0000081A) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC1CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1CR_HL; /*!< (@ 0x0000081A) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC1CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1CR_HH; /*!< (@ 0x0000081B) Sequence Channel 1 Descriptor-1 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC1CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC1DR; /*!< (@ 0x0000081C) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC1DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC1DR_L; /*!< (@ 0x0000081C) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC1DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC1DR_LL; /*!< (@ 0x0000081C) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1DR_LH; /*!< (@ 0x0000081D) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC1DR_HL; /*!< (@ 0x0000081E) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC1DR_HH; /*!< (@ 0x0000081F) Sequence Channel 1 Descriptor-1 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC1DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC2AR; /*!< (@ 0x00000820) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC2AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC2AR_L; /*!< (@ 0x00000820) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC2AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2AR_LL; /*!< (@ 0x00000820) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC2AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2AR_LH; /*!< (@ 0x00000821) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC2AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC2AR_H; /*!< (@ 0x00000822) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC2AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2AR_HL; /*!< (@ 0x00000822) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC2AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2AR_HH; /*!< (@ 0x00000823) Sequence Channel 1 Descriptor-2 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC2AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC2BR; /*!< (@ 0x00000824) Sequence Channel 1 Descriptor-2 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC2BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC2CR; /*!< (@ 0x00000828) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC2CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC2CR_L; /*!< (@ 0x00000828) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC2CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2CR_LL; /*!< (@ 0x00000828) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC2CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC2CR_H; /*!< (@ 0x0000082A) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC2CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2CR_HL; /*!< (@ 0x0000082A) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC2CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2CR_HH; /*!< (@ 0x0000082B) Sequence Channel 1 Descriptor-2 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC2CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC2DR; /*!< (@ 0x0000082C) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC2DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC2DR_L; /*!< (@ 0x0000082C) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC2DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC2DR_LL; /*!< (@ 0x0000082C) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2DR_LH; /*!< (@ 0x0000082D) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC2DR_HL; /*!< (@ 0x0000082E) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC2DR_HH; /*!< (@ 0x0000082F) Sequence Channel 1 Descriptor-2 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC2DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC3AR; /*!< (@ 0x00000830) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC3AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC3AR_L; /*!< (@ 0x00000830) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC3AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3AR_LL; /*!< (@ 0x00000830) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC3AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3AR_LH; /*!< (@ 0x00000831) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC3AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC3AR_H; /*!< (@ 0x00000832) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC3AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3AR_HL; /*!< (@ 0x00000832) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC3AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3AR_HH; /*!< (@ 0x00000833) Sequence Channel 1 Descriptor-3 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC3AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC3BR; /*!< (@ 0x00000834) Sequence Channel 1 Descriptor-3 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC3BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC3CR; /*!< (@ 0x00000838) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC3CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC3CR_L; /*!< (@ 0x00000838) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC3CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3CR_LL; /*!< (@ 0x00000838) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC3CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC3CR_H; /*!< (@ 0x0000083A) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC3CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3CR_HL; /*!< (@ 0x0000083A) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC3CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3CR_HH; /*!< (@ 0x0000083B) Sequence Channel 1 Descriptor-3 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC3CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC3DR; /*!< (@ 0x0000083C) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC3DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC3DR_L; /*!< (@ 0x0000083C) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC3DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC3DR_LL; /*!< (@ 0x0000083C) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3DR_LH; /*!< (@ 0x0000083D) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC3DR_HL; /*!< (@ 0x0000083E) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC3DR_HH; /*!< (@ 0x0000083F) Sequence Channel 1 Descriptor-3 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC3DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC4AR; /*!< (@ 0x00000840) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC4AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC4AR_L; /*!< (@ 0x00000840) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC4AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4AR_LL; /*!< (@ 0x00000840) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC4AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4AR_LH; /*!< (@ 0x00000841) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC4AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC4AR_H; /*!< (@ 0x00000842) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC4AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4AR_HL; /*!< (@ 0x00000842) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC4AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4AR_HH; /*!< (@ 0x00000843) Sequence Channel 1 Descriptor-4 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC4AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC4BR; /*!< (@ 0x00000844) Sequence Channel 1 Descriptor-4 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC4BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC4CR; /*!< (@ 0x00000848) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC4CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC4CR_L; /*!< (@ 0x00000848) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC4CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4CR_LL; /*!< (@ 0x00000848) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC4CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC4CR_H; /*!< (@ 0x0000084A) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC4CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4CR_HL; /*!< (@ 0x0000084A) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC4CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4CR_HH; /*!< (@ 0x0000084B) Sequence Channel 1 Descriptor-4 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC4CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC4DR; /*!< (@ 0x0000084C) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC4DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC4DR_L; /*!< (@ 0x0000084C) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC4DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC4DR_LL; /*!< (@ 0x0000084C) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4DR_LH; /*!< (@ 0x0000084D) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC4DR_HL; /*!< (@ 0x0000084E) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC4DR_HH; /*!< (@ 0x0000084F) Sequence Channel 1 Descriptor-4 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC4DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC5AR; /*!< (@ 0x00000850) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC5AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC5AR_L; /*!< (@ 0x00000850) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC5AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5AR_LL; /*!< (@ 0x00000850) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC5AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5AR_LH; /*!< (@ 0x00000851) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC5AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC5AR_H; /*!< (@ 0x00000852) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC5AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5AR_HL; /*!< (@ 0x00000852) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC5AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5AR_HH; /*!< (@ 0x00000853) Sequence Channel 1 Descriptor-5 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC5AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC5BR; /*!< (@ 0x00000854) Sequence Channel 1 Descriptor-5 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC5BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC5CR; /*!< (@ 0x00000858) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC5CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC5CR_L; /*!< (@ 0x00000858) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC5CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5CR_LL; /*!< (@ 0x00000858) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC5CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC5CR_H; /*!< (@ 0x0000085A) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC5CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5CR_HL; /*!< (@ 0x0000085A) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC5CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5CR_HH; /*!< (@ 0x0000085B) Sequence Channel 1 Descriptor-5 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC5CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC5DR; /*!< (@ 0x0000085C) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC5DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC5DR_L; /*!< (@ 0x0000085C) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC5DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC5DR_LL; /*!< (@ 0x0000085C) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5DR_LH; /*!< (@ 0x0000085D) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC5DR_HL; /*!< (@ 0x0000085E) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC5DR_HH; /*!< (@ 0x0000085F) Sequence Channel 1 Descriptor-5 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC5DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC6AR; /*!< (@ 0x00000860) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC6AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC6AR_L; /*!< (@ 0x00000860) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC6AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6AR_LL; /*!< (@ 0x00000860) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC6AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6AR_LH; /*!< (@ 0x00000861) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC6AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC6AR_H; /*!< (@ 0x00000862) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC6AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6AR_HL; /*!< (@ 0x00000862) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC6AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6AR_HH; /*!< (@ 0x00000863) Sequence Channel 1 Descriptor-6 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC6AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC6BR; /*!< (@ 0x00000864) Sequence Channel 1 Descriptor-6 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC6BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC6CR; /*!< (@ 0x00000868) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC6CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC6CR_L; /*!< (@ 0x00000868) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC6CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6CR_LL; /*!< (@ 0x00000868) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC6CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC6CR_H; /*!< (@ 0x0000086A) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC6CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6CR_HL; /*!< (@ 0x0000086A) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC6CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6CR_HH; /*!< (@ 0x0000086B) Sequence Channel 1 Descriptor-6 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC6CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC6DR; /*!< (@ 0x0000086C) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC6DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC6DR_L; /*!< (@ 0x0000086C) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC6DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC6DR_LL; /*!< (@ 0x0000086C) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6DR_LH; /*!< (@ 0x0000086D) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC6DR_HL; /*!< (@ 0x0000086E) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC6DR_HH; /*!< (@ 0x0000086F) Sequence Channel 1 Descriptor-6 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC6DR_HH_b; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC7AR; /*!< (@ 0x00000870) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint32_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint32_t DATA1 : 8; /*!< [15..8] Data 1 */ + __IOM uint32_t DT : 6; /*!< [21..16] Data Type */ + __IOM uint32_t VC : 2; /*!< [23..22] Virtual Channel */ + __IOM uint32_t FMT : 1; /*!< [24..24] Format */ + __IOM uint32_t SPD : 1; /*!< [25..25] Speed */ + __IOM uint32_t BTA : 2; /*!< [27..26] Bus Turn Around */ + __IOM uint32_t NXACT : 2; /*!< [29..28] Next Action */ + uint32_t : 2; + } SQCH1DSC7AR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC7AR_L; /*!< (@ 0x00000870) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DATA0 : 8; /*!< [7..0] Data 0 */ + __IOM uint16_t DATA1 : 8; /*!< [15..8] Data 1 */ + } SQCH1DSC7AR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7AR_LL; /*!< (@ 0x00000870) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA0 : 8; /*!< [7..0] Data 0 */ + } SQCH1DSC7AR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7AR_LH; /*!< (@ 0x00000871) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DATA1 : 8; /*!< [7..0] Data 1 */ + } SQCH1DSC7AR_LH_b; + }; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC7AR_H; /*!< (@ 0x00000872) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint16_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint16_t VC : 2; /*!< [7..6] Virtual Channel */ + __IOM uint16_t FMT : 1; /*!< [8..8] Format */ + __IOM uint16_t SPD : 1; /*!< [9..9] Speed */ + __IOM uint16_t BTA : 2; /*!< [11..10] Bus Turn Around */ + __IOM uint16_t NXACT : 2; /*!< [13..12] Next Action */ + uint16_t : 2; + } SQCH1DSC7AR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7AR_HL; /*!< (@ 0x00000872) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t DT : 6; /*!< [5..0] Data Type */ + __IOM uint8_t VC : 2; /*!< [7..6] Virtual Channel */ + } SQCH1DSC7AR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7AR_HH; /*!< (@ 0x00000873) Sequence Channel 1 Descriptor-7 A Register */ + + struct + { + __IOM uint8_t FMT : 1; /*!< [0..0] Format */ + __IOM uint8_t SPD : 1; /*!< [1..1] Speed */ + __IOM uint8_t BTA : 2; /*!< [3..2] Bus Turn Around */ + __IOM uint8_t NXACT : 2; /*!< [5..4] Next Action */ + uint8_t : 2; + } SQCH1DSC7AR_HH_b; + }; + }; + }; + }; + }; + + union + { + __IOM uint32_t SQCH1DSC7BR; /*!< (@ 0x00000874) Sequence Channel 1 Descriptor-7 B Register */ + + struct + { + uint32_t : 24; + __IOM uint32_t DTSEL : 2; /*!< [25..24] Data Select */ + uint32_t : 6; + } SQCH1DSC7BR_b; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC7CR; /*!< (@ 0x00000878) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint32_t FINACT : 1; /*!< [0..0] Finish Action */ + uint32_t : 21; + __IOM uint32_t AUXOP : 1; /*!< [22..22] Auxiliary Operation */ + uint32_t : 1; + __IOM uint32_t ACTCODE : 8; /*!< [31..24] Action Code */ + } SQCH1DSC7CR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC7CR_L; /*!< (@ 0x00000878) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint16_t FINACT : 1; /*!< [0..0] Finish Action */ + uint16_t : 15; + } SQCH1DSC7CR_L_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7CR_LL; /*!< (@ 0x00000878) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t FINACT : 1; /*!< [0..0] Finish Action */ + uint8_t : 7; + } SQCH1DSC7CR_LL_b; + }; + }; + + union + { + union + { + __IOM uint16_t SQCH1DSC7CR_H; /*!< (@ 0x0000087A) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + uint16_t : 6; + __IOM uint16_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint16_t : 1; + __IOM uint16_t ACTCODE : 8; /*!< [15..8] Action Code */ + } SQCH1DSC7CR_H_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7CR_HL; /*!< (@ 0x0000087A) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + uint8_t : 6; + __IOM uint8_t AUXOP : 1; /*!< [6..6] Auxiliary Operation */ + uint8_t : 1; + } SQCH1DSC7CR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7CR_HH; /*!< (@ 0x0000087B) Sequence Channel 1 Descriptor-7 C Register */ + + struct + { + __IOM uint8_t ACTCODE : 8; /*!< [7..0] Action Code */ + } SQCH1DSC7CR_HH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t SQCH1DSC7DR; /*!< (@ 0x0000087C) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint32_t LADDR : 32; /*!< [31..0] Lower Address */ + } SQCH1DSC7DR_b; + }; + + struct + { + union + { + union + { + __IOM uint16_t SQCH1DSC7DR_L; /*!< (@ 0x0000087C) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint16_t LADDR : 16; /*!< [15..0] Lower Address */ + } SQCH1DSC7DR_L_b; + }; + + struct + { + union + { + __IOM uint8_t SQCH1DSC7DR_LL; /*!< (@ 0x0000087C) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_LL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7DR_LH; /*!< (@ 0x0000087D) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_LH_b; + }; + }; + }; + + union + { + __IOM uint8_t SQCH1DSC7DR_HL; /*!< (@ 0x0000087E) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_HL_b; + }; + + union + { + __IOM uint8_t SQCH1DSC7DR_HH; /*!< (@ 0x0000087F) Sequence Channel 1 Descriptor-7 D Register */ + + struct + { + __IOM uint8_t LADDR : 8; /*!< [7..0] Lower Address */ + } SQCH1DSC7DR_HH_b; + }; + }; + }; +} R_DSILINK_Type; /*!< Size = 2176 (0x880) */ + +/* =========================================================================================================================== */ +/* ================ R_FLAD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Flash (R_FLAD) + */ + +typedef struct /*!< (@ 0x4011C000) R_FLAD Structure */ +{ + __IM uint8_t RESERVED[64]; + + union + { + __IOM uint8_t FCKMHZ; /*!< (@ 0x00000040) Data Flash Access Frequency Register */ + + struct + { + __IOM uint8_t FCKMHZ : 8; /*!< [7..0] Data Flash Access Frequency Register */ + } FCKMHZ_b; + }; +} R_FLAD_Type; /*!< Size = 65 (0x41) */ + +/* =========================================================================================================================== */ +/* ================ R_OFS_DATAFLASH ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Flash Option-Setting Memory (R_OFS_DATAFLASH) + */ + +typedef struct /*!< (@ 0x27030000) R_OFS_DATAFLASH Structure */ +{ + __IM uint32_t RESERVED[32]; + + union + { + __IM uint32_t FSBLCTRL0; /*!< (@ 0x00000080) FSBL Control Register 0 */ + + struct + { + __IM uint32_t FSBLEN : 3; /*!< [2..0] FSBL Enable */ + __IM uint32_t FSBLSKIPSW : 3; /*!< [5..3] FSBL Skip Enable for Software Reset */ + __IM uint32_t FSBLSKIPDS : 3; /*!< [8..6] FSBL Skip Enable for Deep Software Standby Reset */ + __IM uint32_t FSBLCLK : 3; /*!< [11..9] Clock Frequency Selection during FSBL Execution */ + uint32_t : 20; + } FSBLCTRL0_b; + }; + + union + { + __IM uint32_t FSBLCTRL1; /*!< (@ 0x00000084) FSBL Control Register 1 */ + + struct + { + __IM uint32_t FSBLEXMD : 2; /*!< [1..0] FSBL Execution Mode */ + uint32_t : 30; + } FSBLCTRL1_b; + }; + + union + { + __IM uint32_t FSBLCTRL2; /*!< (@ 0x00000088) FSBL Control Register 2 */ + + struct + { + __IM uint32_t PORTPN : 4; /*!< [3..0] FSBL Error Notification Port Pin Number */ + __IM uint32_t PORTGN : 5; /*!< [8..4] FSBL Error Notification Port Group Name */ + uint32_t : 23; + } FSBLCTRL2_b; + }; + __IOM uint32_t SACC0; /*!< (@ 0x0000008C) Start Address of Code Certification 0 */ + __IOM uint32_t SACC1; /*!< (@ 0x00000090) Start Address of Code Certification 1 */ + __IOM uint32_t SAMR; /*!< (@ 0x00000094) Start Address of Measurement Report */ + __IM uint32_t RESERVED1[178]; + __IM uint32_t HOEMRTPK; /*!< (@ 0x00000360) Hask of OEM_ROOT_PK */ + __IM uint32_t RESERVED2[7]; + __IOM R_OFS_DATAFLASH_CFGDLOCK_Type CFGDLOCK; /*!< (@ 0x00000380) Configuration Data Lock Bits */ + __IM uint32_t RESERVED3[11]; + + union + { + __IOM uint16_t ARCLS; /*!< (@ 0x000003C0) Anti-Rollback Counter Lock Setting */ + + struct + { + __IOM uint16_t ARCS_LK : 1; /*!< [0..0] ARC_SEC Lock */ + __IOM uint16_t ARCNS_LK : 4; /*!< [4..1] ARC_NSEC Lock */ + __IOM uint16_t ARCBL_LK : 1; /*!< [5..5] ARC_OEMBL Lock */ + uint16_t : 10; + } ARCLS_b; + }; + + union + { + __IOM uint16_t ARCCS; /*!< (@ 0x000003C2) ARCCS */ + + struct + { + __IOM uint16_t CNF_ARCNS : 2; /*!< [1..0] Configuation setting for ARC_NSEC */ + uint16_t : 14; + } ARCCS_b; + }; + __IM uint32_t RESERVED4[291]; + + union + { + __IOM uint32_t ARC_SEC[2]; /*!< (@ 0x00000850) Anti-Rollback Counter for Secure Application + * n */ + + struct + { + __IOM uint32_t ARC_SEC : 32; /*!< [31..0] ARC_SEC */ + } ARC_SEC_b[2]; + }; + + union + { + __IOM uint32_t ARC_NSEC[8]; /*!< (@ 0x00000858) Anti-Rollback Counter for Non-Secure Application */ + + struct + { + __IOM uint32_t ARC_NSEC : 32; /*!< [31..0] Anti-Rollback Counter for Non-secure Application */ + } ARC_NSEC_b[8]; + }; + + union + { + __IOM uint32_t ARC_OEMBL[2]; /*!< (@ 0x00000878) Anti-Rollback Counter for OEMBL */ + + struct + { + __IOM uint32_t ARC_OEMBL : 32; /*!< [31..0] Anti-Rollback Counter for OEM_BL Application */ + } ARC_OEMBL_b[2]; + }; +} R_OFS_DATAFLASH_Type; /*!< Size = 2176 (0x880) */ + +/** @} */ /* End of group Device_Peripheral_peripherals */ + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Address Map ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripheralAddr + * @{ + */ + + #if defined(_RA_TZ_NONSECURE) + #define BASE_NS_OFFSET (BSP_FEATURE_TZ_NS_OFFSET) + #else + #define BASE_NS_OFFSET 0U + #endif + + #define R_ACMPHS0_BASE (0x40236000UL + BASE_NS_OFFSET) + #define R_ACMPHS1_BASE (0x40236100UL + BASE_NS_OFFSET) + #define R_ACMPHS2_BASE (0x40236200UL + BASE_NS_OFFSET) + #define R_ACMPHS3_BASE (0x40236300UL + BASE_NS_OFFSET) + #define R_ACMPHS4_BASE (0x40236400UL + BASE_NS_OFFSET) + #define R_ACMPHS5_BASE (0x40236500UL + BASE_NS_OFFSET) + #define R_ADC0_BASE (0x40332000UL + BASE_NS_OFFSET) + #define R_ADC1_BASE (0x40332200UL + BASE_NS_OFFSET) + #define R_PSCU_BASE (0x40204000UL + BASE_NS_OFFSET) + #define R_BUS_BASE (0x40003000UL + BASE_NS_OFFSET) + #define R_CAC_BASE (0x40202400UL + BASE_NS_OFFSET) + #define R_CANFD_BASE (0x40380000UL + BASE_NS_OFFSET) + #define R_CANFD1_BASE (0x40382000UL + BASE_NS_OFFSET) + #define R_CRC_BASE (0x40310000UL + BASE_NS_OFFSET) + #define R_DAC_BASE (0x40333000UL + BASE_NS_OFFSET) + #define R_DAC1_BASE (0x40333100UL + BASE_NS_OFFSET) + #define R_DEBUG_BASE (0x4001B000UL + BASE_NS_OFFSET) + #define R_DMA_BASE (0x4000A800UL + BASE_NS_OFFSET) + #define R_DMAC0_BASE (0x4000A000UL + BASE_NS_OFFSET) + #define R_DMAC1_BASE (0x4000A040UL + BASE_NS_OFFSET) + #define R_DMAC2_BASE (0x4000A080UL + BASE_NS_OFFSET) + #define R_DMAC3_BASE (0x4000A0C0UL + BASE_NS_OFFSET) + #define R_DMAC4_BASE (0x4000A100UL + BASE_NS_OFFSET) + #define R_DMAC5_BASE (0x4000A140UL + BASE_NS_OFFSET) + #define R_DMAC6_BASE (0x4000A180UL + BASE_NS_OFFSET) + #define R_DMAC7_BASE (0x4000A1C0UL + BASE_NS_OFFSET) + #define R_DOC_BASE (0x40311000UL + BASE_NS_OFFSET) + #define R_DRW_BASE (0x40344000UL + BASE_NS_OFFSET) + #define R_DTC_BASE (0x4000AC00UL + BASE_NS_OFFSET) + #define R_ELC_BASE (0x40201000UL + BASE_NS_OFFSET) + #define R_ETHERC0_BASE (0x40354100UL + BASE_NS_OFFSET) + #define R_ETHERC_EDMAC_BASE (0x40354000UL + BASE_NS_OFFSET) + #define R_FACI_HP_CMD_BASE (0x40100000UL + BASE_NS_OFFSET) + #define R_FACI_HP_BASE (0x4011E000UL + BASE_NS_OFFSET) + #define R_FCACHE_BASE (0x4001C100UL + BASE_NS_OFFSET) + #define R_GLCDC_BASE (0x40342000UL + BASE_NS_OFFSET) + #define R_GPT0_BASE (0x40322000UL + BASE_NS_OFFSET) + #define R_GPT1_BASE (0x40322100UL + BASE_NS_OFFSET) + #define R_GPT2_BASE (0x40322200UL + BASE_NS_OFFSET) + #define R_GPT3_BASE (0x40322300UL + BASE_NS_OFFSET) + #define R_GPT4_BASE (0x40322400UL + BASE_NS_OFFSET) + #define R_GPT5_BASE (0x40322500UL + BASE_NS_OFFSET) + #define R_GPT6_BASE (0x40322600UL + BASE_NS_OFFSET) + #define R_GPT7_BASE (0x40322700UL + BASE_NS_OFFSET) + #define R_GPT8_BASE (0x40322800UL + BASE_NS_OFFSET) + #define R_GPT9_BASE (0x40322900UL + BASE_NS_OFFSET) + #define R_GPT10_BASE (0x40322A00UL + BASE_NS_OFFSET) + #define R_GPT11_BASE (0x40322B00UL + BASE_NS_OFFSET) + #define R_GPT12_BASE (0x40322C00UL + BASE_NS_OFFSET) + #define R_GPT13_BASE (0x40322D00UL + BASE_NS_OFFSET) + #define R_GPT_OPS_BASE (0x40323F00UL + BASE_NS_OFFSET) + #define R_GPT_POEG0_BASE (0x40212000UL + BASE_NS_OFFSET) + #define R_GPT_POEG1_BASE (0x40212100UL + BASE_NS_OFFSET) + #define R_GPT_POEG2_BASE (0x40212200UL + BASE_NS_OFFSET) + #define R_GPT_POEG3_BASE (0x40212300UL + BASE_NS_OFFSET) + #define R_ICU_BASE (0x40006000UL + BASE_NS_OFFSET) + #define R_IIC0_BASE (0x4025E000UL + BASE_NS_OFFSET) + #define R_IIC1_BASE (0x4025E100UL + BASE_NS_OFFSET) + #define R_IIC2_BASE (0x4025E200UL + BASE_NS_OFFSET) + #define R_IWDT_BASE (0x40202200UL + BASE_NS_OFFSET) + #define R_I3C0_BASE (0x4035F000UL + BASE_NS_OFFSET) + #define R_I3C1_BASE (0x4035F100UL + BASE_NS_OFFSET) + #define R_MPU_MMPU_BASE (0x40000000UL + BASE_NS_OFFSET) + #define R_MPU_SPMON_BASE (0x40000D00UL + BASE_NS_OFFSET) + #define R_MSTP_BASE (0x40203000UL + BASE_NS_OFFSET) + #define R_PORT0_BASE (0x40400000UL + BASE_NS_OFFSET) + #define R_PORT1_BASE (0x40400020UL + BASE_NS_OFFSET) + #define R_PORT2_BASE (0x40400040UL + BASE_NS_OFFSET) + #define R_PORT3_BASE (0x40400060UL + BASE_NS_OFFSET) + #define R_PORT4_BASE (0x40400080UL + BASE_NS_OFFSET) + #define R_PORT5_BASE (0x404000A0UL + BASE_NS_OFFSET) + #define R_PORT6_BASE (0x404000C0UL + BASE_NS_OFFSET) + #define R_PORT7_BASE (0x404000E0UL + BASE_NS_OFFSET) + #define R_PORT8_BASE (0x40400100UL + BASE_NS_OFFSET) + #define R_PORT9_BASE (0x40400120UL + BASE_NS_OFFSET) + #define R_PORT10_BASE (0x40400140UL + BASE_NS_OFFSET) + #define R_PORT11_BASE (0x40400160UL + BASE_NS_OFFSET) + #define R_PORT12_BASE (0x40400180UL + BASE_NS_OFFSET) + #define R_PORT13_BASE (0x404001A0UL + BASE_NS_OFFSET) + #define R_PORT14_BASE (0x404001C0UL + BASE_NS_OFFSET) + #define R_PFS_BASE (0x40400800UL + BASE_NS_OFFSET) + #define R_PMISC_BASE (0x40400D00UL + BASE_NS_OFFSET) + #define R_RTC_BASE (0x40202000UL + BASE_NS_OFFSET) + #define R_SCI0_BASE (0x40358000UL + BASE_NS_OFFSET) + #define R_SCI1_BASE (0x40358100UL + BASE_NS_OFFSET) + #define R_SCI2_BASE (0x40358200UL + BASE_NS_OFFSET) + #define R_SCI3_BASE (0x40358300UL + BASE_NS_OFFSET) + #define R_SCI4_BASE (0x40358400UL + BASE_NS_OFFSET) + #define R_SCI5_BASE (0x40358500UL + BASE_NS_OFFSET) + #define R_SCI6_BASE (0x40358600UL + BASE_NS_OFFSET) + #define R_SCI7_BASE (0x40358700UL + BASE_NS_OFFSET) + #define R_SCI8_BASE (0x40358800UL + BASE_NS_OFFSET) + #define R_SCI9_BASE (0x40358900UL + BASE_NS_OFFSET) + #define R_SDHI0_BASE (0x40252000UL + BASE_NS_OFFSET) + #define R_SDHI1_BASE (0x40252400UL + BASE_NS_OFFSET) + #define R_SPI0_BASE (0x4035C000UL + BASE_NS_OFFSET) + #define R_SPI1_BASE (0x4035C100UL + BASE_NS_OFFSET) + #define R_SRAM_BASE (0x40002000UL + BASE_NS_OFFSET) + #define R_SSI0_BASE (0x4025D000UL + BASE_NS_OFFSET) + #define R_SSI1_BASE (0x4025D100UL + BASE_NS_OFFSET) + #define R_SYSTEM_BASE (0x4001E000UL + BASE_NS_OFFSET) + #define R_TSN_CAL_BASE (0x4011B17CUL + BASE_NS_OFFSET) + #define R_TSN_CTRL_BASE (0x40235000UL + BASE_NS_OFFSET) + #define R_USB_FS0_BASE (0x40250000UL + BASE_NS_OFFSET) + #define R_WDT_BASE (0x40202600UL + BASE_NS_OFFSET) + #define R_TZF_BASE (0x40004000UL + BASE_NS_OFFSET) + #define R_CPSCU_BASE (0x40008000UL + BASE_NS_OFFSET) + #define R_DOC_B_BASE (0x40311000UL + BASE_NS_OFFSET) + #define R_SCI_B0_BASE (0x40358000UL + BASE_NS_OFFSET) + #define R_SCI_B1_BASE (0x40358100UL + BASE_NS_OFFSET) + #define R_SCI_B2_BASE (0x40358200UL + BASE_NS_OFFSET) + #define R_SCI_B3_BASE (0x40358300UL + BASE_NS_OFFSET) + #define R_SCI_B4_BASE (0x40358400UL + BASE_NS_OFFSET) + #define R_SCI_B9_BASE (0x40358900UL + BASE_NS_OFFSET) + #define R_SPI_B0_BASE (0x4035C000UL + BASE_NS_OFFSET) + #define R_SPI_B1_BASE (0x4035C100UL + BASE_NS_OFFSET) + #define R_USB_HS0_BASE (0x40351000UL + BASE_NS_OFFSET) + #define R_XSPI_BASE (0x40268000UL + BASE_NS_OFFSET) + #define R_CEU_BASE (0x40348000UL + BASE_NS_OFFSET) + #define R_ULPT0_BASE (0x40220000UL + BASE_NS_OFFSET) + #define R_ULPT1_BASE (0x40220100UL + BASE_NS_OFFSET) + #define R_DEBUG_OCD_BASE (0x40011000UL + BASE_NS_OFFSET) + #define R_DOTF_BASE (0x40268800UL + BASE_NS_OFFSET) + #define R_AGTX0_BASE (0x40221000UL + BASE_NS_OFFSET) + #define R_AGTX1_BASE (0x40221100UL + BASE_NS_OFFSET) + #define R_AGTX2_BASE (0x40221200UL + BASE_NS_OFFSET) + #define R_AGTX3_BASE (0x40221300UL + BASE_NS_OFFSET) + #define R_AGTX4_BASE (0x40221400UL + BASE_NS_OFFSET) + #define R_AGTX5_BASE (0x40221500UL + BASE_NS_OFFSET) + #define R_AGTX6_BASE (0x40221600UL + BASE_NS_OFFSET) + #define R_AGTX7_BASE (0x40221700UL + BASE_NS_OFFSET) + #define R_AGTX8_BASE (0x40221800UL + BASE_NS_OFFSET) + #define R_AGTX9_BASE (0x40221900UL + BASE_NS_OFFSET) + #define R_DPHYCNT_BASE (0x40346C00UL + BASE_NS_OFFSET) + #define R_DSILINK_BASE (0x40346000UL + BASE_NS_OFFSET) + #define R_FLAD_BASE (0x4011C000UL + BASE_NS_OFFSET) + #define R_OFS_DATAFLASH_BASE (0x27030000UL + BASE_NS_OFFSET) + +/** @} */ /* End of group Device_Peripheral_peripheralAddr */ + +/* =========================================================================================================================== */ +/* ================ Peripheral declaration ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_declaration + * @{ + */ + + #define R_ACMPHS0 ((R_ACMPHS0_Type *) R_ACMPHS0_BASE) + #define R_ACMPHS1 ((R_ACMPHS0_Type *) R_ACMPHS1_BASE) + #define R_ACMPHS2 ((R_ACMPHS0_Type *) R_ACMPHS2_BASE) + #define R_ACMPHS3 ((R_ACMPHS0_Type *) R_ACMPHS3_BASE) + #define R_ACMPHS4 ((R_ACMPHS0_Type *) R_ACMPHS4_BASE) + #define R_ACMPHS5 ((R_ACMPHS0_Type *) R_ACMPHS5_BASE) + #define R_ADC0 ((R_ADC0_Type *) R_ADC0_BASE) + #define R_ADC1 ((R_ADC0_Type *) R_ADC1_BASE) + #define R_PSCU ((R_PSCU_Type *) R_PSCU_BASE) + #define R_BUS ((R_BUS_Type *) R_BUS_BASE) + #define R_CAC ((R_CAC_Type *) R_CAC_BASE) + #define R_CANFD ((R_CANFD_Type *) R_CANFD_BASE) + #define R_CANFD0 ((R_CANFD_Type *) R_CANFD_BASE) + #define R_CANFD1 ((R_CANFD_Type *) R_CANFD1_BASE) + #define R_CRC ((R_CRC_Type *) R_CRC_BASE) + #define R_DAC ((R_DAC_Type *) R_DAC_BASE) + #define R_DAC1 ((R_DAC_Type *) R_DAC1_BASE) + #define R_DEBUG ((R_DEBUG_Type *) R_DEBUG_BASE) + #define R_DMA ((R_DMA_Type *) R_DMA_BASE) + #define R_DMAC0 ((R_DMAC0_Type *) R_DMAC0_BASE) + #define R_DMAC1 ((R_DMAC0_Type *) R_DMAC1_BASE) + #define R_DMAC2 ((R_DMAC0_Type *) R_DMAC2_BASE) + #define R_DMAC3 ((R_DMAC0_Type *) R_DMAC3_BASE) + #define R_DMAC4 ((R_DMAC0_Type *) R_DMAC4_BASE) + #define R_DMAC5 ((R_DMAC0_Type *) R_DMAC5_BASE) + #define R_DMAC6 ((R_DMAC0_Type *) R_DMAC6_BASE) + #define R_DMAC7 ((R_DMAC0_Type *) R_DMAC7_BASE) + #define R_DOC ((R_DOC_Type *) R_DOC_BASE) + #define R_DRW ((R_DRW_Type *) R_DRW_BASE) + #define R_DTC ((R_DTC_Type *) R_DTC_BASE) + #define R_ELC ((R_ELC_Type *) R_ELC_BASE) + #define R_ETHERC0 ((R_ETHERC0_Type *) R_ETHERC0_BASE) + #define R_ETHERC_EDMAC ((R_ETHERC_EDMAC_Type *) R_ETHERC_EDMAC_BASE) + #define R_FACI_HP_CMD ((R_FACI_HP_CMD_Type *) R_FACI_HP_CMD_BASE) + #define R_FACI_HP ((R_FACI_HP_Type *) R_FACI_HP_BASE) + #define R_FCACHE ((R_FCACHE_Type *) R_FCACHE_BASE) + #define R_GLCDC ((R_GLCDC_Type *) R_GLCDC_BASE) + #define R_GPT0 ((R_GPT0_Type *) R_GPT0_BASE) + #define R_GPT1 ((R_GPT0_Type *) R_GPT1_BASE) + #define R_GPT2 ((R_GPT0_Type *) R_GPT2_BASE) + #define R_GPT3 ((R_GPT0_Type *) R_GPT3_BASE) + #define R_GPT4 ((R_GPT0_Type *) R_GPT4_BASE) + #define R_GPT5 ((R_GPT0_Type *) R_GPT5_BASE) + #define R_GPT6 ((R_GPT0_Type *) R_GPT6_BASE) + #define R_GPT7 ((R_GPT0_Type *) R_GPT7_BASE) + #define R_GPT8 ((R_GPT0_Type *) R_GPT8_BASE) + #define R_GPT9 ((R_GPT0_Type *) R_GPT9_BASE) + #define R_GPT10 ((R_GPT0_Type *) R_GPT10_BASE) + #define R_GPT11 ((R_GPT0_Type *) R_GPT11_BASE) + #define R_GPT12 ((R_GPT0_Type *) R_GPT12_BASE) + #define R_GPT13 ((R_GPT0_Type *) R_GPT13_BASE) + #define R_GPT_OPS ((R_GPT_OPS_Type *) R_GPT_OPS_BASE) + #define R_GPT_POEG0 ((R_GPT_POEG0_Type *) R_GPT_POEG0_BASE) + #define R_GPT_POEG1 ((R_GPT_POEG0_Type *) R_GPT_POEG1_BASE) + #define R_GPT_POEG2 ((R_GPT_POEG0_Type *) R_GPT_POEG2_BASE) + #define R_GPT_POEG3 ((R_GPT_POEG0_Type *) R_GPT_POEG3_BASE) + #define R_ICU ((R_ICU_Type *) R_ICU_BASE) + #define R_IIC0 ((R_IIC0_Type *) R_IIC0_BASE) + #define R_IIC1 ((R_IIC0_Type *) R_IIC1_BASE) + #define R_IIC2 ((R_IIC0_Type *) R_IIC2_BASE) + #define R_IWDT ((R_IWDT_Type *) R_IWDT_BASE) + #define R_I3C0 ((R_I3C0_Type *) R_I3C0_BASE) + #define R_I3C1 ((R_I3C0_Type *) R_I3C1_BASE) + #define R_MPU_MMPU ((R_MPU_MMPU_Type *) R_MPU_MMPU_BASE) + #define R_MPU_SPMON ((R_MPU_SPMON_Type *) R_MPU_SPMON_BASE) + #define R_MSTP ((R_MSTP_Type *) R_MSTP_BASE) + #define R_PORT0 ((R_PORT0_Type *) R_PORT0_BASE) + #define R_PORT1 ((R_PORT0_Type *) R_PORT1_BASE) + #define R_PORT2 ((R_PORT0_Type *) R_PORT2_BASE) + #define R_PORT3 ((R_PORT0_Type *) R_PORT3_BASE) + #define R_PORT4 ((R_PORT0_Type *) R_PORT4_BASE) + #define R_PORT5 ((R_PORT0_Type *) R_PORT5_BASE) + #define R_PORT6 ((R_PORT0_Type *) R_PORT6_BASE) + #define R_PORT7 ((R_PORT0_Type *) R_PORT7_BASE) + #define R_PORT8 ((R_PORT0_Type *) R_PORT8_BASE) + #define R_PORT9 ((R_PORT0_Type *) R_PORT9_BASE) + #define R_PORT10 ((R_PORT0_Type *) R_PORT10_BASE) + #define R_PORT11 ((R_PORT0_Type *) R_PORT11_BASE) + #define R_PORT12 ((R_PORT0_Type *) R_PORT12_BASE) + #define R_PORT13 ((R_PORT0_Type *) R_PORT13_BASE) + #define R_PORT14 ((R_PORT0_Type *) R_PORT14_BASE) + #define R_PFS ((R_PFS_Type *) R_PFS_BASE) + #define R_PMISC ((R_PMISC_Type *) R_PMISC_BASE) + #define R_RTC ((R_RTC_Type *) R_RTC_BASE) + #define R_SCI0 ((R_SCI0_Type *) R_SCI0_BASE) + #define R_SCI1 ((R_SCI0_Type *) R_SCI1_BASE) + #define R_SCI2 ((R_SCI0_Type *) R_SCI2_BASE) + #define R_SCI3 ((R_SCI0_Type *) R_SCI3_BASE) + #define R_SCI4 ((R_SCI0_Type *) R_SCI4_BASE) + #define R_SCI5 ((R_SCI0_Type *) R_SCI5_BASE) + #define R_SCI6 ((R_SCI0_Type *) R_SCI6_BASE) + #define R_SCI7 ((R_SCI0_Type *) R_SCI7_BASE) + #define R_SCI8 ((R_SCI0_Type *) R_SCI8_BASE) + #define R_SCI9 ((R_SCI0_Type *) R_SCI9_BASE) + #define R_SDHI0 ((R_SDHI0_Type *) R_SDHI0_BASE) + #define R_SDHI1 ((R_SDHI0_Type *) R_SDHI1_BASE) + #define R_SPI0 ((R_SPI0_Type *) R_SPI0_BASE) + #define R_SPI1 ((R_SPI0_Type *) R_SPI1_BASE) + #define R_SRAM ((R_SRAM_Type *) R_SRAM_BASE) + #define R_SSI0 ((R_SSI0_Type *) R_SSI0_BASE) + #define R_SSI1 ((R_SSI0_Type *) R_SSI1_BASE) + #define R_SYSTEM ((R_SYSTEM_Type *) R_SYSTEM_BASE) + #define R_TSN_CAL ((R_TSN_CAL_Type *) R_TSN_CAL_BASE) + #define R_TSN_CTRL ((R_TSN_CTRL_Type *) R_TSN_CTRL_BASE) + #define R_USB_FS0 ((R_USB_FS0_Type *) R_USB_FS0_BASE) + #define R_WDT ((R_WDT_Type *) R_WDT_BASE) + #define R_TZF ((R_TZF_Type *) R_TZF_BASE) + #define R_CPSCU ((R_CPSCU_Type *) R_CPSCU_BASE) + #define R_DOC_B ((R_DOC_B_Type *) R_DOC_B_BASE) + #define R_SCI_B0 ((R_SCI_B0_Type *) R_SCI_B0_BASE) + #define R_SCI_B1 ((R_SCI_B0_Type *) R_SCI_B1_BASE) + #define R_SCI_B2 ((R_SCI_B0_Type *) R_SCI_B2_BASE) + #define R_SCI_B3 ((R_SCI_B0_Type *) R_SCI_B3_BASE) + #define R_SCI_B4 ((R_SCI_B0_Type *) R_SCI_B4_BASE) + #define R_SCI_B9 ((R_SCI_B0_Type *) R_SCI_B9_BASE) + #define R_SPI_B0 ((R_SPI_B0_Type *) R_SPI_B0_BASE) + #define R_SPI_B1 ((R_SPI_B0_Type *) R_SPI_B1_BASE) + #define R_USB_HS0 ((R_USB_HS0_Type *) R_USB_HS0_BASE) + #define R_XSPI ((R_XSPI_Type *) R_XSPI_BASE) + #define R_CEU ((R_CEU_Type *) R_CEU_BASE) + #define R_ULPT0 ((R_ULPT0_Type *) R_ULPT0_BASE) + #define R_ULPT1 ((R_ULPT0_Type *) R_ULPT1_BASE) + #define R_DEBUG_OCD ((R_DEBUG_OCD_Type *) R_DEBUG_OCD_BASE) + #define R_DOTF ((R_DOTF_Type *) R_DOTF_BASE) + #define R_AGT0 ((R_AGTX0_Type *) R_AGTX0_BASE) + #define R_AGT1 ((R_AGTX0_Type *) R_AGTX1_BASE) + #define R_AGT2 ((R_AGTX0_Type *) R_AGTX2_BASE) + #define R_AGT3 ((R_AGTX0_Type *) R_AGTX3_BASE) + #define R_AGT4 ((R_AGTX0_Type *) R_AGTX4_BASE) + #define R_AGT5 ((R_AGTX0_Type *) R_AGTX5_BASE) + #define R_AGT6 ((R_AGTX0_Type *) R_AGTX6_BASE) + #define R_AGT7 ((R_AGTX0_Type *) R_AGTX7_BASE) + #define R_AGT8 ((R_AGTX0_Type *) R_AGTX8_BASE) + #define R_AGT9 ((R_AGTX0_Type *) R_AGTX9_BASE) + #define R_DPHYCNT ((R_DPHYCNT_Type *) R_DPHYCNT_BASE) + #define R_DSILINK ((R_DSILINK_Type *) R_DSILINK_BASE) + #define R_FLAD ((R_FLAD_Type *) R_FLAD_BASE) + #define R_OFS_DATAFLASH ((R_OFS_DATAFLASH_Type *) R_OFS_DATAFLASH_BASE) + +/** @} */ /* End of group Device_Peripheral_declaration */ + +/* ========================================= End of section using anonymous unions ========================================= */ + #if defined(__CC_ARM) + #pragma pop + #elif defined(__ICCARM__) + +/* leave anonymous unions enabled */ + #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #pragma clang diagnostic pop + #elif defined(__GNUC__) + +/* anonymous unions are enabled by default */ + #elif defined(__TMS470__) + +/* anonymous unions are enabled by default */ + #elif defined(__TASKING__) + #pragma warning restore + #elif defined(__CSMC__) + +/* anonymous unions are enabled by default */ + #endif + +/* =========================================================================================================================== */ +/* ================ Pos/Mask Cluster Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup PosMask_clusters + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ CSa ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== MOD ========================================================== */ + #define R_BUS_CSa_MOD_PRMOD_Pos (15UL) /*!< PRMOD (Bit 15) */ + #define R_BUS_CSa_MOD_PRMOD_Msk (0x8000UL) /*!< PRMOD (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_PWENB_Pos (9UL) /*!< PWENB (Bit 9) */ + #define R_BUS_CSa_MOD_PWENB_Msk (0x200UL) /*!< PWENB (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_PRENB_Pos (8UL) /*!< PRENB (Bit 8) */ + #define R_BUS_CSa_MOD_PRENB_Msk (0x100UL) /*!< PRENB (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_EWENB_Pos (3UL) /*!< EWENB (Bit 3) */ + #define R_BUS_CSa_MOD_EWENB_Msk (0x8UL) /*!< EWENB (Bitfield-Mask: 0x01) */ + #define R_BUS_CSa_MOD_WRMOD_Pos (0UL) /*!< WRMOD (Bit 0) */ + #define R_BUS_CSa_MOD_WRMOD_Msk (0x1UL) /*!< WRMOD (Bitfield-Mask: 0x01) */ +/* ========================================================= WCR1 ========================================================== */ + #define R_BUS_CSa_WCR1_CSRWAIT_Pos (24UL) /*!< CSRWAIT (Bit 24) */ + #define R_BUS_CSa_WCR1_CSRWAIT_Msk (0x1f000000UL) /*!< CSRWAIT (Bitfield-Mask: 0x1f) */ + #define R_BUS_CSa_WCR1_CSWWAIT_Pos (16UL) /*!< CSWWAIT (Bit 16) */ + #define R_BUS_CSa_WCR1_CSWWAIT_Msk (0x1f0000UL) /*!< CSWWAIT (Bitfield-Mask: 0x1f) */ + #define R_BUS_CSa_WCR1_CSPRWAIT_Pos (8UL) /*!< CSPRWAIT (Bit 8) */ + #define R_BUS_CSa_WCR1_CSPRWAIT_Msk (0x700UL) /*!< CSPRWAIT (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR1_CSPWWAIT_Pos (0UL) /*!< CSPWWAIT (Bit 0) */ + #define R_BUS_CSa_WCR1_CSPWWAIT_Msk (0x7UL) /*!< CSPWWAIT (Bitfield-Mask: 0x07) */ +/* ========================================================= WCR2 ========================================================== */ + #define R_BUS_CSa_WCR2_CSON_Pos (28UL) /*!< CSON (Bit 28) */ + #define R_BUS_CSa_WCR2_CSON_Msk (0x70000000UL) /*!< CSON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_WDON_Pos (24UL) /*!< WDON (Bit 24) */ + #define R_BUS_CSa_WCR2_WDON_Msk (0x7000000UL) /*!< WDON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_WRON_Pos (20UL) /*!< WRON (Bit 20) */ + #define R_BUS_CSa_WCR2_WRON_Msk (0x700000UL) /*!< WRON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_RDON_Pos (16UL) /*!< RDON (Bit 16) */ + #define R_BUS_CSa_WCR2_RDON_Msk (0x70000UL) /*!< RDON (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_AWAIT_Pos (12UL) /*!< AWAIT (Bit 12) */ + #define R_BUS_CSa_WCR2_AWAIT_Msk (0x3000UL) /*!< AWAIT (Bitfield-Mask: 0x03) */ + #define R_BUS_CSa_WCR2_WDOFF_Pos (8UL) /*!< WDOFF (Bit 8) */ + #define R_BUS_CSa_WCR2_WDOFF_Msk (0x700UL) /*!< WDOFF (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_CSWOFF_Pos (4UL) /*!< CSWOFF (Bit 4) */ + #define R_BUS_CSa_WCR2_CSWOFF_Msk (0x70UL) /*!< CSWOFF (Bitfield-Mask: 0x07) */ + #define R_BUS_CSa_WCR2_CSROFF_Pos (0UL) /*!< CSROFF (Bit 0) */ + #define R_BUS_CSa_WCR2_CSROFF_Msk (0x7UL) /*!< CSROFF (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ CSb ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CR =========================================================== */ + #define R_BUS_CSb_CR_MPXEN_Pos (12UL) /*!< MPXEN (Bit 12) */ + #define R_BUS_CSb_CR_MPXEN_Msk (0x1000UL) /*!< MPXEN (Bitfield-Mask: 0x01) */ + #define R_BUS_CSb_CR_EMODE_Pos (8UL) /*!< EMODE (Bit 8) */ + #define R_BUS_CSb_CR_EMODE_Msk (0x100UL) /*!< EMODE (Bitfield-Mask: 0x01) */ + #define R_BUS_CSb_CR_BSIZE_Pos (4UL) /*!< BSIZE (Bit 4) */ + #define R_BUS_CSb_CR_BSIZE_Msk (0x30UL) /*!< BSIZE (Bitfield-Mask: 0x03) */ + #define R_BUS_CSb_CR_EXENB_Pos (0UL) /*!< EXENB (Bit 0) */ + #define R_BUS_CSb_CR_EXENB_Msk (0x1UL) /*!< EXENB (Bitfield-Mask: 0x01) */ +/* ========================================================== REC ========================================================== */ + #define R_BUS_CSb_REC_WRCV_Pos (8UL) /*!< WRCV (Bit 8) */ + #define R_BUS_CSb_REC_WRCV_Msk (0xf00UL) /*!< WRCV (Bitfield-Mask: 0x0f) */ + #define R_BUS_CSb_REC_RRCV_Pos (0UL) /*!< RRCV (Bit 0) */ + #define R_BUS_CSb_REC_RRCV_Msk (0xfUL) /*!< RRCV (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ SDRAM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SDCCR ========================================================= */ + #define R_BUS_SDRAM_SDCCR_BSIZE_Pos (4UL) /*!< BSIZE (Bit 4) */ + #define R_BUS_SDRAM_SDCCR_BSIZE_Msk (0x30UL) /*!< BSIZE (Bitfield-Mask: 0x03) */ + #define R_BUS_SDRAM_SDCCR_EXENB_Pos (0UL) /*!< EXENB (Bit 0) */ + #define R_BUS_SDRAM_SDCCR_EXENB_Msk (0x1UL) /*!< EXENB (Bitfield-Mask: 0x01) */ +/* ======================================================== SDCMOD ========================================================= */ + #define R_BUS_SDRAM_SDCMOD_EMODE_Pos (0UL) /*!< EMODE (Bit 0) */ + #define R_BUS_SDRAM_SDCMOD_EMODE_Msk (0x1UL) /*!< EMODE (Bitfield-Mask: 0x01) */ +/* ======================================================== SDAMOD ========================================================= */ + #define R_BUS_SDRAM_SDAMOD_BE_Pos (0UL) /*!< BE (Bit 0) */ + #define R_BUS_SDRAM_SDAMOD_BE_Msk (0x1UL) /*!< BE (Bitfield-Mask: 0x01) */ +/* ======================================================== SDSELF ========================================================= */ + #define R_BUS_SDRAM_SDSELF_SFEN_Pos (0UL) /*!< SFEN (Bit 0) */ + #define R_BUS_SDRAM_SDSELF_SFEN_Msk (0x1UL) /*!< SFEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SDRFCR ========================================================= */ + #define R_BUS_SDRAM_SDRFCR_REFW_Pos (12UL) /*!< REFW (Bit 12) */ + #define R_BUS_SDRAM_SDRFCR_REFW_Msk (0xf000UL) /*!< REFW (Bitfield-Mask: 0x0f) */ + #define R_BUS_SDRAM_SDRFCR_RFC_Pos (0UL) /*!< RFC (Bit 0) */ + #define R_BUS_SDRAM_SDRFCR_RFC_Msk (0xfffUL) /*!< RFC (Bitfield-Mask: 0xfff) */ +/* ======================================================== SDRFEN ========================================================= */ + #define R_BUS_SDRAM_SDRFEN_RFEN_Pos (0UL) /*!< RFEN (Bit 0) */ + #define R_BUS_SDRAM_SDRFEN_RFEN_Msk (0x1UL) /*!< RFEN (Bitfield-Mask: 0x01) */ +/* ========================================================= SDICR ========================================================= */ + #define R_BUS_SDRAM_SDICR_INIRQ_Pos (0UL) /*!< INIRQ (Bit 0) */ + #define R_BUS_SDRAM_SDICR_INIRQ_Msk (0x1UL) /*!< INIRQ (Bitfield-Mask: 0x01) */ +/* ========================================================= SDIR ========================================================== */ + #define R_BUS_SDRAM_SDIR_PRC_Pos (8UL) /*!< PRC (Bit 8) */ + #define R_BUS_SDRAM_SDIR_PRC_Msk (0x700UL) /*!< PRC (Bitfield-Mask: 0x07) */ + #define R_BUS_SDRAM_SDIR_ARFC_Pos (4UL) /*!< ARFC (Bit 4) */ + #define R_BUS_SDRAM_SDIR_ARFC_Msk (0xf0UL) /*!< ARFC (Bitfield-Mask: 0x0f) */ + #define R_BUS_SDRAM_SDIR_ARFI_Pos (0UL) /*!< ARFI (Bit 0) */ + #define R_BUS_SDRAM_SDIR_ARFI_Msk (0xfUL) /*!< ARFI (Bitfield-Mask: 0x0f) */ +/* ========================================================= SDADR ========================================================= */ + #define R_BUS_SDRAM_SDADR_MXC_Pos (0UL) /*!< MXC (Bit 0) */ + #define R_BUS_SDRAM_SDADR_MXC_Msk (0x3UL) /*!< MXC (Bitfield-Mask: 0x03) */ +/* ========================================================= SDTR ========================================================== */ + #define R_BUS_SDRAM_SDTR_RAS_Pos (16UL) /*!< RAS (Bit 16) */ + #define R_BUS_SDRAM_SDTR_RAS_Msk (0x70000UL) /*!< RAS (Bitfield-Mask: 0x07) */ + #define R_BUS_SDRAM_SDTR_RCD_Pos (12UL) /*!< RCD (Bit 12) */ + #define R_BUS_SDRAM_SDTR_RCD_Msk (0x3000UL) /*!< RCD (Bitfield-Mask: 0x03) */ + #define R_BUS_SDRAM_SDTR_RP_Pos (9UL) /*!< RP (Bit 9) */ + #define R_BUS_SDRAM_SDTR_RP_Msk (0xe00UL) /*!< RP (Bitfield-Mask: 0x07) */ + #define R_BUS_SDRAM_SDTR_WR_Pos (8UL) /*!< WR (Bit 8) */ + #define R_BUS_SDRAM_SDTR_WR_Msk (0x100UL) /*!< WR (Bitfield-Mask: 0x01) */ + #define R_BUS_SDRAM_SDTR_CL_Pos (0UL) /*!< CL (Bit 0) */ + #define R_BUS_SDRAM_SDTR_CL_Msk (0x7UL) /*!< CL (Bitfield-Mask: 0x07) */ +/* ========================================================= SDMOD ========================================================= */ + #define R_BUS_SDRAM_SDMOD_MR_Pos (0UL) /*!< MR (Bit 0) */ + #define R_BUS_SDRAM_SDMOD_MR_Msk (0x7fffUL) /*!< MR (Bitfield-Mask: 0x7fff) */ +/* ========================================================= SDSR ========================================================== */ + #define R_BUS_SDRAM_SDSR_SRFST_Pos (4UL) /*!< SRFST (Bit 4) */ + #define R_BUS_SDRAM_SDSR_SRFST_Msk (0x10UL) /*!< SRFST (Bitfield-Mask: 0x01) */ + #define R_BUS_SDRAM_SDSR_INIST_Pos (3UL) /*!< INIST (Bit 3) */ + #define R_BUS_SDRAM_SDSR_INIST_Msk (0x8UL) /*!< INIST (Bitfield-Mask: 0x01) */ + #define R_BUS_SDRAM_SDSR_MRSST_Pos (0UL) /*!< MRSST (Bit 0) */ + #define R_BUS_SDRAM_SDSR_MRSST_Msk (0x1UL) /*!< MRSST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSERRa ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BUSERRa_ADD_BERAD_Pos (0UL) /*!< BERAD (Bit 0) */ + #define R_BUS_BUSERRa_ADD_BERAD_Msk (0xffffffffUL) /*!< BERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= STAT ========================================================== */ + #define R_BUS_BUSERRa_STAT_ERRSTAT_Pos (7UL) /*!< ERRSTAT (Bit 7) */ + #define R_BUS_BUSERRa_STAT_ERRSTAT_Msk (0x80UL) /*!< ERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRa_STAT_ACCSTAT_Pos (0UL) /*!< ACCSTAT (Bit 0) */ + #define R_BUS_BUSERRa_STAT_ACCSTAT_Msk (0x1UL) /*!< ACCSTAT (Bitfield-Mask: 0x01) */ +/* ========================================================== RW =========================================================== */ + #define R_BUS_BUSERRa_RW_RWSTAT_Pos (0UL) /*!< RWSTAT (Bit 0) */ + #define R_BUS_BUSERRa_RW_RWSTAT_Msk (0x1UL) /*!< RWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BTZFERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BTZFERR_ADD_BTZFERAD_Pos (0UL) /*!< BTZFERAD (Bit 0) */ + #define R_BUS_BTZFERR_ADD_BTZFERAD_Msk (0xffffffffUL) /*!< BTZFERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== RW =========================================================== */ + #define R_BUS_BTZFERR_RW_TRWSTAT_Pos (0UL) /*!< TRWSTAT (Bit 0) */ + #define R_BUS_BTZFERR_RW_TRWSTAT_Msk (0x1UL) /*!< TRWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSERRb ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STAT ========================================================== */ + #define R_BUS_BUSERRb_STAT_MSERRSTAT_Pos (5UL) /*!< MSERRSTAT (Bit 5) */ + #define R_BUS_BUSERRb_STAT_MSERRSTAT_Msk (0x20UL) /*!< MSERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_ILERRSTAT_Pos (4UL) /*!< ILERRSTAT (Bit 4) */ + #define R_BUS_BUSERRb_STAT_ILERRSTAT_Msk (0x10UL) /*!< ILERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_MMERRSTAT_Pos (3UL) /*!< MMERRSTAT (Bit 3) */ + #define R_BUS_BUSERRb_STAT_MMERRSTAT_Msk (0x8UL) /*!< MMERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_STERRSTAT_Pos (1UL) /*!< STERRSTAT (Bit 1) */ + #define R_BUS_BUSERRb_STAT_STERRSTAT_Msk (0x2UL) /*!< STERRSTAT (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_STAT_SLERRSTAT_Pos (0UL) /*!< SLERRSTAT (Bit 0) */ + #define R_BUS_BUSERRb_STAT_SLERRSTAT_Msk (0x1UL) /*!< SLERRSTAT (Bitfield-Mask: 0x01) */ +/* ========================================================== CLR ========================================================== */ + #define R_BUS_BUSERRb_CLR_MSERRCLR_Pos (5UL) /*!< MSERRCLR (Bit 5) */ + #define R_BUS_BUSERRb_CLR_MSERRCLR_Msk (0x20UL) /*!< MSERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_ILERRCLR_Pos (4UL) /*!< ILERRCLR (Bit 4) */ + #define R_BUS_BUSERRb_CLR_ILERRCLR_Msk (0x10UL) /*!< ILERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_MMERRCLR_Pos (3UL) /*!< MMERRCLR (Bit 3) */ + #define R_BUS_BUSERRb_CLR_MMERRCLR_Msk (0x8UL) /*!< MMERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_STERRCLR_Pos (1UL) /*!< STERRCLR (Bit 1) */ + #define R_BUS_BUSERRb_CLR_STERRCLR_Msk (0x2UL) /*!< STERRCLR (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSERRb_CLR_SLERRCLR_Pos (0UL) /*!< SLERRCLR (Bit 0) */ + #define R_BUS_BUSERRb_CLR_SLERRCLR_Msk (0x1UL) /*!< SLERRCLR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ DMACDTCERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STAT ========================================================== */ + #define R_BUS_DMACDTCERR_STAT_MTERRSTAT_Pos (0UL) /*!< MTERRSTAT (Bit 0) */ + #define R_BUS_DMACDTCERR_STAT_MTERRSTAT_Msk (0x1UL) /*!< MTERRSTAT (Bitfield-Mask: 0x01) */ +/* ========================================================== CLR ========================================================== */ + #define R_BUS_DMACDTCERR_CLR_MTERRCLR_Pos (0UL) /*!< MTERRCLR (Bit 0) */ + #define R_BUS_DMACDTCERR_CLR_MTERRCLR_Msk (0x1UL) /*!< MTERRCLR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSSABT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= FLBI ========================================================== */ + #define R_BUS_BUSSABT0_FLBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_FLBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== MRE0BI ========================================================= */ + #define R_BUS_BUSSABT0_MRE0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_MRE0BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S0BI ========================================================== */ + #define R_BUS_BUSSABT0_S0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S0BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S1BI ========================================================== */ + #define R_BUS_BUSSABT0_S1BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S1BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S2BI ========================================================== */ + #define R_BUS_BUSSABT0_S2BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S2BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= S3BI ========================================================== */ + #define R_BUS_BUSSABT0_S3BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_S3BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== STBYSBI ======================================================== */ + #define R_BUS_BUSSABT0_STBYSBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_STBYSBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= ECBI ========================================================== */ + #define R_BUS_BUSSABT0_ECBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_ECBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= EOBI ========================================================== */ + #define R_BUS_BUSSABT0_EOBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_EOBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== SPI0BI ========================================================= */ + #define R_BUS_BUSSABT0_SPI0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_SPI0BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================== SPI1BI ========================================================= */ + #define R_BUS_BUSSABT0_SPI1BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_SPI1BI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PBBI ========================================================== */ + #define R_BUS_BUSSABT0_PBBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PBBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PABI ========================================================== */ + #define R_BUS_BUSSABT0_PABI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PABI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PIBI ========================================================== */ + #define R_BUS_BUSSABT0_PIBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PIBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ========================================================= PSBI ========================================================== */ + #define R_BUS_BUSSABT0_PSBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_PSBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================= CPU0SAHBI ======================================================= */ + #define R_BUS_BUSSABT0_CPU0SAHBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_CPU0SAHBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================= CPU1TCMBI ======================================================= */ + #define R_BUS_BUSSABT0_CPU1TCMBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT0_CPU1TCMBI_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSSABT1 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= FHBI ========================================================== */ + #define R_BUS_BUSSABT1_FHBI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_FHBI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ======================================================== MRC0BI ========================================================= */ + #define R_BUS_BUSSABT1_MRC0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_MRC0BI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ========================================================= S0BI ========================================================== */ + #define R_BUS_BUSSABT1_S0BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_S0BI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ +/* ========================================================= S1BI ========================================================== */ + #define R_BUS_BUSSABT1_S1BI_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSSABT1_S1BI_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ BMSAERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ADD ========================================================== */ + #define R_BUS_BMSAERR_ADD_MSERAD_Pos (0UL) /*!< MSERAD (Bit 0) */ + #define R_BUS_BMSAERR_ADD_MSERAD_Msk (0xffffffffUL) /*!< MSERAD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== RW =========================================================== */ + #define R_BUS_BMSAERR_RW_MSARWSTAT_Pos (0UL) /*!< MSARWSTAT (Bit 0) */ + #define R_BUS_BMSAERR_RW_MSARWSTAT_Msk (0x1UL) /*!< MSARWSTAT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ OAD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== BUSOAD ========================================================= */ + #define R_BUS_OAD_BUSOAD_BWERROAD_Pos (2UL) /*!< BWERROAD (Bit 2) */ + #define R_BUS_OAD_BUSOAD_BWERROAD_Msk (0x4UL) /*!< BWERROAD (Bitfield-Mask: 0x01) */ + #define R_BUS_OAD_BUSOAD_SLERROAD_Pos (1UL) /*!< SLERROAD (Bit 1) */ + #define R_BUS_OAD_BUSOAD_SLERROAD_Msk (0x2UL) /*!< SLERROAD (Bitfield-Mask: 0x01) */ + #define R_BUS_OAD_BUSOAD_ILERROAD_Pos (0UL) /*!< ILERROAD (Bit 0) */ + #define R_BUS_OAD_BUSOAD_ILERROAD_Msk (0x1UL) /*!< ILERROAD (Bitfield-Mask: 0x01) */ +/* ======================================================= BUSOADPT ======================================================== */ + #define R_BUS_OAD_BUSOADPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_BUS_OAD_BUSOADPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_BUS_OAD_BUSOADPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_BUS_OAD_BUSOADPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ======================================================== MSAOAD ========================================================= */ + #define R_BUS_OAD_MSAOAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_BUS_OAD_MSAOAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_BUS_OAD_MSAOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_BUS_OAD_MSAOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ========================================================= MSAPT ========================================================= */ + #define R_BUS_OAD_MSAPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_BUS_OAD_MSAPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_BUS_OAD_MSAPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_BUS_OAD_MSAPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ MBWERR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STAT ========================================================== */ + #define R_BUS_MBWERR_STAT_BWERR_Pos (0UL) /*!< BWERR (Bit 0) */ + #define R_BUS_MBWERR_STAT_BWERR_Msk (0x1UL) /*!< BWERR (Bitfield-Mask: 0x01) */ +/* ========================================================== CLR ========================================================== */ + #define R_BUS_MBWERR_CLR_BWERR_Pos (0UL) /*!< BWERR (Bit 0) */ + #define R_BUS_MBWERR_CLR_BWERR_Msk (0x1UL) /*!< BWERR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CNT ========================================================== */ + #define R_BUS_BUSM_CNT_IERES_Pos (15UL) /*!< IERES (Bit 15) */ + #define R_BUS_BUSM_CNT_IERES_Msk (0x8000UL) /*!< IERES (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ BUSS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CNT ========================================================== */ + #define R_BUS_BUSS_CNT_ARBMET_Pos (4UL) /*!< ARBMET (Bit 4) */ + #define R_BUS_BUSS_CNT_ARBMET_Msk (0x30UL) /*!< ARBMET (Bitfield-Mask: 0x03) */ + #define R_BUS_BUSS_CNT_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSS_CNT_ARBS_Msk (0x3UL) /*!< ARBS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CFDC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= NCFG ========================================================== */ + #define R_CANFD_CFDC_NCFG_NBRP_Pos (0UL) /*!< NBRP (Bit 0) */ + #define R_CANFD_CFDC_NCFG_NBRP_Msk (0x3ffUL) /*!< NBRP (Bitfield-Mask: 0x3ff) */ + #define R_CANFD_CFDC_NCFG_NSJW_Pos (10UL) /*!< NSJW (Bit 10) */ + #define R_CANFD_CFDC_NCFG_NSJW_Msk (0x1fc00UL) /*!< NSJW (Bitfield-Mask: 0x7f) */ + #define R_CANFD_CFDC_NCFG_NTSEG1_Pos (17UL) /*!< NTSEG1 (Bit 17) */ + #define R_CANFD_CFDC_NCFG_NTSEG1_Msk (0x1fe0000UL) /*!< NTSEG1 (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC_NCFG_NTSEG2_Pos (25UL) /*!< NTSEG2 (Bit 25) */ + #define R_CANFD_CFDC_NCFG_NTSEG2_Msk (0xfe000000UL) /*!< NTSEG2 (Bitfield-Mask: 0x7f) */ +/* ========================================================== CTR ========================================================== */ + #define R_CANFD_CFDC_CTR_CHMDC_Pos (0UL) /*!< CHMDC (Bit 0) */ + #define R_CANFD_CFDC_CTR_CHMDC_Msk (0x3UL) /*!< CHMDC (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDC_CTR_CSLPR_Pos (2UL) /*!< CSLPR (Bit 2) */ + #define R_CANFD_CFDC_CTR_CSLPR_Msk (0x4UL) /*!< CSLPR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_RTBO_Pos (3UL) /*!< RTBO (Bit 3) */ + #define R_CANFD_CFDC_CTR_RTBO_Msk (0x8UL) /*!< RTBO (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BEIE_Pos (8UL) /*!< BEIE (Bit 8) */ + #define R_CANFD_CFDC_CTR_BEIE_Msk (0x100UL) /*!< BEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_EWIE_Pos (9UL) /*!< EWIE (Bit 9) */ + #define R_CANFD_CFDC_CTR_EWIE_Msk (0x200UL) /*!< EWIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_EPIE_Pos (10UL) /*!< EPIE (Bit 10) */ + #define R_CANFD_CFDC_CTR_EPIE_Msk (0x400UL) /*!< EPIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BOEIE_Pos (11UL) /*!< BOEIE (Bit 11) */ + #define R_CANFD_CFDC_CTR_BOEIE_Msk (0x800UL) /*!< BOEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BORIE_Pos (12UL) /*!< BORIE (Bit 12) */ + #define R_CANFD_CFDC_CTR_BORIE_Msk (0x1000UL) /*!< BORIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_OLIE_Pos (13UL) /*!< OLIE (Bit 13) */ + #define R_CANFD_CFDC_CTR_OLIE_Msk (0x2000UL) /*!< OLIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BLIE_Pos (14UL) /*!< BLIE (Bit 14) */ + #define R_CANFD_CFDC_CTR_BLIE_Msk (0x4000UL) /*!< BLIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_ALIE_Pos (15UL) /*!< ALIE (Bit 15) */ + #define R_CANFD_CFDC_CTR_ALIE_Msk (0x8000UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_TAIE_Pos (16UL) /*!< TAIE (Bit 16) */ + #define R_CANFD_CFDC_CTR_TAIE_Msk (0x10000UL) /*!< TAIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_EOCOIE_Pos (17UL) /*!< EOCOIE (Bit 17) */ + #define R_CANFD_CFDC_CTR_EOCOIE_Msk (0x20000UL) /*!< EOCOIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_SOCOIE_Pos (18UL) /*!< SOCOIE (Bit 18) */ + #define R_CANFD_CFDC_CTR_SOCOIE_Msk (0x40000UL) /*!< SOCOIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_TDCVFIE_Pos (19UL) /*!< TDCVFIE (Bit 19) */ + #define R_CANFD_CFDC_CTR_TDCVFIE_Msk (0x80000UL) /*!< TDCVFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_BOM_Pos (21UL) /*!< BOM (Bit 21) */ + #define R_CANFD_CFDC_CTR_BOM_Msk (0x600000UL) /*!< BOM (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDC_CTR_ERRD_Pos (23UL) /*!< ERRD (Bit 23) */ + #define R_CANFD_CFDC_CTR_ERRD_Msk (0x800000UL) /*!< ERRD (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_CTME_Pos (24UL) /*!< CTME (Bit 24) */ + #define R_CANFD_CFDC_CTR_CTME_Msk (0x1000000UL) /*!< CTME (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_CTMS_Pos (25UL) /*!< CTMS (Bit 25) */ + #define R_CANFD_CFDC_CTR_CTMS_Msk (0x6000000UL) /*!< CTMS (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDC_CTR_CRCT_Pos (30UL) /*!< CRCT (Bit 30) */ + #define R_CANFD_CFDC_CTR_CRCT_Msk (0x40000000UL) /*!< CRCT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_CTR_ROM_Pos (31UL) /*!< ROM (Bit 31) */ + #define R_CANFD_CFDC_CTR_ROM_Msk (0x80000000UL) /*!< ROM (Bitfield-Mask: 0x01) */ +/* ========================================================== STS ========================================================== */ + #define R_CANFD_CFDC_STS_CRSTSTS_Pos (0UL) /*!< CRSTSTS (Bit 0) */ + #define R_CANFD_CFDC_STS_CRSTSTS_Msk (0x1UL) /*!< CRSTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_CHLTSTS_Pos (1UL) /*!< CHLTSTS (Bit 1) */ + #define R_CANFD_CFDC_STS_CHLTSTS_Msk (0x2UL) /*!< CHLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_CSLPSTS_Pos (2UL) /*!< CSLPSTS (Bit 2) */ + #define R_CANFD_CFDC_STS_CSLPSTS_Msk (0x4UL) /*!< CSLPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_EPSTS_Pos (3UL) /*!< EPSTS (Bit 3) */ + #define R_CANFD_CFDC_STS_EPSTS_Msk (0x8UL) /*!< EPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_BOSTS_Pos (4UL) /*!< BOSTS (Bit 4) */ + #define R_CANFD_CFDC_STS_BOSTS_Msk (0x10UL) /*!< BOSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_TRMSTS_Pos (5UL) /*!< TRMSTS (Bit 5) */ + #define R_CANFD_CFDC_STS_TRMSTS_Msk (0x20UL) /*!< TRMSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_RECSTS_Pos (6UL) /*!< RECSTS (Bit 6) */ + #define R_CANFD_CFDC_STS_RECSTS_Msk (0x40UL) /*!< RECSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_COMSTS_Pos (7UL) /*!< COMSTS (Bit 7) */ + #define R_CANFD_CFDC_STS_COMSTS_Msk (0x80UL) /*!< COMSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_ESIF_Pos (8UL) /*!< ESIF (Bit 8) */ + #define R_CANFD_CFDC_STS_ESIF_Msk (0x100UL) /*!< ESIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_STS_REC_Pos (16UL) /*!< REC (Bit 16) */ + #define R_CANFD_CFDC_STS_REC_Msk (0xff0000UL) /*!< REC (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC_STS_TEC_Pos (24UL) /*!< TEC (Bit 24) */ + #define R_CANFD_CFDC_STS_TEC_Msk (0xff000000UL) /*!< TEC (Bitfield-Mask: 0xff) */ +/* ========================================================= ERFL ========================================================== */ + #define R_CANFD_CFDC_ERFL_BEF_Pos (0UL) /*!< BEF (Bit 0) */ + #define R_CANFD_CFDC_ERFL_BEF_Msk (0x1UL) /*!< BEF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_EWF_Pos (1UL) /*!< EWF (Bit 1) */ + #define R_CANFD_CFDC_ERFL_EWF_Msk (0x2UL) /*!< EWF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_EPF_Pos (2UL) /*!< EPF (Bit 2) */ + #define R_CANFD_CFDC_ERFL_EPF_Msk (0x4UL) /*!< EPF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_BOEF_Pos (3UL) /*!< BOEF (Bit 3) */ + #define R_CANFD_CFDC_ERFL_BOEF_Msk (0x8UL) /*!< BOEF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_BORF_Pos (4UL) /*!< BORF (Bit 4) */ + #define R_CANFD_CFDC_ERFL_BORF_Msk (0x10UL) /*!< BORF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_OVLF_Pos (5UL) /*!< OVLF (Bit 5) */ + #define R_CANFD_CFDC_ERFL_OVLF_Msk (0x20UL) /*!< OVLF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_BLF_Pos (6UL) /*!< BLF (Bit 6) */ + #define R_CANFD_CFDC_ERFL_BLF_Msk (0x40UL) /*!< BLF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_ALF_Pos (7UL) /*!< ALF (Bit 7) */ + #define R_CANFD_CFDC_ERFL_ALF_Msk (0x80UL) /*!< ALF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_SERR_Pos (8UL) /*!< SERR (Bit 8) */ + #define R_CANFD_CFDC_ERFL_SERR_Msk (0x100UL) /*!< SERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_FERR_Pos (9UL) /*!< FERR (Bit 9) */ + #define R_CANFD_CFDC_ERFL_FERR_Msk (0x200UL) /*!< FERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_AERR_Pos (10UL) /*!< AERR (Bit 10) */ + #define R_CANFD_CFDC_ERFL_AERR_Msk (0x400UL) /*!< AERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_CERR_Pos (11UL) /*!< CERR (Bit 11) */ + #define R_CANFD_CFDC_ERFL_CERR_Msk (0x800UL) /*!< CERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_B1ERR_Pos (12UL) /*!< B1ERR (Bit 12) */ + #define R_CANFD_CFDC_ERFL_B1ERR_Msk (0x1000UL) /*!< B1ERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_B0ERR_Pos (13UL) /*!< B0ERR (Bit 13) */ + #define R_CANFD_CFDC_ERFL_B0ERR_Msk (0x2000UL) /*!< B0ERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_ADERR_Pos (14UL) /*!< ADERR (Bit 14) */ + #define R_CANFD_CFDC_ERFL_ADERR_Msk (0x4000UL) /*!< ADERR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC_ERFL_CRCREG_Pos (16UL) /*!< CRCREG (Bit 16) */ + #define R_CANFD_CFDC_ERFL_CRCREG_Msk (0x7fff0000UL) /*!< CRCREG (Bitfield-Mask: 0x7fff) */ + +/* =========================================================================================================================== */ +/* ================ CFDC2 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DCFG ========================================================== */ + #define R_CANFD_CFDC2_DCFG_DBRP_Pos (0UL) /*!< DBRP (Bit 0) */ + #define R_CANFD_CFDC2_DCFG_DBRP_Msk (0xffUL) /*!< DBRP (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_DCFG_DTSEG1_Pos (8UL) /*!< DTSEG1 (Bit 8) */ + #define R_CANFD_CFDC2_DCFG_DTSEG1_Msk (0x1f00UL) /*!< DTSEG1 (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDC2_DCFG_DTSEG2_Pos (16UL) /*!< DTSEG2 (Bit 16) */ + #define R_CANFD_CFDC2_DCFG_DTSEG2_Msk (0xf0000UL) /*!< DTSEG2 (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDC2_DCFG_DSJW_Pos (24UL) /*!< DSJW (Bit 24) */ + #define R_CANFD_CFDC2_DCFG_DSJW_Msk (0xf000000UL) /*!< DSJW (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDCFG ========================================================= */ + #define R_CANFD_CFDC2_FDCFG_EOCCFG_Pos (0UL) /*!< EOCCFG (Bit 0) */ + #define R_CANFD_CFDC2_FDCFG_EOCCFG_Msk (0x7UL) /*!< EOCCFG (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDC2_FDCFG_TDCOC_Pos (8UL) /*!< TDCOC (Bit 8) */ + #define R_CANFD_CFDC2_FDCFG_TDCOC_Msk (0x100UL) /*!< TDCOC (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_TDCE_Pos (9UL) /*!< TDCE (Bit 9) */ + #define R_CANFD_CFDC2_FDCFG_TDCE_Msk (0x200UL) /*!< TDCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_ESIC_Pos (10UL) /*!< ESIC (Bit 10) */ + #define R_CANFD_CFDC2_FDCFG_ESIC_Msk (0x400UL) /*!< ESIC (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_TDCO_Pos (16UL) /*!< TDCO (Bit 16) */ + #define R_CANFD_CFDC2_FDCFG_TDCO_Msk (0xff0000UL) /*!< TDCO (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_FDCFG_FDOE_Pos (28UL) /*!< FDOE (Bit 28) */ + #define R_CANFD_CFDC2_FDCFG_FDOE_Msk (0x10000000UL) /*!< FDOE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_REFE_Pos (29UL) /*!< REFE (Bit 29) */ + #define R_CANFD_CFDC2_FDCFG_REFE_Msk (0x20000000UL) /*!< REFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_CLOE_Pos (30UL) /*!< CLOE (Bit 30) */ + #define R_CANFD_CFDC2_FDCFG_CLOE_Msk (0x40000000UL) /*!< CLOE (Bitfield-Mask: 0x01) */ +/* ========================================================= FDCTR ========================================================= */ + #define R_CANFD_CFDC2_FDCTR_EOCCLR_Pos (0UL) /*!< EOCCLR (Bit 0) */ + #define R_CANFD_CFDC2_FDCTR_EOCCLR_Msk (0x1UL) /*!< EOCCLR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCTR_SOCCLR_Pos (1UL) /*!< SOCCLR (Bit 1) */ + #define R_CANFD_CFDC2_FDCTR_SOCCLR_Msk (0x2UL) /*!< SOCCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDC2_FDSTS_TDCR_Pos (0UL) /*!< TDCR (Bit 0) */ + #define R_CANFD_CFDC2_FDSTS_TDCR_Msk (0xffUL) /*!< TDCR (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_FDSTS_EOCO_Pos (8UL) /*!< EOCO (Bit 8) */ + #define R_CANFD_CFDC2_FDSTS_EOCO_Msk (0x100UL) /*!< EOCO (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDSTS_SOCO_Pos (9UL) /*!< SOCO (Bit 9) */ + #define R_CANFD_CFDC2_FDSTS_SOCO_Msk (0x200UL) /*!< SOCO (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDSTS_TDCVF_Pos (15UL) /*!< TDCVF (Bit 15) */ + #define R_CANFD_CFDC2_FDSTS_TDCVF_Msk (0x8000UL) /*!< TDCVF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDSTS_EOC_Pos (16UL) /*!< EOC (Bit 16) */ + #define R_CANFD_CFDC2_FDSTS_EOC_Msk (0xff0000UL) /*!< EOC (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDC2_FDSTS_SOC_Pos (24UL) /*!< SOC (Bit 24) */ + #define R_CANFD_CFDC2_FDSTS_SOC_Msk (0xff000000UL) /*!< SOC (Bitfield-Mask: 0xff) */ +/* ========================================================= FDCRC ========================================================= */ + #define R_CANFD_CFDC2_FDCRC_CRCREG_Pos (0UL) /*!< CRCREG (Bit 0) */ + #define R_CANFD_CFDC2_FDCRC_CRCREG_Msk (0x1fffffUL) /*!< CRCREG (Bitfield-Mask: 0x1fffff) */ + #define R_CANFD_CFDC2_FDCRC_SCNT_Pos (24UL) /*!< SCNT (Bit 24) */ + #define R_CANFD_CFDC2_FDCRC_SCNT_Msk (0xf000000UL) /*!< SCNT (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ CFDGAFL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDGAFL_ID_GAFLID_Pos (0UL) /*!< GAFLID (Bit 0) */ + #define R_CANFD_CFDGAFL_ID_GAFLID_Msk (0x1fffffffUL) /*!< GAFLID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDGAFL_ID_GAFLLB_Pos (29UL) /*!< GAFLLB (Bit 29) */ + #define R_CANFD_CFDGAFL_ID_GAFLLB_Msk (0x20000000UL) /*!< GAFLLB (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_ID_GAFLRTR_Pos (30UL) /*!< GAFLRTR (Bit 30) */ + #define R_CANFD_CFDGAFL_ID_GAFLRTR_Msk (0x40000000UL) /*!< GAFLRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_ID_GAFLIDE_Pos (31UL) /*!< GAFLIDE (Bit 31) */ + #define R_CANFD_CFDGAFL_ID_GAFLIDE_Msk (0x80000000UL) /*!< GAFLIDE (Bitfield-Mask: 0x01) */ +/* =========================================================== M =========================================================== */ + #define R_CANFD_CFDGAFL_M_GAFLIDM_Pos (0UL) /*!< GAFLIDM (Bit 0) */ + #define R_CANFD_CFDGAFL_M_GAFLIDM_Msk (0x1fffffffUL) /*!< GAFLIDM (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDGAFL_M_GAFLIFL1_Pos (29UL) /*!< GAFLIFL1 (Bit 29) */ + #define R_CANFD_CFDGAFL_M_GAFLIFL1_Msk (0x20000000UL) /*!< GAFLIFL1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_M_GAFLRTRM_Pos (30UL) /*!< GAFLRTRM (Bit 30) */ + #define R_CANFD_CFDGAFL_M_GAFLRTRM_Msk (0x40000000UL) /*!< GAFLRTRM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_M_GAFLIDEM_Pos (31UL) /*!< GAFLIDEM (Bit 31) */ + #define R_CANFD_CFDGAFL_M_GAFLIDEM_Msk (0x80000000UL) /*!< GAFLIDEM (Bitfield-Mask: 0x01) */ +/* ========================================================== P0 =========================================================== */ + #define R_CANFD_CFDGAFL_P0_GAFLDLC_Pos (0UL) /*!< GAFLDLC (Bit 0) */ + #define R_CANFD_CFDGAFL_P0_GAFLDLC_Msk (0xfUL) /*!< GAFLDLC (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDGAFL_P0_GAFLIFL0_Pos (7UL) /*!< GAFLIFL0 (Bit 7) */ + #define R_CANFD_CFDGAFL_P0_GAFLIFL0_Msk (0x80UL) /*!< GAFLIFL0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMDP_Pos (8UL) /*!< GAFLRMDP (Bit 8) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMDP_Msk (0x1f00UL) /*!< GAFLRMDP (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMV_Pos (15UL) /*!< GAFLRMV (Bit 15) */ + #define R_CANFD_CFDGAFL_P0_GAFLRMV_Msk (0x8000UL) /*!< GAFLRMV (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLPTR_Pos (16UL) /*!< GAFLPTR (Bit 16) */ + #define R_CANFD_CFDGAFL_P0_GAFLPTR_Msk (0xffff0000UL) /*!< GAFLPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== P1 =========================================================== */ + #define R_CANFD_CFDGAFL_P1_GAFLFDP_Pos (0UL) /*!< GAFLFDP (Bit 0) */ + #define R_CANFD_CFDGAFL_P1_GAFLFDP_Msk (0x1ffUL) /*!< GAFLFDP (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ CFDTHL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ACC0 ========================================================== */ + #define R_CANFD_CFDTHL_ACC0_BT_Pos (0UL) /*!< BT (Bit 0) */ + #define R_CANFD_CFDTHL_ACC0_BT_Msk (0x7UL) /*!< BT (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTHL_ACC0_BN_Pos (3UL) /*!< BN (Bit 3) */ + #define R_CANFD_CFDTHL_ACC0_BN_Msk (0x3f8UL) /*!< BN (Bitfield-Mask: 0x7f) */ + #define R_CANFD_CFDTHL_ACC0_TMTS_Pos (16UL) /*!< TMTS (Bit 16) */ + #define R_CANFD_CFDTHL_ACC0_TMTS_Msk (0xffff0000UL) /*!< TMTS (Bitfield-Mask: 0xffff) */ +/* ========================================================= ACC1 ========================================================== */ + #define R_CANFD_CFDTHL_ACC1_TID_Pos (0UL) /*!< TID (Bit 0) */ + #define R_CANFD_CFDTHL_ACC1_TID_Msk (0xffffUL) /*!< TID (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDTHL_ACC1_TIFL_Pos (16UL) /*!< TIFL (Bit 16) */ + #define R_CANFD_CFDTHL_ACC1_TIFL_Msk (0x30000UL) /*!< TIFL (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CFDRF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDRF_ID_RFID_Pos (0UL) /*!< RFID (Bit 0) */ + #define R_CANFD_CFDRF_ID_RFID_Msk (0x1fffffffUL) /*!< RFID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDRF_ID_RFRTR_Pos (30UL) /*!< RFRTR (Bit 30) */ + #define R_CANFD_CFDRF_ID_RFRTR_Msk (0x40000000UL) /*!< RFRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_ID_RFIDE_Pos (31UL) /*!< RFIDE (Bit 31) */ + #define R_CANFD_CFDRF_ID_RFIDE_Msk (0x80000000UL) /*!< RFIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDRF_PTR_RFTS_Pos (0UL) /*!< RFTS (Bit 0) */ + #define R_CANFD_CFDRF_PTR_RFTS_Msk (0xffffUL) /*!< RFTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDRF_PTR_RFDLC_Pos (28UL) /*!< RFDLC (Bit 28) */ + #define R_CANFD_CFDRF_PTR_RFDLC_Msk (0xf0000000UL) /*!< RFDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDRF_FDSTS_RFESI_Pos (0UL) /*!< RFESI (Bit 0) */ + #define R_CANFD_CFDRF_FDSTS_RFESI_Msk (0x1UL) /*!< RFESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_FDSTS_RFBRS_Pos (1UL) /*!< RFBRS (Bit 1) */ + #define R_CANFD_CFDRF_FDSTS_RFBRS_Msk (0x2UL) /*!< RFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_FDSTS_RFFDF_Pos (2UL) /*!< RFFDF (Bit 2) */ + #define R_CANFD_CFDRF_FDSTS_RFFDF_Msk (0x4UL) /*!< RFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRF_FDSTS_RFIFL_Pos (8UL) /*!< RFIFL (Bit 8) */ + #define R_CANFD_CFDRF_FDSTS_RFIFL_Msk (0x300UL) /*!< RFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDRF_FDSTS_RFPTR_Pos (16UL) /*!< RFPTR (Bit 16) */ + #define R_CANFD_CFDRF_FDSTS_RFPTR_Msk (0xffff0000UL) /*!< RFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDRF_DF_RFDB_Pos (0UL) /*!< RFDB (Bit 0) */ + #define R_CANFD_CFDRF_DF_RFDB_Msk (0xffUL) /*!< RFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDCF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDCF_ID_CFID_Pos (0UL) /*!< CFID (Bit 0) */ + #define R_CANFD_CFDCF_ID_CFID_Msk (0x1fffffffUL) /*!< CFID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDCF_ID_CFRTR_Pos (30UL) /*!< CFRTR (Bit 30) */ + #define R_CANFD_CFDCF_ID_CFRTR_Msk (0x40000000UL) /*!< CFRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_ID_CFIDE_Pos (31UL) /*!< CFIDE (Bit 31) */ + #define R_CANFD_CFDCF_ID_CFIDE_Msk (0x80000000UL) /*!< CFIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDCF_PTR_CFTS_Pos (0UL) /*!< CFTS (Bit 0) */ + #define R_CANFD_CFDCF_PTR_CFTS_Msk (0xffffUL) /*!< CFTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDCF_PTR_CFDLC_Pos (28UL) /*!< CFDLC (Bit 28) */ + #define R_CANFD_CFDCF_PTR_CFDLC_Msk (0xf0000000UL) /*!< CFDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDCF_FDSTS_CFESI_Pos (0UL) /*!< CFESI (Bit 0) */ + #define R_CANFD_CFDCF_FDSTS_CFESI_Msk (0x1UL) /*!< CFESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDSTS_CFBRS_Pos (1UL) /*!< CFBRS (Bit 1) */ + #define R_CANFD_CFDCF_FDSTS_CFBRS_Msk (0x2UL) /*!< CFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDSTS_CFFDF_Pos (2UL) /*!< CFFDF (Bit 2) */ + #define R_CANFD_CFDCF_FDSTS_CFFDF_Msk (0x4UL) /*!< CFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDSTS_CFIFL_Pos (8UL) /*!< CFIFL (Bit 8) */ + #define R_CANFD_CFDCF_FDSTS_CFIFL_Msk (0x300UL) /*!< CFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDCF_FDSTS_CFPTR_Pos (16UL) /*!< CFPTR (Bit 16) */ + #define R_CANFD_CFDCF_FDSTS_CFPTR_Msk (0xffff0000UL) /*!< CFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDCF_DF_CFDB_Pos (0UL) /*!< CFDB (Bit 0) */ + #define R_CANFD_CFDCF_DF_CFDB_Msk (0xffUL) /*!< CFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDTM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDTM_ID_TMID_Pos (0UL) /*!< TMID (Bit 0) */ + #define R_CANFD_CFDTM_ID_TMID_Msk (0x1fffffffUL) /*!< TMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDTM_ID_TMRTR_Pos (30UL) /*!< TMRTR (Bit 30) */ + #define R_CANFD_CFDTM_ID_TMRTR_Msk (0x40000000UL) /*!< TMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_ID_TMIDE_Pos (31UL) /*!< TMIDE (Bit 31) */ + #define R_CANFD_CFDTM_ID_TMIDE_Msk (0x80000000UL) /*!< TMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDTM_PTR_TMTS_Pos (0UL) /*!< TMTS (Bit 0) */ + #define R_CANFD_CFDTM_PTR_TMTS_Msk (0xffffUL) /*!< TMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDTM_PTR_TMDLC_Pos (28UL) /*!< TMDLC (Bit 28) */ + #define R_CANFD_CFDTM_PTR_TMDLC_Msk (0xf0000000UL) /*!< TMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDCTR ========================================================= */ + #define R_CANFD_CFDTM_FDCTR_TMESI_Pos (0UL) /*!< TMESI (Bit 0) */ + #define R_CANFD_CFDTM_FDCTR_TMESI_Msk (0x1UL) /*!< TMESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_FDCTR_TMBRS_Pos (1UL) /*!< TMBRS (Bit 1) */ + #define R_CANFD_CFDTM_FDCTR_TMBRS_Msk (0x2UL) /*!< TMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_FDCTR_TMFDF_Pos (2UL) /*!< TMFDF (Bit 2) */ + #define R_CANFD_CFDTM_FDCTR_TMFDF_Msk (0x4UL) /*!< TMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTM_FDCTR_TMIFL_Pos (8UL) /*!< TMIFL (Bit 8) */ + #define R_CANFD_CFDTM_FDCTR_TMIFL_Msk (0x300UL) /*!< TMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDTM_FDCTR_TMPTR_Pos (16UL) /*!< TMPTR (Bit 16) */ + #define R_CANFD_CFDTM_FDCTR_TMPTR_Msk (0xffff0000UL) /*!< TMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDTM_DF_TMDB_Pos (0UL) /*!< TMDB (Bit 0) */ + #define R_CANFD_CFDTM_DF_TMDB_Msk (0xffUL) /*!< TMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ RM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDRM_RM_ID_RMID_Pos (0UL) /*!< RMID (Bit 0) */ + #define R_CANFD_CFDRM_RM_ID_RMID_Msk (0x1fffffffUL) /*!< RMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDRM_RM_ID_RMRTR_Pos (30UL) /*!< RMRTR (Bit 30) */ + #define R_CANFD_CFDRM_RM_ID_RMRTR_Msk (0x40000000UL) /*!< RMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_ID_RMIDE_Pos (31UL) /*!< RMIDE (Bit 31) */ + #define R_CANFD_CFDRM_RM_ID_RMIDE_Msk (0x80000000UL) /*!< RMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDRM_RM_PTR_RMTS_Pos (0UL) /*!< RMTS (Bit 0) */ + #define R_CANFD_CFDRM_RM_PTR_RMTS_Msk (0xffffUL) /*!< RMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDRM_RM_PTR_RMDLC_Pos (28UL) /*!< RMDLC (Bit 28) */ + #define R_CANFD_CFDRM_RM_PTR_RMDLC_Msk (0xf0000000UL) /*!< RMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDRM_RM_FDSTS_RMESI_Pos (0UL) /*!< RMESI (Bit 0) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMESI_Msk (0x1UL) /*!< RMESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMBRS_Pos (1UL) /*!< RMBRS (Bit 1) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMBRS_Msk (0x2UL) /*!< RMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMFDF_Pos (2UL) /*!< RMFDF (Bit 2) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMFDF_Msk (0x4UL) /*!< RMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMIFL_Pos (8UL) /*!< RMIFL (Bit 8) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMIFL_Msk (0x300UL) /*!< RMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMPTR_Pos (16UL) /*!< RMPTR (Bit 16) */ + #define R_CANFD_CFDRM_RM_FDSTS_RMPTR_Msk (0xffff0000UL) /*!< RMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDRM_RM_DF_RMDB_Pos (0UL) /*!< RMDB (Bit 0) */ + #define R_CANFD_CFDRM_RM_DF_RMDB_Msk (0xffUL) /*!< RMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CFDRM ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ ELSEGR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== BY =========================================================== */ + #define R_ELC_ELSEGR_BY_WI_Pos (7UL) /*!< WI (Bit 7) */ + #define R_ELC_ELSEGR_BY_WI_Msk (0x80UL) /*!< WI (Bitfield-Mask: 0x01) */ + #define R_ELC_ELSEGR_BY_WE_Pos (6UL) /*!< WE (Bit 6) */ + #define R_ELC_ELSEGR_BY_WE_Msk (0x40UL) /*!< WE (Bitfield-Mask: 0x01) */ + #define R_ELC_ELSEGR_BY_SEG_Pos (0UL) /*!< SEG (Bit 0) */ + #define R_ELC_ELSEGR_BY_SEG_Msk (0x1UL) /*!< SEG (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ ELSR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== HA =========================================================== */ + #define R_ELC_ELSR_HA_ELS_Pos (0UL) /*!< ELS (Bit 0) */ + #define R_ELC_ELSR_HA_ELS_Msk (0x1ffUL) /*!< ELS (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ BG ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== EN =========================================================== */ + #define R_GLCDC_BG_EN_SWRST_Pos (16UL) /*!< SWRST (Bit 16) */ + #define R_GLCDC_BG_EN_SWRST_Msk (0x10000UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_EN_VEN_Pos (8UL) /*!< VEN (Bit 8) */ + #define R_GLCDC_BG_EN_VEN_Msk (0x100UL) /*!< VEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_EN_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_GLCDC_BG_EN_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ +/* ========================================================= PERI ========================================================== */ + #define R_GLCDC_BG_PERI_FV_Pos (16UL) /*!< FV (Bit 16) */ + #define R_GLCDC_BG_PERI_FV_Msk (0x7ff0000UL) /*!< FV (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_BG_PERI_FH_Pos (0UL) /*!< FH (Bit 0) */ + #define R_GLCDC_BG_PERI_FH_Msk (0x7ffUL) /*!< FH (Bitfield-Mask: 0x7ff) */ +/* ========================================================= SYNC ========================================================== */ + #define R_GLCDC_BG_SYNC_VP_Pos (16UL) /*!< VP (Bit 16) */ + #define R_GLCDC_BG_SYNC_VP_Msk (0xf0000UL) /*!< VP (Bitfield-Mask: 0x0f) */ + #define R_GLCDC_BG_SYNC_HP_Pos (0UL) /*!< HP (Bit 0) */ + #define R_GLCDC_BG_SYNC_HP_Msk (0xfUL) /*!< HP (Bitfield-Mask: 0x0f) */ +/* ========================================================= VSIZE ========================================================= */ + #define R_GLCDC_BG_VSIZE_VP_Pos (16UL) /*!< VP (Bit 16) */ + #define R_GLCDC_BG_VSIZE_VP_Msk (0x7ff0000UL) /*!< VP (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_BG_VSIZE_VW_Pos (0UL) /*!< VW (Bit 0) */ + #define R_GLCDC_BG_VSIZE_VW_Msk (0x7ffUL) /*!< VW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= HSIZE ========================================================= */ + #define R_GLCDC_BG_HSIZE_HP_Pos (16UL) /*!< HP (Bit 16) */ + #define R_GLCDC_BG_HSIZE_HP_Msk (0x7ff0000UL) /*!< HP (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_BG_HSIZE_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_GLCDC_BG_HSIZE_HW_Msk (0x7ffUL) /*!< HW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== BGC ========================================================== */ + #define R_GLCDC_BG_BGC_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_BG_BGC_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_BG_BGC_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_BG_BGC_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_BG_BGC_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_BG_BGC_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ========================================================== MON ========================================================== */ + #define R_GLCDC_BG_MON_SWRST_Pos (16UL) /*!< SWRST (Bit 16) */ + #define R_GLCDC_BG_MON_SWRST_Msk (0x10000UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_MON_VEN_Pos (8UL) /*!< VEN (Bit 8) */ + #define R_GLCDC_BG_MON_VEN_Msk (0x100UL) /*!< VEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_BG_MON_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_GLCDC_BG_MON_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ GR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== VEN ========================================================== */ + #define R_GLCDC_GR_VEN_PVEN_Pos (0UL) /*!< PVEN (Bit 0) */ + #define R_GLCDC_GR_VEN_PVEN_Msk (0x1UL) /*!< PVEN (Bitfield-Mask: 0x01) */ +/* ========================================================= FLMRD ========================================================= */ + #define R_GLCDC_GR_FLMRD_RENB_Pos (0UL) /*!< RENB (Bit 0) */ + #define R_GLCDC_GR_FLMRD_RENB_Msk (0x1UL) /*!< RENB (Bitfield-Mask: 0x01) */ +/* ========================================================= FLM1 ========================================================== */ + #define R_GLCDC_GR_FLM1_BSTMD_Pos (0UL) /*!< BSTMD (Bit 0) */ + #define R_GLCDC_GR_FLM1_BSTMD_Msk (0x3UL) /*!< BSTMD (Bitfield-Mask: 0x03) */ +/* ========================================================= FLM2 ========================================================== */ + #define R_GLCDC_GR_FLM2_BASE_Pos (0UL) /*!< BASE (Bit 0) */ + #define R_GLCDC_GR_FLM2_BASE_Msk (0xffffffffUL) /*!< BASE (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= FLM3 ========================================================== */ + #define R_GLCDC_GR_FLM3_LNOFF_Pos (16UL) /*!< LNOFF (Bit 16) */ + #define R_GLCDC_GR_FLM3_LNOFF_Msk (0xffff0000UL) /*!< LNOFF (Bitfield-Mask: 0xffff) */ +/* ========================================================= FLM5 ========================================================== */ + #define R_GLCDC_GR_FLM5_LNNUM_Pos (16UL) /*!< LNNUM (Bit 16) */ + #define R_GLCDC_GR_FLM5_LNNUM_Msk (0x7ff0000UL) /*!< LNNUM (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_FLM5_DATANUM_Pos (0UL) /*!< DATANUM (Bit 0) */ + #define R_GLCDC_GR_FLM5_DATANUM_Msk (0xffffUL) /*!< DATANUM (Bitfield-Mask: 0xffff) */ +/* ========================================================= FLM6 ========================================================== */ + #define R_GLCDC_GR_FLM6_FORMAT_Pos (28UL) /*!< FORMAT (Bit 28) */ + #define R_GLCDC_GR_FLM6_FORMAT_Msk (0x70000000UL) /*!< FORMAT (Bitfield-Mask: 0x07) */ +/* ========================================================== AB1 ========================================================== */ + #define R_GLCDC_GR_AB1_ARCON_Pos (12UL) /*!< ARCON (Bit 12) */ + #define R_GLCDC_GR_AB1_ARCON_Msk (0x1000UL) /*!< ARCON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_AB1_ARCDISPON_Pos (8UL) /*!< ARCDISPON (Bit 8) */ + #define R_GLCDC_GR_AB1_ARCDISPON_Msk (0x100UL) /*!< ARCDISPON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_AB1_GRCDISPON_Pos (4UL) /*!< GRCDISPON (Bit 4) */ + #define R_GLCDC_GR_AB1_GRCDISPON_Msk (0x10UL) /*!< GRCDISPON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_AB1_DISPSEL_Pos (0UL) /*!< DISPSEL (Bit 0) */ + #define R_GLCDC_GR_AB1_DISPSEL_Msk (0x3UL) /*!< DISPSEL (Bitfield-Mask: 0x03) */ +/* ========================================================== AB2 ========================================================== */ + #define R_GLCDC_GR_AB2_GRCVS_Pos (16UL) /*!< GRCVS (Bit 16) */ + #define R_GLCDC_GR_AB2_GRCVS_Msk (0x7ff0000UL) /*!< GRCVS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB2_GRCVW_Pos (0UL) /*!< GRCVW (Bit 0) */ + #define R_GLCDC_GR_AB2_GRCVW_Msk (0x7ffUL) /*!< GRCVW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB3 ========================================================== */ + #define R_GLCDC_GR_AB3_GRCHS_Pos (16UL) /*!< GRCHS (Bit 16) */ + #define R_GLCDC_GR_AB3_GRCHS_Msk (0x7ff0000UL) /*!< GRCHS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB3_GRCHW_Pos (0UL) /*!< GRCHW (Bit 0) */ + #define R_GLCDC_GR_AB3_GRCHW_Msk (0x7ffUL) /*!< GRCHW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB4 ========================================================== */ + #define R_GLCDC_GR_AB4_ARCVS_Pos (16UL) /*!< ARCVS (Bit 16) */ + #define R_GLCDC_GR_AB4_ARCVS_Msk (0x7ff0000UL) /*!< ARCVS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB4_ARCVW_Pos (0UL) /*!< ARCVW (Bit 0) */ + #define R_GLCDC_GR_AB4_ARCVW_Msk (0x7ffUL) /*!< ARCVW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB5 ========================================================== */ + #define R_GLCDC_GR_AB5_ARCHS_Pos (16UL) /*!< ARCHS (Bit 16) */ + #define R_GLCDC_GR_AB5_ARCHS_Msk (0x7ff0000UL) /*!< ARCHS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_GR_AB5_ARCHW_Pos (0UL) /*!< ARCHW (Bit 0) */ + #define R_GLCDC_GR_AB5_ARCHW_Msk (0x7ffUL) /*!< ARCHW (Bitfield-Mask: 0x7ff) */ +/* ========================================================== AB6 ========================================================== */ + #define R_GLCDC_GR_AB6_ARCCOEF_Pos (16UL) /*!< ARCCOEF (Bit 16) */ + #define R_GLCDC_GR_AB6_ARCCOEF_Msk (0x1ff0000UL) /*!< ARCCOEF (Bitfield-Mask: 0x1ff) */ + #define R_GLCDC_GR_AB6_ARCRATE_Pos (0UL) /*!< ARCRATE (Bit 0) */ + #define R_GLCDC_GR_AB6_ARCRATE_Msk (0xffUL) /*!< ARCRATE (Bitfield-Mask: 0xff) */ +/* ========================================================== AB7 ========================================================== */ + #define R_GLCDC_GR_AB7_ARCDEF_Pos (16UL) /*!< ARCDEF (Bit 16) */ + #define R_GLCDC_GR_AB7_ARCDEF_Msk (0xff0000UL) /*!< ARCDEF (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB7_CKON_Pos (0UL) /*!< CKON (Bit 0) */ + #define R_GLCDC_GR_AB7_CKON_Msk (0x1UL) /*!< CKON (Bitfield-Mask: 0x01) */ +/* ========================================================== AB8 ========================================================== */ + #define R_GLCDC_GR_AB8_CKKG_Pos (16UL) /*!< CKKG (Bit 16) */ + #define R_GLCDC_GR_AB8_CKKG_Msk (0xff0000UL) /*!< CKKG (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB8_CKKB_Pos (8UL) /*!< CKKB (Bit 8) */ + #define R_GLCDC_GR_AB8_CKKB_Msk (0xff00UL) /*!< CKKB (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB8_CKKR_Pos (0UL) /*!< CKKR (Bit 0) */ + #define R_GLCDC_GR_AB8_CKKR_Msk (0xffUL) /*!< CKKR (Bitfield-Mask: 0xff) */ +/* ========================================================== AB9 ========================================================== */ + #define R_GLCDC_GR_AB9_CKA_Pos (24UL) /*!< CKA (Bit 24) */ + #define R_GLCDC_GR_AB9_CKA_Msk (0xff000000UL) /*!< CKA (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB9_CKG_Pos (16UL) /*!< CKG (Bit 16) */ + #define R_GLCDC_GR_AB9_CKG_Msk (0xff0000UL) /*!< CKG (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB9_CKB_Pos (8UL) /*!< CKB (Bit 8) */ + #define R_GLCDC_GR_AB9_CKB_Msk (0xff00UL) /*!< CKB (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_AB9_CKR_Pos (0UL) /*!< CKR (Bit 0) */ + #define R_GLCDC_GR_AB9_CKR_Msk (0xffUL) /*!< CKR (Bitfield-Mask: 0xff) */ +/* ========================================================= BASE ========================================================== */ + #define R_GLCDC_GR_BASE_G_Pos (16UL) /*!< G (Bit 16) */ + #define R_GLCDC_GR_BASE_G_Msk (0xff0000UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_BASE_B_Pos (8UL) /*!< B (Bit 8) */ + #define R_GLCDC_GR_BASE_B_Msk (0xff00UL) /*!< B (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR_BASE_R_Pos (0UL) /*!< R (Bit 0) */ + #define R_GLCDC_GR_BASE_R_Msk (0xffUL) /*!< R (Bitfield-Mask: 0xff) */ +/* ======================================================== CLUTINT ======================================================== */ + #define R_GLCDC_GR_CLUTINT_SEL_Pos (16UL) /*!< SEL (Bit 16) */ + #define R_GLCDC_GR_CLUTINT_SEL_Msk (0x10000UL) /*!< SEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_CLUTINT_LINE_Pos (0UL) /*!< LINE (Bit 0) */ + #define R_GLCDC_GR_CLUTINT_LINE_Msk (0x7ffUL) /*!< LINE (Bitfield-Mask: 0x7ff) */ +/* ========================================================== MON ========================================================== */ + #define R_GLCDC_GR_MON_UNDFLST_Pos (16UL) /*!< UNDFLST (Bit 16) */ + #define R_GLCDC_GR_MON_UNDFLST_Msk (0x10000UL) /*!< UNDFLST (Bitfield-Mask: 0x01) */ + #define R_GLCDC_GR_MON_ARCST_Pos (0UL) /*!< ARCST (Bit 0) */ + #define R_GLCDC_GR_MON_ARCST_Msk (0x1UL) /*!< ARCST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ GAM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= LATCH ========================================================= */ + #define R_GLCDC_GAM_LATCH_VEN_Pos (0UL) /*!< VEN (Bit 0) */ + #define R_GLCDC_GAM_LATCH_VEN_Msk (0x1UL) /*!< VEN (Bitfield-Mask: 0x01) */ +/* ======================================================== GAM_SW ========================================================= */ + #define R_GLCDC_GAM_GAM_SW_GAMON_Pos (0UL) /*!< GAMON (Bit 0) */ + #define R_GLCDC_GAM_GAM_SW_GAMON_Msk (0x1UL) /*!< GAMON (Bitfield-Mask: 0x01) */ +/* ========================================================== LUT ========================================================== */ + #define R_GLCDC_GAM_LUT___Pos (0UL) /*!< _ (Bit 0) */ + #define R_GLCDC_GAM_LUT___Msk (0x7ffUL) /*!< _ (Bitfield-Mask: 0x7ff) */ +/* ========================================================= AREA ========================================================== */ + #define R_GLCDC_GAM_AREA___Pos (0UL) /*!< _ (Bit 0) */ + #define R_GLCDC_GAM_AREA___Msk (0x3ffUL) /*!< _ (Bitfield-Mask: 0x3ff) */ + +/* =========================================================================================================================== */ +/* ================ OUT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== VLATCH ========================================================= */ + #define R_GLCDC_OUT_VLATCH_VEN_Pos (0UL) /*!< VEN (Bit 0) */ + #define R_GLCDC_OUT_VLATCH_VEN_Msk (0x1UL) /*!< VEN (Bitfield-Mask: 0x01) */ +/* ========================================================== SET ========================================================== */ + #define R_GLCDC_OUT_SET_ENDIANON_Pos (28UL) /*!< ENDIANON (Bit 28) */ + #define R_GLCDC_OUT_SET_ENDIANON_Msk (0x10000000UL) /*!< ENDIANON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_SET_SWAPON_Pos (24UL) /*!< SWAPON (Bit 24) */ + #define R_GLCDC_OUT_SET_SWAPON_Msk (0x1000000UL) /*!< SWAPON (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_SET_FORMAT_Pos (12UL) /*!< FORMAT (Bit 12) */ + #define R_GLCDC_OUT_SET_FORMAT_Msk (0x3000UL) /*!< FORMAT (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_SET_FRQSEL_Pos (8UL) /*!< FRQSEL (Bit 8) */ + #define R_GLCDC_OUT_SET_FRQSEL_Msk (0x300UL) /*!< FRQSEL (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_SET_DIRSEL_Pos (4UL) /*!< DIRSEL (Bit 4) */ + #define R_GLCDC_OUT_SET_DIRSEL_Msk (0x10UL) /*!< DIRSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_SET_PHASE_Pos (0UL) /*!< PHASE (Bit 0) */ + #define R_GLCDC_OUT_SET_PHASE_Msk (0x3UL) /*!< PHASE (Bitfield-Mask: 0x03) */ +/* ======================================================== BRIGHT1 ======================================================== */ + #define R_GLCDC_OUT_BRIGHT1_BRTG_Pos (0UL) /*!< BRTG (Bit 0) */ + #define R_GLCDC_OUT_BRIGHT1_BRTG_Msk (0x3ffUL) /*!< BRTG (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BRIGHT2 ======================================================== */ + #define R_GLCDC_OUT_BRIGHT2_BRTB_Pos (16UL) /*!< BRTB (Bit 16) */ + #define R_GLCDC_OUT_BRIGHT2_BRTB_Msk (0x3ff0000UL) /*!< BRTB (Bitfield-Mask: 0x3ff) */ + #define R_GLCDC_OUT_BRIGHT2_BRTR_Pos (0UL) /*!< BRTR (Bit 0) */ + #define R_GLCDC_OUT_BRIGHT2_BRTR_Msk (0x3ffUL) /*!< BRTR (Bitfield-Mask: 0x3ff) */ +/* ======================================================= CONTRAST ======================================================== */ + #define R_GLCDC_OUT_CONTRAST_CONTG_Pos (16UL) /*!< CONTG (Bit 16) */ + #define R_GLCDC_OUT_CONTRAST_CONTG_Msk (0xff0000UL) /*!< CONTG (Bitfield-Mask: 0xff) */ + #define R_GLCDC_OUT_CONTRAST_CONTB_Pos (8UL) /*!< CONTB (Bit 8) */ + #define R_GLCDC_OUT_CONTRAST_CONTB_Msk (0xff00UL) /*!< CONTB (Bitfield-Mask: 0xff) */ + #define R_GLCDC_OUT_CONTRAST_CONTR_Pos (0UL) /*!< CONTR (Bit 0) */ + #define R_GLCDC_OUT_CONTRAST_CONTR_Msk (0xffUL) /*!< CONTR (Bitfield-Mask: 0xff) */ +/* ========================================================= PDTHA ========================================================= */ + #define R_GLCDC_OUT_PDTHA_SEL_Pos (20UL) /*!< SEL (Bit 20) */ + #define R_GLCDC_OUT_PDTHA_SEL_Msk (0x300000UL) /*!< SEL (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_FORM_Pos (16UL) /*!< FORM (Bit 16) */ + #define R_GLCDC_OUT_PDTHA_FORM_Msk (0x30000UL) /*!< FORM (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PA_Pos (12UL) /*!< PA (Bit 12) */ + #define R_GLCDC_OUT_PDTHA_PA_Msk (0x3000UL) /*!< PA (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PB_Pos (8UL) /*!< PB (Bit 8) */ + #define R_GLCDC_OUT_PDTHA_PB_Msk (0x300UL) /*!< PB (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PC_Pos (4UL) /*!< PC (Bit 4) */ + #define R_GLCDC_OUT_PDTHA_PC_Msk (0x30UL) /*!< PC (Bitfield-Mask: 0x03) */ + #define R_GLCDC_OUT_PDTHA_PD_Pos (0UL) /*!< PD (Bit 0) */ + #define R_GLCDC_OUT_PDTHA_PD_Msk (0x3UL) /*!< PD (Bitfield-Mask: 0x03) */ +/* ======================================================= CLKPHASE ======================================================== */ + #define R_GLCDC_OUT_CLKPHASE_FRONTGAM_Pos (12UL) /*!< FRONTGAM (Bit 12) */ + #define R_GLCDC_OUT_CLKPHASE_FRONTGAM_Msk (0x1000UL) /*!< FRONTGAM (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_LCDEDGE_Pos (8UL) /*!< LCDEDGE (Bit 8) */ + #define R_GLCDC_OUT_CLKPHASE_LCDEDGE_Msk (0x100UL) /*!< LCDEDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON0EDGE_Pos (6UL) /*!< TCON0EDGE (Bit 6) */ + #define R_GLCDC_OUT_CLKPHASE_TCON0EDGE_Msk (0x40UL) /*!< TCON0EDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON1EDGE_Pos (5UL) /*!< TCON1EDGE (Bit 5) */ + #define R_GLCDC_OUT_CLKPHASE_TCON1EDGE_Msk (0x20UL) /*!< TCON1EDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON2EDGE_Pos (4UL) /*!< TCON2EDGE (Bit 4) */ + #define R_GLCDC_OUT_CLKPHASE_TCON2EDGE_Msk (0x10UL) /*!< TCON2EDGE (Bitfield-Mask: 0x01) */ + #define R_GLCDC_OUT_CLKPHASE_TCON3EDGE_Pos (3UL) /*!< TCON3EDGE (Bit 3) */ + #define R_GLCDC_OUT_CLKPHASE_TCON3EDGE_Msk (0x8UL) /*!< TCON3EDGE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ TCON ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TIM ========================================================== */ + #define R_GLCDC_TCON_TIM_HALF_Pos (16UL) /*!< HALF (Bit 16) */ + #define R_GLCDC_TCON_TIM_HALF_Msk (0x7ff0000UL) /*!< HALF (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_TIM_OFFSET_Pos (0UL) /*!< OFFSET (Bit 0) */ + #define R_GLCDC_TCON_TIM_OFFSET_Msk (0x7ffUL) /*!< OFFSET (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STVA1 ========================================================= */ + #define R_GLCDC_TCON_STVA1_VS_Pos (16UL) /*!< VS (Bit 16) */ + #define R_GLCDC_TCON_STVA1_VS_Msk (0x7ff0000UL) /*!< VS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STVA1_VW_Pos (0UL) /*!< VW (Bit 0) */ + #define R_GLCDC_TCON_STVA1_VW_Msk (0x7ffUL) /*!< VW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STVB1 ========================================================= */ + #define R_GLCDC_TCON_STVB1_VS_Pos (16UL) /*!< VS (Bit 16) */ + #define R_GLCDC_TCON_STVB1_VS_Msk (0x7ff0000UL) /*!< VS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STVB1_VW_Pos (0UL) /*!< VW (Bit 0) */ + #define R_GLCDC_TCON_STVB1_VW_Msk (0x7ffUL) /*!< VW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STVA2 ========================================================= */ + #define R_GLCDC_TCON_STVA2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STVA2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STVA2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STVA2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================= STVB2 ========================================================= */ + #define R_GLCDC_TCON_STVB2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STVB2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STVB2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STVB2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================= STHA1 ========================================================= */ + #define R_GLCDC_TCON_STHA1_HS_Pos (16UL) /*!< HS (Bit 16) */ + #define R_GLCDC_TCON_STHA1_HS_Msk (0x7ff0000UL) /*!< HS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STHA1_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_GLCDC_TCON_STHA1_HW_Msk (0x7ffUL) /*!< HW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STHB1 ========================================================= */ + #define R_GLCDC_TCON_STHB1_HS_Pos (16UL) /*!< HS (Bit 16) */ + #define R_GLCDC_TCON_STHB1_HS_Msk (0x7ff0000UL) /*!< HS (Bitfield-Mask: 0x7ff) */ + #define R_GLCDC_TCON_STHB1_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_GLCDC_TCON_STHB1_HW_Msk (0x7ffUL) /*!< HW (Bitfield-Mask: 0x7ff) */ +/* ========================================================= STHA2 ========================================================= */ + #define R_GLCDC_TCON_STHA2_HSSEL_Pos (8UL) /*!< HSSEL (Bit 8) */ + #define R_GLCDC_TCON_STHA2_HSSEL_Msk (0x100UL) /*!< HSSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHA2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STHA2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHA2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STHA2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================= STHB2 ========================================================= */ + #define R_GLCDC_TCON_STHB2_HSSEL_Pos (8UL) /*!< HSSEL (Bit 8) */ + #define R_GLCDC_TCON_STHB2_HSSEL_Msk (0x100UL) /*!< HSSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHB2_INV_Pos (4UL) /*!< INV (Bit 4) */ + #define R_GLCDC_TCON_STHB2_INV_Msk (0x10UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GLCDC_TCON_STHB2_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_GLCDC_TCON_STHB2_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ +/* ========================================================== DE =========================================================== */ + #define R_GLCDC_TCON_DE_INV_Pos (0UL) /*!< INV (Bit 0) */ + #define R_GLCDC_TCON_DE_INV_Msk (0x1UL) /*!< INV (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SYSCNT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== DTCTEN ========================================================= */ + #define R_GLCDC_SYSCNT_DTCTEN_L2UNDFDTC_Pos (2UL) /*!< L2UNDFDTC (Bit 2) */ + #define R_GLCDC_SYSCNT_DTCTEN_L2UNDFDTC_Msk (0x4UL) /*!< L2UNDFDTC (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_DTCTEN_L1UNDFDTC_Pos (1UL) /*!< L1UNDFDTC (Bit 1) */ + #define R_GLCDC_SYSCNT_DTCTEN_L1UNDFDTC_Msk (0x2UL) /*!< L1UNDFDTC (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_DTCTEN_VPOSDTC_Pos (0UL) /*!< VPOSDTC (Bit 0) */ + #define R_GLCDC_SYSCNT_DTCTEN_VPOSDTC_Msk (0x1UL) /*!< VPOSDTC (Bitfield-Mask: 0x01) */ +/* ========================================================= INTEN ========================================================= */ + #define R_GLCDC_SYSCNT_INTEN_L2UNDFINTEN_Pos (2UL) /*!< L2UNDFINTEN (Bit 2) */ + #define R_GLCDC_SYSCNT_INTEN_L2UNDFINTEN_Msk (0x4UL) /*!< L2UNDFINTEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_INTEN_L1UNDFINTEN_Pos (1UL) /*!< L1UNDFINTEN (Bit 1) */ + #define R_GLCDC_SYSCNT_INTEN_L1UNDFINTEN_Msk (0x2UL) /*!< L1UNDFINTEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_INTEN_VPOSINTEN_Pos (0UL) /*!< VPOSINTEN (Bit 0) */ + #define R_GLCDC_SYSCNT_INTEN_VPOSINTEN_Msk (0x1UL) /*!< VPOSINTEN (Bitfield-Mask: 0x01) */ +/* ========================================================= STCLR ========================================================= */ + #define R_GLCDC_SYSCNT_STCLR_L2UNDFCLR_Pos (2UL) /*!< L2UNDFCLR (Bit 2) */ + #define R_GLCDC_SYSCNT_STCLR_L2UNDFCLR_Msk (0x4UL) /*!< L2UNDFCLR (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STCLR_L1UNDFCLR_Pos (1UL) /*!< L1UNDFCLR (Bit 1) */ + #define R_GLCDC_SYSCNT_STCLR_L1UNDFCLR_Msk (0x2UL) /*!< L1UNDFCLR (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STCLR_VPOSCLR_Pos (0UL) /*!< VPOSCLR (Bit 0) */ + #define R_GLCDC_SYSCNT_STCLR_VPOSCLR_Msk (0x1UL) /*!< VPOSCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= STMON ========================================================= */ + #define R_GLCDC_SYSCNT_STMON_L2UNDF_Pos (2UL) /*!< L2UNDF (Bit 2) */ + #define R_GLCDC_SYSCNT_STMON_L2UNDF_Msk (0x4UL) /*!< L2UNDF (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STMON_L1UNDF_Pos (1UL) /*!< L1UNDF (Bit 1) */ + #define R_GLCDC_SYSCNT_STMON_L1UNDF_Msk (0x2UL) /*!< L1UNDF (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_STMON_VPOS_Pos (0UL) /*!< VPOS (Bit 0) */ + #define R_GLCDC_SYSCNT_STMON_VPOS_Msk (0x1UL) /*!< VPOS (Bitfield-Mask: 0x01) */ +/* ======================================================= PANEL_CLK ======================================================= */ + #define R_GLCDC_SYSCNT_PANEL_CLK_VER_Pos (16UL) /*!< VER (Bit 16) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_VER_Msk (0xffff0000UL) /*!< VER (Bitfield-Mask: 0xffff) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_PIXSEL_Pos (12UL) /*!< PIXSEL (Bit 12) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_PIXSEL_Msk (0x1000UL) /*!< PIXSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKSEL_Pos (8UL) /*!< CLKSEL (Bit 8) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKSEL_Msk (0x100UL) /*!< CLKSEL (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKEN_Pos (6UL) /*!< CLKEN (Bit 6) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_CLKEN_Msk (0x40UL) /*!< CLKEN (Bitfield-Mask: 0x01) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_DCDR_Pos (0UL) /*!< DCDR (Bit 0) */ + #define R_GLCDC_SYSCNT_PANEL_CLK_DCDR_Msk (0x3fUL) /*!< DCDR (Bitfield-Mask: 0x3f) */ + +/* =========================================================================================================================== */ +/* ================ SAR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== L =========================================================== */ + #define R_IIC0_SAR_L_SVA_Pos (0UL) /*!< SVA (Bit 0) */ + #define R_IIC0_SAR_L_SVA_Msk (0xffUL) /*!< SVA (Bitfield-Mask: 0xff) */ +/* =========================================================== U =========================================================== */ + #define R_IIC0_SAR_U_SVA9_Pos (2UL) /*!< SVA9 (Bit 2) */ + #define R_IIC0_SAR_U_SVA9_Msk (0x4UL) /*!< SVA9 (Bitfield-Mask: 0x01) */ + #define R_IIC0_SAR_U_SVA8_Pos (1UL) /*!< SVA8 (Bit 1) */ + #define R_IIC0_SAR_U_SVA8_Msk (0x2UL) /*!< SVA8 (Bitfield-Mask: 0x01) */ + #define R_IIC0_SAR_U_FS_Pos (0UL) /*!< FS (Bit 0) */ + #define R_IIC0_SAR_U_FS_Msk (0x1UL) /*!< FS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ REGION ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AC =========================================================== */ + #define R_MPU_MMPU_GROUP_REGION_AC_PP_Pos (3UL) /*!< PP (Bit 3) */ + #define R_MPU_MMPU_GROUP_REGION_AC_PP_Msk (0x8UL) /*!< PP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_GROUP_REGION_AC_WP_Pos (2UL) /*!< WP (Bit 2) */ + #define R_MPU_MMPU_GROUP_REGION_AC_WP_Msk (0x4UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_GROUP_REGION_AC_RP_Pos (1UL) /*!< RP (Bit 1) */ + #define R_MPU_MMPU_GROUP_REGION_AC_RP_Msk (0x2UL) /*!< RP (Bitfield-Mask: 0x01) */ + #define R_MPU_MMPU_GROUP_REGION_AC_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_MMPU_GROUP_REGION_AC_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* =========================================================== S =========================================================== */ + #define R_MPU_MMPU_GROUP_REGION_S_MMPUS_Pos (0UL) /*!< MMPUS (Bit 0) */ + #define R_MPU_MMPU_GROUP_REGION_S_MMPUS_Msk (0xffffffffUL) /*!< MMPUS (Bitfield-Mask: 0xffffffff) */ +/* =========================================================== E =========================================================== */ + #define R_MPU_MMPU_GROUP_REGION_E_MMPUE_Pos (0UL) /*!< MMPUE (Bit 0) */ + #define R_MPU_MMPU_GROUP_REGION_E_MMPUE_Msk (0xffffffffUL) /*!< MMPUE (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ GROUP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== EN =========================================================== */ + #define R_MPU_MMPU_GROUP_EN_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_EN_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_EN_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_MMPU_GROUP_EN_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ========================================================= ENPT ========================================================== */ + #define R_MPU_MMPU_GROUP_ENPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_ENPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_ENPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_GROUP_ENPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ========================================================== RPT ========================================================== */ + #define R_MPU_MMPU_GROUP_RPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_RPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_RPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_GROUP_RPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ======================================================== RPT_SEC ======================================================== */ + #define R_MPU_MMPU_GROUP_RPT_SEC_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_GROUP_RPT_SEC_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_GROUP_RPT_SEC_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_GROUP_RPT_SEC_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== OAD ========================================================== */ + #define R_MPU_SPMON_SP_OAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_SPMON_SP_OAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_SPMON_SP_OAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_MPU_SPMON_SP_OAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ========================================================== CTL ========================================================== */ + #define R_MPU_SPMON_SP_CTL_ERROR_Pos (8UL) /*!< ERROR (Bit 8) */ + #define R_MPU_SPMON_SP_CTL_ERROR_Msk (0x100UL) /*!< ERROR (Bitfield-Mask: 0x01) */ + #define R_MPU_SPMON_SP_CTL_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_MPU_SPMON_SP_CTL_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ========================================================== PT =========================================================== */ + #define R_MPU_SPMON_SP_PT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_SPMON_SP_PT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_SPMON_SP_PT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_SPMON_SP_PT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ========================================================== SA =========================================================== */ + #define R_MPU_SPMON_SP_SA_MSPMPUSA_Pos (0UL) /*!< MSPMPUSA (Bit 0) */ + #define R_MPU_SPMON_SP_SA_MSPMPUSA_Msk (0xffffffffUL) /*!< MSPMPUSA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== EA =========================================================== */ + #define R_MPU_SPMON_SP_EA_MSPMPUEA_Pos (0UL) /*!< MSPMPUEA (Bit 0) */ + #define R_MPU_SPMON_SP_EA_MSPMPUEA_Msk (0xffffffffUL) /*!< MSPMPUEA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ PIN ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= PmnPFS_BY ======================================================= */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PIDR_Pos (1UL) /*!< PIDR (Bit 1) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PIDR_Msk (0x2UL) /*!< PIDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PDR_Pos (2UL) /*!< PDR (Bit 2) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PDR_Msk (0x4UL) /*!< PDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PCR_Pos (4UL) /*!< PCR (Bit 4) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_PCR_Msk (0x10UL) /*!< PCR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_NCODR_Pos (6UL) /*!< NCODR (Bit 6) */ + #define R_PFS_PORT_PIN_PmnPFS_BY_NCODR_Msk (0x40UL) /*!< NCODR (Bitfield-Mask: 0x01) */ +/* ======================================================= PmnPFS_HA ======================================================= */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PIDR_Pos (1UL) /*!< PIDR (Bit 1) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PIDR_Msk (0x2UL) /*!< PIDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PDR_Pos (2UL) /*!< PDR (Bit 2) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PDR_Msk (0x4UL) /*!< PDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PCR_Pos (4UL) /*!< PCR (Bit 4) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_PCR_Msk (0x10UL) /*!< PCR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_NCODR_Pos (6UL) /*!< NCODR (Bit 6) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_NCODR_Msk (0x40UL) /*!< NCODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_DSCR_Pos (10UL) /*!< DSCR (Bit 10) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_DSCR_Msk (0xc00UL) /*!< DSCR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_EOFR_Pos (12UL) /*!< EOFR (Bit 12) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_EOFR_Msk (0x3000UL) /*!< EOFR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ISEL_Pos (14UL) /*!< ISEL (Bit 14) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ISEL_Msk (0x4000UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ASEL_Pos (15UL) /*!< ASEL (Bit 15) */ + #define R_PFS_PORT_PIN_PmnPFS_HA_ASEL_Msk (0x8000UL) /*!< ASEL (Bitfield-Mask: 0x01) */ +/* ======================================================== PmnPFS ========================================================= */ + #define R_PFS_PORT_PIN_PmnPFS_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PFS_PORT_PIN_PmnPFS_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PIDR_Pos (1UL) /*!< PIDR (Bit 1) */ + #define R_PFS_PORT_PIN_PmnPFS_PIDR_Msk (0x2UL) /*!< PIDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PDR_Pos (2UL) /*!< PDR (Bit 2) */ + #define R_PFS_PORT_PIN_PmnPFS_PDR_Msk (0x4UL) /*!< PDR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PCR_Pos (4UL) /*!< PCR (Bit 4) */ + #define R_PFS_PORT_PIN_PmnPFS_PCR_Msk (0x10UL) /*!< PCR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_NCODR_Pos (6UL) /*!< NCODR (Bit 6) */ + #define R_PFS_PORT_PIN_PmnPFS_NCODR_Msk (0x40UL) /*!< NCODR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_DSCR_Pos (10UL) /*!< DSCR (Bit 10) */ + #define R_PFS_PORT_PIN_PmnPFS_DSCR_Msk (0xc00UL) /*!< DSCR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_EOFR_Pos (12UL) /*!< EOFR (Bit 12) */ + #define R_PFS_PORT_PIN_PmnPFS_EOFR_Msk (0x3000UL) /*!< EOFR (Bitfield-Mask: 0x03) */ + #define R_PFS_PORT_PIN_PmnPFS_ISEL_Pos (14UL) /*!< ISEL (Bit 14) */ + #define R_PFS_PORT_PIN_PmnPFS_ISEL_Msk (0x4000UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_ASEL_Pos (15UL) /*!< ASEL (Bit 15) */ + #define R_PFS_PORT_PIN_PmnPFS_ASEL_Msk (0x8000UL) /*!< ASEL (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PMR_Pos (16UL) /*!< PMR (Bit 16) */ + #define R_PFS_PORT_PIN_PmnPFS_PMR_Msk (0x10000UL) /*!< PMR (Bitfield-Mask: 0x01) */ + #define R_PFS_PORT_PIN_PmnPFS_PSEL_Pos (24UL) /*!< PSEL (Bit 24) */ + #define R_PFS_PORT_PIN_PmnPFS_PSEL_Msk (0x1f000000UL) /*!< PSEL (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ PORT ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ PMSAR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PMSAR ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ RTCCR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= RTCCR ========================================================= */ + #define R_RTC_RTCCR_RTCCR_TCEN_Pos (7UL) /*!< TCEN (Bit 7) */ + #define R_RTC_RTCCR_RTCCR_TCEN_Msk (0x80UL) /*!< TCEN (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCCR_RTCCR_TCNF_Pos (4UL) /*!< TCNF (Bit 4) */ + #define R_RTC_RTCCR_RTCCR_TCNF_Msk (0x30UL) /*!< TCNF (Bitfield-Mask: 0x03) */ + #define R_RTC_RTCCR_RTCCR_TCST_Pos (2UL) /*!< TCST (Bit 2) */ + #define R_RTC_RTCCR_RTCCR_TCST_Msk (0x4UL) /*!< TCST (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCCR_RTCCR_TCCT_Pos (0UL) /*!< TCCT (Bit 0) */ + #define R_RTC_RTCCR_RTCCR_TCCT_Msk (0x3UL) /*!< TCCT (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ CP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= RSEC ========================================================== */ + #define R_RTC_CP_RSEC_SEC10_Pos (4UL) /*!< SEC10 (Bit 4) */ + #define R_RTC_CP_RSEC_SEC10_Msk (0x70UL) /*!< SEC10 (Bitfield-Mask: 0x07) */ + #define R_RTC_CP_RSEC_SEC1_Pos (0UL) /*!< SEC1 (Bit 0) */ + #define R_RTC_CP_RSEC_SEC1_Msk (0xfUL) /*!< SEC1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT0 ========================================================= */ + #define R_RTC_CP_BCNT0_BCNT0CP_Pos (0UL) /*!< BCNT0CP (Bit 0) */ + #define R_RTC_CP_BCNT0_BCNT0CP_Msk (0xffUL) /*!< BCNT0CP (Bitfield-Mask: 0xff) */ +/* ========================================================= RMIN ========================================================== */ + #define R_RTC_CP_RMIN_MIN10_Pos (4UL) /*!< MIN10 (Bit 4) */ + #define R_RTC_CP_RMIN_MIN10_Msk (0x70UL) /*!< MIN10 (Bitfield-Mask: 0x07) */ + #define R_RTC_CP_RMIN_MIN1_Pos (0UL) /*!< MIN1 (Bit 0) */ + #define R_RTC_CP_RMIN_MIN1_Msk (0xfUL) /*!< MIN1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT1 ========================================================= */ + #define R_RTC_CP_BCNT1_BCNT1CP_Pos (0UL) /*!< BCNT1CP (Bit 0) */ + #define R_RTC_CP_BCNT1_BCNT1CP_Msk (0xffUL) /*!< BCNT1CP (Bitfield-Mask: 0xff) */ +/* ========================================================== RHR ========================================================== */ + #define R_RTC_CP_RHR_PM_Pos (6UL) /*!< PM (Bit 6) */ + #define R_RTC_CP_RHR_PM_Msk (0x40UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_RTC_CP_RHR_HR10_Pos (4UL) /*!< HR10 (Bit 4) */ + #define R_RTC_CP_RHR_HR10_Msk (0x30UL) /*!< HR10 (Bitfield-Mask: 0x03) */ + #define R_RTC_CP_RHR_HR1_Pos (0UL) /*!< HR1 (Bit 0) */ + #define R_RTC_CP_RHR_HR1_Msk (0xfUL) /*!< HR1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT2 ========================================================= */ + #define R_RTC_CP_BCNT2_BCNT2CP_Pos (0UL) /*!< BCNT2CP (Bit 0) */ + #define R_RTC_CP_BCNT2_BCNT2CP_Msk (0xffUL) /*!< BCNT2CP (Bitfield-Mask: 0xff) */ +/* ========================================================= RDAY ========================================================== */ + #define R_RTC_CP_RDAY_DATE10_Pos (4UL) /*!< DATE10 (Bit 4) */ + #define R_RTC_CP_RDAY_DATE10_Msk (0x30UL) /*!< DATE10 (Bitfield-Mask: 0x03) */ + #define R_RTC_CP_RDAY_DATE1_Pos (0UL) /*!< DATE1 (Bit 0) */ + #define R_RTC_CP_RDAY_DATE1_Msk (0xfUL) /*!< DATE1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT3 ========================================================= */ + #define R_RTC_CP_BCNT3_BCNT3CP_Pos (0UL) /*!< BCNT3CP (Bit 0) */ + #define R_RTC_CP_BCNT3_BCNT3CP_Msk (0xffUL) /*!< BCNT3CP (Bitfield-Mask: 0xff) */ +/* ========================================================= RMON ========================================================== */ + #define R_RTC_CP_RMON_MON10_Pos (4UL) /*!< MON10 (Bit 4) */ + #define R_RTC_CP_RMON_MON10_Msk (0x10UL) /*!< MON10 (Bitfield-Mask: 0x01) */ + #define R_RTC_CP_RMON_MON1_Pos (0UL) /*!< MON1 (Bit 0) */ + #define R_RTC_CP_RMON_MON1_Msk (0xfUL) /*!< MON1 (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ PIPE_TR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== E =========================================================== */ + #define R_USB_FS0_PIPE_TR_E_TRENB_Pos (9UL) /*!< TRENB (Bit 9) */ + #define R_USB_FS0_PIPE_TR_E_TRENB_Msk (0x200UL) /*!< TRENB (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_TR_E_TRCLR_Pos (8UL) /*!< TRCLR (Bit 8) */ + #define R_USB_FS0_PIPE_TR_E_TRCLR_Msk (0x100UL) /*!< TRCLR (Bitfield-Mask: 0x01) */ +/* =========================================================== N =========================================================== */ + #define R_USB_FS0_PIPE_TR_N_TRNCNT_Pos (0UL) /*!< TRNCNT (Bit 0) */ + #define R_USB_FS0_PIPE_TR_N_TRNCNT_Msk (0xffffUL) /*!< TRNCNT (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ PIPE_TR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== E =========================================================== */ + #define R_USB_HS0_PIPE_TR_E_TRENB_Pos (9UL) /*!< TRENB (Bit 9) */ + #define R_USB_HS0_PIPE_TR_E_TRENB_Msk (0x200UL) /*!< TRENB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_TR_E_TRCLR_Pos (8UL) /*!< TRCLR (Bit 8) */ + #define R_USB_HS0_PIPE_TR_E_TRCLR_Msk (0x100UL) /*!< TRCLR (Bitfield-Mask: 0x01) */ +/* =========================================================== N =========================================================== */ + #define R_USB_HS0_PIPE_TR_N_TRNCNT_Pos (0UL) /*!< TRNCNT (Bit 0) */ + #define R_USB_HS0_PIPE_TR_N_TRNCNT_Msk (0xffffUL) /*!< TRNCNT (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ CMCFGCS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMCFG0 ========================================================= */ + #define R_XSPI_CMCFGCS_CMCFG0_FFMT_Pos (0UL) /*!< FFMT (Bit 0) */ + #define R_XSPI_CMCFGCS_CMCFG0_FFMT_Msk (0x3UL) /*!< FFMT (Bitfield-Mask: 0x03) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDSIZE_Pos (2UL) /*!< ADDSIZE (Bit 2) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDSIZE_Msk (0xcUL) /*!< ADDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI_CMCFGCS_CMCFG0_WPBSTMD_Pos (4UL) /*!< WPBSTMD (Bit 4) */ + #define R_XSPI_CMCFGCS_CMCFG0_WPBSTMD_Msk (0x10UL) /*!< WPBSTMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_CMCFGCS_CMCFG0_ARYAMD_Pos (5UL) /*!< ARYAMD (Bit 5) */ + #define R_XSPI_CMCFGCS_CMCFG0_ARYAMD_Msk (0x20UL) /*!< ARYAMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPEN_Pos (16UL) /*!< ADDRPEN (Bit 16) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPEN_Msk (0xff0000UL) /*!< ADDRPEN (Bitfield-Mask: 0xff) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPCD_Pos (24UL) /*!< ADDRPCD (Bit 24) */ + #define R_XSPI_CMCFGCS_CMCFG0_ADDRPCD_Msk (0xff000000UL) /*!< ADDRPCD (Bitfield-Mask: 0xff) */ +/* ======================================================== CMCFG1 ========================================================= */ + #define R_XSPI_CMCFGCS_CMCFG1_RDCMD_Pos (0UL) /*!< RDCMD (Bit 0) */ + #define R_XSPI_CMCFGCS_CMCFG1_RDCMD_Msk (0xffffUL) /*!< RDCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI_CMCFGCS_CMCFG1_RDLATE_Pos (16UL) /*!< RDLATE (Bit 16) */ + #define R_XSPI_CMCFGCS_CMCFG1_RDLATE_Msk (0x1f0000UL) /*!< RDLATE (Bitfield-Mask: 0x1f) */ +/* ======================================================== CMCFG2 ========================================================= */ + #define R_XSPI_CMCFGCS_CMCFG2_WRCMD_Pos (0UL) /*!< WRCMD (Bit 0) */ + #define R_XSPI_CMCFGCS_CMCFG2_WRCMD_Msk (0xffffUL) /*!< WRCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI_CMCFGCS_CMCFG2_WRLATE_Pos (16UL) /*!< WRLATE (Bit 16) */ + #define R_XSPI_CMCFGCS_CMCFG2_WRLATE_Msk (0x1f0000UL) /*!< WRLATE (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ CDBUF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CDT ========================================================== */ + #define R_XSPI_CDBUF_CDT_CMDSIZE_Pos (0UL) /*!< CMDSIZE (Bit 0) */ + #define R_XSPI_CDBUF_CDT_CMDSIZE_Msk (0x3UL) /*!< CMDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI_CDBUF_CDT_ADDSIZE_Pos (2UL) /*!< ADDSIZE (Bit 2) */ + #define R_XSPI_CDBUF_CDT_ADDSIZE_Msk (0x1cUL) /*!< ADDSIZE (Bitfield-Mask: 0x07) */ + #define R_XSPI_CDBUF_CDT_DATASIZE_Pos (5UL) /*!< DATASIZE (Bit 5) */ + #define R_XSPI_CDBUF_CDT_DATASIZE_Msk (0x1e0UL) /*!< DATASIZE (Bitfield-Mask: 0x0f) */ + #define R_XSPI_CDBUF_CDT_LATE_Pos (9UL) /*!< LATE (Bit 9) */ + #define R_XSPI_CDBUF_CDT_LATE_Msk (0x3e00UL) /*!< LATE (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CDBUF_CDT_TRTYPE_Pos (15UL) /*!< TRTYPE (Bit 15) */ + #define R_XSPI_CDBUF_CDT_TRTYPE_Msk (0x8000UL) /*!< TRTYPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDBUF_CDT_CMD_Pos (16UL) /*!< CMD (Bit 16) */ + #define R_XSPI_CDBUF_CDT_CMD_Msk (0xffff0000UL) /*!< CMD (Bitfield-Mask: 0xffff) */ +/* ========================================================== CDA ========================================================== */ + #define R_XSPI_CDBUF_CDA_ADD_Pos (0UL) /*!< ADD (Bit 0) */ + #define R_XSPI_CDBUF_CDA_ADD_Msk (0xffffffffUL) /*!< ADD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDD0 ========================================================== */ + #define R_XSPI_CDBUF_CDD0_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_XSPI_CDBUF_CDD0_DATA_Msk (0xffffffffUL) /*!< DATA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDD1 ========================================================== */ + #define R_XSPI_CDBUF_CDD1_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_XSPI_CDBUF_CDD1_DATA_Msk (0xffffffffUL) /*!< DATA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CCCTLCS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CCCTL0 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL0_CAEN_Pos (0UL) /*!< CAEN (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL0_CAEN_Msk (0x1UL) /*!< CAEN (Bitfield-Mask: 0x01) */ + #define R_XSPI_CCCTLCS_CCCTL0_CANOWR_Pos (1UL) /*!< CANOWR (Bit 1) */ + #define R_XSPI_CCCTLCS_CCCTL0_CANOWR_Msk (0x2UL) /*!< CANOWR (Bitfield-Mask: 0x01) */ + #define R_XSPI_CCCTLCS_CCCTL0_CAITV_Pos (8UL) /*!< CAITV (Bit 8) */ + #define R_XSPI_CCCTLCS_CCCTL0_CAITV_Msk (0x1f00UL) /*!< CAITV (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTSTA_Pos (16UL) /*!< CASFTSTA (Bit 16) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTSTA_Msk (0x1f0000UL) /*!< CASFTSTA (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTEND_Pos (24UL) /*!< CASFTEND (Bit 24) */ + #define R_XSPI_CCCTLCS_CCCTL0_CASFTEND_Msk (0x1f000000UL) /*!< CASFTEND (Bitfield-Mask: 0x1f) */ +/* ======================================================== CCCTL1 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL1_CACMDSIZE_Pos (0UL) /*!< CACMDSIZE (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL1_CACMDSIZE_Msk (0x3UL) /*!< CACMDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAADDSIZE_Pos (2UL) /*!< CAADDSIZE (Bit 2) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAADDSIZE_Msk (0x1cUL) /*!< CAADDSIZE (Bitfield-Mask: 0x07) */ + #define R_XSPI_CCCTLCS_CCCTL1_CADATASIZE_Pos (5UL) /*!< CADATASIZE (Bit 5) */ + #define R_XSPI_CCCTLCS_CCCTL1_CADATASIZE_Msk (0x1e0UL) /*!< CADATASIZE (Bitfield-Mask: 0x0f) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAWRLATE_Pos (16UL) /*!< CAWRLATE (Bit 16) */ + #define R_XSPI_CCCTLCS_CCCTL1_CAWRLATE_Msk (0x1f0000UL) /*!< CAWRLATE (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CCCTLCS_CCCTL1_CARDLATE_Pos (24UL) /*!< CARDLATE (Bit 24) */ + #define R_XSPI_CCCTLCS_CCCTL1_CARDLATE_Msk (0x1f000000UL) /*!< CARDLATE (Bitfield-Mask: 0x1f) */ +/* ======================================================== CCCTL2 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL2_CAWRCMD_Pos (0UL) /*!< CAWRCMD (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL2_CAWRCMD_Msk (0xffffUL) /*!< CAWRCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI_CCCTLCS_CCCTL2_CARDCMD_Pos (16UL) /*!< CARDCMD (Bit 16) */ + #define R_XSPI_CCCTLCS_CCCTL2_CARDCMD_Msk (0xffff0000UL) /*!< CARDCMD (Bitfield-Mask: 0xffff) */ +/* ======================================================== CCCTL3 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL3_CAADD_Pos (0UL) /*!< CAADD (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL3_CAADD_Msk (0xffffffffUL) /*!< CAADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL4 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL4_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL4_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL5 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL5_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL5_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL6 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL6_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL6_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL7 ========================================================= */ + #define R_XSPI_CCCTLCS_CCCTL7_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI_CCCTLCS_CCCTL7_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CTRL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= AGTCR ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMBF_Pos (7UL) /*!< TCMBF (Bit 7) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMBF_Msk (0x80UL) /*!< TCMBF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMAF_Pos (6UL) /*!< TCMAF (Bit 6) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCMAF_Msk (0x40UL) /*!< TCMAF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TUNDF_Pos (5UL) /*!< TUNDF (Bit 5) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TUNDF_Msk (0x20UL) /*!< TUNDF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TEDGF_Pos (4UL) /*!< TEDGF (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TEDGF_Msk (0x10UL) /*!< TEDGF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTOP_Pos (2UL) /*!< TSTOP (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTOP_Msk (0x4UL) /*!< TSTOP (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCSTF_Pos (1UL) /*!< TCSTF (Bit 1) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TCSTF_Msk (0x2UL) /*!< TCSTF (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTART_Pos (0UL) /*!< TSTART (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTCR_TSTART_Msk (0x1UL) /*!< TSTART (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTMR1 ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TCK_Pos (4UL) /*!< TCK (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TCK_Msk (0x70UL) /*!< TCK (Bitfield-Mask: 0x07) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TEDGPL_Pos (3UL) /*!< TEDGPL (Bit 3) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TEDGPL_Msk (0x8UL) /*!< TEDGPL (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TMOD_Pos (0UL) /*!< TMOD (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTMR1_TMOD_Msk (0x7UL) /*!< TMOD (Bitfield-Mask: 0x07) */ +/* ======================================================== AGTMR2 ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_LPM_Pos (7UL) /*!< LPM (Bit 7) */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_LPM_Msk (0x80UL) /*!< LPM (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTMR2_CKS_Msk (0x7UL) /*!< CKS (Bitfield-Mask: 0x07) */ +/* ===================================================== AGTIOSEL_ALT ====================================================== */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_TIES_Pos (4UL) /*!< TIES (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_TIES_Msk (0x10UL) /*!< TIES (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_ALT_SEL_Msk (0x3UL) /*!< SEL (Bitfield-Mask: 0x03) */ +/* ======================================================== AGTIOC ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIOGT_Pos (6UL) /*!< TIOGT (Bit 6) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIOGT_Msk (0xc0UL) /*!< TIOGT (Bitfield-Mask: 0x03) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIPF_Pos (4UL) /*!< TIPF (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TIPF_Msk (0x30UL) /*!< TIPF (Bitfield-Mask: 0x03) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TOE_Pos (2UL) /*!< TOE (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TOE_Msk (0x4UL) /*!< TOE (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TEDGSEL_Pos (0UL) /*!< TEDGSEL (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTIOC_TEDGSEL_Msk (0x1UL) /*!< TEDGSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTISR ========================================================= */ + #define R_AGTX0_AGT16_CTRL_AGTISR_EEPS_Pos (2UL) /*!< EEPS (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTISR_EEPS_Msk (0x4UL) /*!< EEPS (Bitfield-Mask: 0x01) */ +/* ======================================================== AGTCMSR ======================================================== */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLB_Pos (6UL) /*!< TOPOLB (Bit 6) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLB_Msk (0x40UL) /*!< TOPOLB (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEB_Pos (5UL) /*!< TOEB (Bit 5) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEB_Msk (0x20UL) /*!< TOEB (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEB_Pos (4UL) /*!< TCMEB (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEB_Msk (0x10UL) /*!< TCMEB (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLA_Pos (2UL) /*!< TOPOLA (Bit 2) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOPOLA_Msk (0x4UL) /*!< TOPOLA (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEA_Pos (1UL) /*!< TOEA (Bit 1) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TOEA_Msk (0x2UL) /*!< TOEA (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEA_Pos (0UL) /*!< TCMEA (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTCMSR_TCMEA_Msk (0x1UL) /*!< TCMEA (Bitfield-Mask: 0x01) */ +/* ======================================================= AGTIOSEL ======================================================== */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_TIES_Pos (4UL) /*!< TIES (Bit 4) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_TIES_Msk (0x10UL) /*!< TIES (Bitfield-Mask: 0x01) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_AGTX0_AGT16_CTRL_AGTIOSEL_SEL_Msk (0x3UL) /*!< SEL (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ AGT16 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AGT ========================================================== */ + #define R_AGTX0_AGT16_AGT_AGT_Pos (0UL) /*!< AGT (Bit 0) */ + #define R_AGTX0_AGT16_AGT_AGT_Msk (0xffffUL) /*!< AGT (Bitfield-Mask: 0xffff) */ +/* ======================================================== AGTCMA ========================================================= */ + #define R_AGTX0_AGT16_AGTCMA_AGTCMA_Pos (0UL) /*!< AGTCMA (Bit 0) */ + #define R_AGTX0_AGT16_AGTCMA_AGTCMA_Msk (0xffffUL) /*!< AGTCMA (Bitfield-Mask: 0xffff) */ +/* ======================================================== AGTCMB ========================================================= */ + #define R_AGTX0_AGT16_AGTCMB_AGTCMB_Pos (0UL) /*!< AGTCMB (Bit 0) */ + #define R_AGTX0_AGT16_AGTCMB_AGTCMB_Msk (0xffffUL) /*!< AGTCMB (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ AGT32 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== AGT ========================================================== */ + #define R_AGTX0_AGT32_AGT_AGT_Pos (0UL) /*!< AGT (Bit 0) */ + #define R_AGTX0_AGT32_AGT_AGT_Msk (0xffffffffUL) /*!< AGT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== AGTCMA ========================================================= */ + #define R_AGTX0_AGT32_AGTCMA_AGTCMA_Pos (0UL) /*!< AGTCMA (Bit 0) */ + #define R_AGTX0_AGT32_AGTCMA_AGTCMA_Msk (0xffffffffUL) /*!< AGTCMA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== AGTCMB ========================================================= */ + #define R_AGTX0_AGT32_AGTCMB_AGTCMB_Pos (0UL) /*!< AGTCMB (Bit 0) */ + #define R_AGTX0_AGT32_AGTCMB_AGTCMB_Msk (0xffffffffUL) /*!< AGTCMB (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CFGD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CFGD_L ========================================================= */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_L_CDLK_Pos (0UL) /*!< CDLK (Bit 0) */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_L_CDLK_Msk (0x1UL) /*!< CDLK (Bitfield-Mask: 0x01) */ +/* ======================================================== CFGD_H ========================================================= */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_H_CDLK_Pos (0UL) /*!< CDLK (Bit 0) */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD_CFGD_H_CDLK_Msk (0x1UL) /*!< CDLK (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ CFGDLOCK ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CFGD2 ========================================================= */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD2_CDLK_Pos (0UL) /*!< CDLK (Bit 0) */ + #define R_OFS_DATAFLASH_CFGDLOCK_CFGD2_CDLK_Msk (0x1UL) /*!< CDLK (Bitfield-Mask: 0x01) */ + +/** @} */ /* End of group PosMask_clusters */ + +/* =========================================================================================================================== */ +/* ================ Pos/Mask Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup PosMask_peripherals + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ R_ACMPHS0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMPCTL ========================================================= */ + #define R_ACMPHS0_CMPCTL_HCMPON_Pos (7UL) /*!< HCMPON (Bit 7) */ + #define R_ACMPHS0_CMPCTL_HCMPON_Msk (0x80UL) /*!< HCMPON (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CMPCTL_CDFS_Pos (5UL) /*!< CDFS (Bit 5) */ + #define R_ACMPHS0_CMPCTL_CDFS_Msk (0x60UL) /*!< CDFS (Bitfield-Mask: 0x03) */ + #define R_ACMPHS0_CMPCTL_CEG_Pos (3UL) /*!< CEG (Bit 3) */ + #define R_ACMPHS0_CMPCTL_CEG_Msk (0x18UL) /*!< CEG (Bitfield-Mask: 0x03) */ + #define R_ACMPHS0_CMPCTL_CSTEN_Pos (2UL) /*!< CSTEN (Bit 2) */ + #define R_ACMPHS0_CMPCTL_CSTEN_Msk (0x4UL) /*!< CSTEN (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CMPCTL_COE_Pos (1UL) /*!< COE (Bit 1) */ + #define R_ACMPHS0_CMPCTL_COE_Msk (0x2UL) /*!< COE (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CMPCTL_CINV_Pos (0UL) /*!< CINV (Bit 0) */ + #define R_ACMPHS0_CMPCTL_CINV_Msk (0x1UL) /*!< CINV (Bitfield-Mask: 0x01) */ +/* ======================================================== CMPSEL0 ======================================================== */ + #define R_ACMPHS0_CMPSEL0_CMPSEL_Pos (0UL) /*!< CMPSEL (Bit 0) */ + #define R_ACMPHS0_CMPSEL0_CMPSEL_Msk (0xfUL) /*!< CMPSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== CMPSEL1 ======================================================== */ + #define R_ACMPHS0_CMPSEL1_CRVS_Pos (0UL) /*!< CRVS (Bit 0) */ + #define R_ACMPHS0_CMPSEL1_CRVS_Msk (0x3fUL) /*!< CRVS (Bitfield-Mask: 0x3f) */ +/* ======================================================== CMPMON ========================================================= */ + #define R_ACMPHS0_CMPMON_CMPMON_Pos (0UL) /*!< CMPMON (Bit 0) */ + #define R_ACMPHS0_CMPMON_CMPMON_Msk (0x1UL) /*!< CMPMON (Bitfield-Mask: 0x01) */ +/* ========================================================= CPIOC ========================================================= */ + #define R_ACMPHS0_CPIOC_VREFEN_Pos (7UL) /*!< VREFEN (Bit 7) */ + #define R_ACMPHS0_CPIOC_VREFEN_Msk (0x80UL) /*!< VREFEN (Bitfield-Mask: 0x01) */ + #define R_ACMPHS0_CPIOC_CPOE_Pos (0UL) /*!< CPOE (Bit 0) */ + #define R_ACMPHS0_CPIOC_CPOE_Msk (0x1UL) /*!< CPOE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ADCSR ========================================================= */ + #define R_ADC0_ADCSR_ADST_Pos (15UL) /*!< ADST (Bit 15) */ + #define R_ADC0_ADCSR_ADST_Msk (0x8000UL) /*!< ADST (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_ADCS_Pos (13UL) /*!< ADCS (Bit 13) */ + #define R_ADC0_ADCSR_ADCS_Msk (0x6000UL) /*!< ADCS (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADCSR_ADHSC_Pos (10UL) /*!< ADHSC (Bit 10) */ + #define R_ADC0_ADCSR_ADHSC_Msk (0x400UL) /*!< ADHSC (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_TRGE_Pos (9UL) /*!< TRGE (Bit 9) */ + #define R_ADC0_ADCSR_TRGE_Msk (0x200UL) /*!< TRGE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_EXTRG_Pos (8UL) /*!< EXTRG (Bit 8) */ + #define R_ADC0_ADCSR_EXTRG_Msk (0x100UL) /*!< EXTRG (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_DBLE_Pos (7UL) /*!< DBLE (Bit 7) */ + #define R_ADC0_ADCSR_DBLE_Msk (0x80UL) /*!< DBLE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_GBADIE_Pos (6UL) /*!< GBADIE (Bit 6) */ + #define R_ADC0_ADCSR_GBADIE_Msk (0x40UL) /*!< GBADIE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCSR_DBLANS_Pos (0UL) /*!< DBLANS (Bit 0) */ + #define R_ADC0_ADCSR_DBLANS_Msk (0x1fUL) /*!< DBLANS (Bitfield-Mask: 0x1f) */ + #define R_ADC0_ADCSR_ADIE_Pos (12UL) /*!< ADIE (Bit 12) */ + #define R_ADC0_ADCSR_ADIE_Msk (0x1000UL) /*!< ADIE (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANSA ========================================================= */ + #define R_ADC0_ADANSA_ANSA_Pos (0UL) /*!< ANSA (Bit 0) */ + #define R_ADC0_ADANSA_ANSA_Msk (0x1UL) /*!< ANSA (Bitfield-Mask: 0x01) */ +/* ========================================================= ADADS ========================================================= */ + #define R_ADC0_ADADS_ADS_Pos (0UL) /*!< ADS (Bit 0) */ + #define R_ADC0_ADADS_ADS_Msk (0x1UL) /*!< ADS (Bitfield-Mask: 0x01) */ +/* ========================================================= ADADC ========================================================= */ + #define R_ADC0_ADADC_ADC_Pos (0UL) /*!< ADC (Bit 0) */ + #define R_ADC0_ADADC_ADC_Msk (0x7UL) /*!< ADC (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADADC_AVEE_Pos (7UL) /*!< AVEE (Bit 7) */ + #define R_ADC0_ADADC_AVEE_Msk (0x80UL) /*!< AVEE (Bitfield-Mask: 0x01) */ +/* ========================================================= ADCER ========================================================= */ + #define R_ADC0_ADCER_ADRFMT_Pos (15UL) /*!< ADRFMT (Bit 15) */ + #define R_ADC0_ADCER_ADRFMT_Msk (0x8000UL) /*!< ADRFMT (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_ADINV_Pos (14UL) /*!< ADINV (Bit 14) */ + #define R_ADC0_ADCER_ADINV_Msk (0x4000UL) /*!< ADINV (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_DIAGM_Pos (11UL) /*!< DIAGM (Bit 11) */ + #define R_ADC0_ADCER_DIAGM_Msk (0x800UL) /*!< DIAGM (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_DIAGLD_Pos (10UL) /*!< DIAGLD (Bit 10) */ + #define R_ADC0_ADCER_DIAGLD_Msk (0x400UL) /*!< DIAGLD (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_DIAGVAL_Pos (8UL) /*!< DIAGVAL (Bit 8) */ + #define R_ADC0_ADCER_DIAGVAL_Msk (0x300UL) /*!< DIAGVAL (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADCER_ACE_Pos (5UL) /*!< ACE (Bit 5) */ + #define R_ADC0_ADCER_ACE_Msk (0x20UL) /*!< ACE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCER_ADPRC_Pos (1UL) /*!< ADPRC (Bit 1) */ + #define R_ADC0_ADCER_ADPRC_Msk (0x6UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADCER_DCE_Pos (4UL) /*!< DCE (Bit 4) */ + #define R_ADC0_ADCER_DCE_Msk (0x10UL) /*!< DCE (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSTRGR ======================================================== */ + #define R_ADC0_ADSTRGR_TRSA_Pos (8UL) /*!< TRSA (Bit 8) */ + #define R_ADC0_ADSTRGR_TRSA_Msk (0x3f00UL) /*!< TRSA (Bitfield-Mask: 0x3f) */ + #define R_ADC0_ADSTRGR_TRSB_Pos (0UL) /*!< TRSB (Bit 0) */ + #define R_ADC0_ADSTRGR_TRSB_Msk (0x3fUL) /*!< TRSB (Bitfield-Mask: 0x3f) */ +/* ======================================================== ADEXICR ======================================================== */ + #define R_ADC0_ADEXICR_OCSB_Pos (11UL) /*!< OCSB (Bit 11) */ + #define R_ADC0_ADEXICR_OCSB_Msk (0x800UL) /*!< OCSB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_TSSB_Pos (10UL) /*!< TSSB (Bit 10) */ + #define R_ADC0_ADEXICR_TSSB_Msk (0x400UL) /*!< TSSB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_OCSA_Pos (9UL) /*!< OCSA (Bit 9) */ + #define R_ADC0_ADEXICR_OCSA_Msk (0x200UL) /*!< OCSA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_TSSA_Pos (8UL) /*!< TSSA (Bit 8) */ + #define R_ADC0_ADEXICR_TSSA_Msk (0x100UL) /*!< TSSA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_OCSAD_Pos (1UL) /*!< OCSAD (Bit 1) */ + #define R_ADC0_ADEXICR_OCSAD_Msk (0x2UL) /*!< OCSAD (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_TSSAD_Pos (0UL) /*!< TSSAD (Bit 0) */ + #define R_ADC0_ADEXICR_TSSAD_Msk (0x1UL) /*!< TSSAD (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_EXSEL_Pos (14UL) /*!< EXSEL (Bit 14) */ + #define R_ADC0_ADEXICR_EXSEL_Msk (0x4000UL) /*!< EXSEL (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXICR_EXOEN_Pos (15UL) /*!< EXOEN (Bit 15) */ + #define R_ADC0_ADEXICR_EXOEN_Msk (0x8000UL) /*!< EXOEN (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANSB ========================================================= */ + #define R_ADC0_ADANSB_ANSB_Pos (0UL) /*!< ANSB (Bit 0) */ + #define R_ADC0_ADANSB_ANSB_Msk (0x1UL) /*!< ANSB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADDBLDR ======================================================== */ + #define R_ADC0_ADDBLDR_ADDBLDR_Pos (0UL) /*!< ADDBLDR (Bit 0) */ + #define R_ADC0_ADDBLDR_ADDBLDR_Msk (0xffffUL) /*!< ADDBLDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADTSDR ========================================================= */ + #define R_ADC0_ADTSDR_ADTSDR_Pos (0UL) /*!< ADTSDR (Bit 0) */ + #define R_ADC0_ADTSDR_ADTSDR_Msk (0xffffUL) /*!< ADTSDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADOCDR ========================================================= */ + #define R_ADC0_ADOCDR_ADOCDR_Pos (0UL) /*!< ADOCDR (Bit 0) */ + #define R_ADC0_ADOCDR_ADOCDR_Msk (0xffffUL) /*!< ADOCDR (Bitfield-Mask: 0xffff) */ +/* ====================================================== ADRD_RIGHT ======================================================= */ + #define R_ADC0_ADRD_RIGHT_DIAGST_Pos (14UL) /*!< DIAGST (Bit 14) */ + #define R_ADC0_ADRD_RIGHT_DIAGST_Msk (0xc000UL) /*!< DIAGST (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADRD_RIGHT_AD_Pos (0UL) /*!< AD (Bit 0) */ + #define R_ADC0_ADRD_RIGHT_AD_Msk (0x3fffUL) /*!< AD (Bitfield-Mask: 0x3fff) */ +/* ======================================================= ADRD_LEFT ======================================================= */ + #define R_ADC0_ADRD_LEFT_AD_Pos (2UL) /*!< AD (Bit 2) */ + #define R_ADC0_ADRD_LEFT_AD_Msk (0xfffcUL) /*!< AD (Bitfield-Mask: 0x3fff) */ + #define R_ADC0_ADRD_LEFT_DIAGST_Pos (0UL) /*!< DIAGST (Bit 0) */ + #define R_ADC0_ADRD_LEFT_DIAGST_Msk (0x3UL) /*!< DIAGST (Bitfield-Mask: 0x03) */ +/* ========================================================= ADDR ========================================================== */ + #define R_ADC0_ADDR_ADDR_Pos (0UL) /*!< ADDR (Bit 0) */ + #define R_ADC0_ADDR_ADDR_Msk (0xffffUL) /*!< ADDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADSHCR ========================================================= */ + #define R_ADC0_ADSHCR_SHANS2_Pos (10UL) /*!< SHANS2 (Bit 10) */ + #define R_ADC0_ADSHCR_SHANS2_Msk (0x400UL) /*!< SHANS2 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSHCR_SHANS1_Pos (9UL) /*!< SHANS1 (Bit 9) */ + #define R_ADC0_ADSHCR_SHANS1_Msk (0x200UL) /*!< SHANS1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSHCR_SHANS0_Pos (8UL) /*!< SHANS0 (Bit 8) */ + #define R_ADC0_ADSHCR_SHANS0_Msk (0x100UL) /*!< SHANS0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSHCR_SSTSH_Pos (0UL) /*!< SSTSH (Bit 0) */ + #define R_ADC0_ADSHCR_SSTSH_Msk (0xffUL) /*!< SSTSH (Bitfield-Mask: 0xff) */ +/* ======================================================== ADDISCR ======================================================== */ + #define R_ADC0_ADDISCR_CHARGE_Pos (4UL) /*!< CHARGE (Bit 4) */ + #define R_ADC0_ADDISCR_CHARGE_Msk (0x10UL) /*!< CHARGE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADDISCR_ADNDIS_Pos (0UL) /*!< ADNDIS (Bit 0) */ + #define R_ADC0_ADDISCR_ADNDIS_Msk (0xfUL) /*!< ADNDIS (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADSHMSR ======================================================== */ + #define R_ADC0_ADSHMSR_SHMD_Pos (0UL) /*!< SHMD (Bit 0) */ + #define R_ADC0_ADSHMSR_SHMD_Msk (0x1UL) /*!< SHMD (Bitfield-Mask: 0x01) */ +/* ======================================================== ADACSR ========================================================= */ + #define R_ADC0_ADACSR_ADSAC_Pos (1UL) /*!< ADSAC (Bit 1) */ + #define R_ADC0_ADACSR_ADSAC_Msk (0x2UL) /*!< ADSAC (Bitfield-Mask: 0x01) */ +/* ======================================================== ADGSPCR ======================================================== */ + #define R_ADC0_ADGSPCR_GBRP_Pos (15UL) /*!< GBRP (Bit 15) */ + #define R_ADC0_ADGSPCR_GBRP_Msk (0x8000UL) /*!< GBRP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADGSPCR_GBRSCN_Pos (1UL) /*!< GBRSCN (Bit 1) */ + #define R_ADC0_ADGSPCR_GBRSCN_Msk (0x2UL) /*!< GBRSCN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADGSPCR_PGS_Pos (0UL) /*!< PGS (Bit 0) */ + #define R_ADC0_ADGSPCR_PGS_Msk (0x1UL) /*!< PGS (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADGSPCR_GBEXTRG_Pos (8UL) /*!< GBEXTRG (Bit 8) */ + #define R_ADC0_ADGSPCR_GBEXTRG_Msk (0x100UL) /*!< GBEXTRG (Bitfield-Mask: 0x01) */ +/* ========================================================= ADICR ========================================================= */ + #define R_ADC0_ADICR_ADIC_Pos (0UL) /*!< ADIC (Bit 0) */ + #define R_ADC0_ADICR_ADIC_Msk (0x3UL) /*!< ADIC (Bitfield-Mask: 0x03) */ +/* ======================================================= ADDBLDRA ======================================================== */ + #define R_ADC0_ADDBLDRA_ADDBLDRA_Pos (0UL) /*!< ADDBLDRA (Bit 0) */ + #define R_ADC0_ADDBLDRA_ADDBLDRA_Msk (0xffffUL) /*!< ADDBLDRA (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADDBLDRB ======================================================== */ + #define R_ADC0_ADDBLDRB_ADDBLDRB_Pos (0UL) /*!< ADDBLDRB (Bit 0) */ + #define R_ADC0_ADDBLDRB_ADDBLDRB_Msk (0xffffUL) /*!< ADDBLDRB (Bitfield-Mask: 0xffff) */ +/* ====================================================== ADHVREFCNT ======================================================= */ + #define R_ADC0_ADHVREFCNT_ADSLP_Pos (7UL) /*!< ADSLP (Bit 7) */ + #define R_ADC0_ADHVREFCNT_ADSLP_Msk (0x80UL) /*!< ADSLP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADHVREFCNT_LVSEL_Pos (4UL) /*!< LVSEL (Bit 4) */ + #define R_ADC0_ADHVREFCNT_LVSEL_Msk (0x10UL) /*!< LVSEL (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADHVREFCNT_HVSEL_Pos (0UL) /*!< HVSEL (Bit 0) */ + #define R_ADC0_ADHVREFCNT_HVSEL_Msk (0x3UL) /*!< HVSEL (Bitfield-Mask: 0x03) */ +/* ======================================================= ADWINMON ======================================================== */ + #define R_ADC0_ADWINMON_MONCMPB_Pos (5UL) /*!< MONCMPB (Bit 5) */ + #define R_ADC0_ADWINMON_MONCMPB_Msk (0x20UL) /*!< MONCMPB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADWINMON_MONCMPA_Pos (4UL) /*!< MONCMPA (Bit 4) */ + #define R_ADC0_ADWINMON_MONCMPA_Msk (0x10UL) /*!< MONCMPA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADWINMON_MONCOMB_Pos (0UL) /*!< MONCOMB (Bit 0) */ + #define R_ADC0_ADWINMON_MONCOMB_Msk (0x1UL) /*!< MONCOMB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCMPCR ======================================================== */ + #define R_ADC0_ADCMPCR_CMPAIE_Pos (15UL) /*!< CMPAIE (Bit 15) */ + #define R_ADC0_ADCMPCR_CMPAIE_Msk (0x8000UL) /*!< CMPAIE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_WCMPE_Pos (14UL) /*!< WCMPE (Bit 14) */ + #define R_ADC0_ADCMPCR_WCMPE_Msk (0x4000UL) /*!< WCMPE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPBIE_Pos (13UL) /*!< CMPBIE (Bit 13) */ + #define R_ADC0_ADCMPCR_CMPBIE_Msk (0x2000UL) /*!< CMPBIE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPAE_Pos (11UL) /*!< CMPAE (Bit 11) */ + #define R_ADC0_ADCMPCR_CMPAE_Msk (0x800UL) /*!< CMPAE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPBE_Pos (9UL) /*!< CMPBE (Bit 9) */ + #define R_ADC0_ADCMPCR_CMPBE_Msk (0x200UL) /*!< CMPBE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPCR_CMPAB_Pos (0UL) /*!< CMPAB (Bit 0) */ + #define R_ADC0_ADCMPCR_CMPAB_Msk (0x3UL) /*!< CMPAB (Bitfield-Mask: 0x03) */ +/* ====================================================== ADCMPANSER ======================================================= */ + #define R_ADC0_ADCMPANSER_CMPOCA_Pos (1UL) /*!< CMPOCA (Bit 1) */ + #define R_ADC0_ADCMPANSER_CMPOCA_Msk (0x2UL) /*!< CMPOCA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPANSER_CMPTSA_Pos (0UL) /*!< CMPTSA (Bit 0) */ + #define R_ADC0_ADCMPANSER_CMPTSA_Msk (0x1UL) /*!< CMPTSA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPLER ======================================================== */ + #define R_ADC0_ADCMPLER_CMPLOCA_Pos (1UL) /*!< CMPLOCA (Bit 1) */ + #define R_ADC0_ADCMPLER_CMPLOCA_Msk (0x2UL) /*!< CMPLOCA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPLER_CMPLTSA_Pos (0UL) /*!< CMPLTSA (Bit 0) */ + #define R_ADC0_ADCMPLER_CMPLTSA_Msk (0x1UL) /*!< CMPLTSA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPANSR ======================================================= */ + #define R_ADC0_ADCMPANSR_CMPCHA_Pos (0UL) /*!< CMPCHA (Bit 0) */ + #define R_ADC0_ADCMPANSR_CMPCHA_Msk (0x1UL) /*!< CMPCHA (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCMPLR ======================================================== */ + #define R_ADC0_ADCMPLR_CMPLCHA_Pos (0UL) /*!< CMPLCHA (Bit 0) */ + #define R_ADC0_ADCMPLR_CMPLCHA_Msk (0x1UL) /*!< CMPLCHA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPDR0 ======================================================== */ + #define R_ADC0_ADCMPDR0_ADCMPDR0_Pos (0UL) /*!< ADCMPDR0 (Bit 0) */ + #define R_ADC0_ADCMPDR0_ADCMPDR0_Msk (0xffffUL) /*!< ADCMPDR0 (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPDR1 ======================================================== */ + #define R_ADC0_ADCMPDR1_ADCMPDR1_Pos (0UL) /*!< ADCMPDR1 (Bit 0) */ + #define R_ADC0_ADCMPDR1_ADCMPDR1_Msk (0xffffUL) /*!< ADCMPDR1 (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADCMPSR ======================================================== */ + #define R_ADC0_ADCMPSR_CMPSTCHA_Pos (0UL) /*!< CMPSTCHA (Bit 0) */ + #define R_ADC0_ADCMPSR_CMPSTCHA_Msk (0x1UL) /*!< CMPSTCHA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPSER ======================================================== */ + #define R_ADC0_ADCMPSER_CMPSTOCA_Pos (1UL) /*!< CMPSTOCA (Bit 1) */ + #define R_ADC0_ADCMPSER_CMPSTOCA_Msk (0x2UL) /*!< CMPSTOCA (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPSER_CMPSTTSA_Pos (0UL) /*!< CMPSTTSA (Bit 0) */ + #define R_ADC0_ADCMPSER_CMPSTTSA_Msk (0x1UL) /*!< CMPSTTSA (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCMPBNSR ======================================================= */ + #define R_ADC0_ADCMPBNSR_CMPLB_Pos (7UL) /*!< CMPLB (Bit 7) */ + #define R_ADC0_ADCMPBNSR_CMPLB_Msk (0x80UL) /*!< CMPLB (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCMPBNSR_CMPCHB_Pos (0UL) /*!< CMPCHB (Bit 0) */ + #define R_ADC0_ADCMPBNSR_CMPCHB_Msk (0x3fUL) /*!< CMPCHB (Bitfield-Mask: 0x3f) */ +/* ======================================================= ADWINLLB ======================================================== */ + #define R_ADC0_ADWINLLB_ADWINLLB_Pos (0UL) /*!< ADWINLLB (Bit 0) */ + #define R_ADC0_ADWINLLB_ADWINLLB_Msk (0xffffUL) /*!< ADWINLLB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADWINULB ======================================================== */ + #define R_ADC0_ADWINULB_ADWINULB_Pos (0UL) /*!< ADWINULB (Bit 0) */ + #define R_ADC0_ADWINULB_ADWINULB_Msk (0xffffUL) /*!< ADWINULB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPBSR ======================================================== */ + #define R_ADC0_ADCMPBSR_CMPSTB_Pos (0UL) /*!< CMPSTB (Bit 0) */ + #define R_ADC0_ADCMPBSR_CMPSTB_Msk (0x1UL) /*!< CMPSTB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSSTRL ======================================================== */ + #define R_ADC0_ADSSTRL_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTRL_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADSSTRT ======================================================== */ + #define R_ADC0_ADSSTRT_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTRT_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADSSTRO ======================================================== */ + #define R_ADC0_ADSSTRO_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTRO_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADSSTR ========================================================= */ + #define R_ADC0_ADSSTR_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC0_ADSSTR_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ +/* ======================================================== ADPGACR ======================================================== */ + #define R_ADC0_ADPGACR_P002GEN_Pos (11UL) /*!< P002GEN (Bit 11) */ + #define R_ADC0_ADPGACR_P002GEN_Msk (0x800UL) /*!< P002GEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P002ENAMP_Pos (10UL) /*!< P002ENAMP (Bit 10) */ + #define R_ADC0_ADPGACR_P002ENAMP_Msk (0x400UL) /*!< P002ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P002SEL1_Pos (9UL) /*!< P002SEL1 (Bit 9) */ + #define R_ADC0_ADPGACR_P002SEL1_Msk (0x200UL) /*!< P002SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P002SEL0_Pos (8UL) /*!< P002SEL0 (Bit 8) */ + #define R_ADC0_ADPGACR_P002SEL0_Msk (0x100UL) /*!< P002SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001GEN_Pos (7UL) /*!< P001GEN (Bit 7) */ + #define R_ADC0_ADPGACR_P001GEN_Msk (0x80UL) /*!< P001GEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001ENAMP_Pos (6UL) /*!< P001ENAMP (Bit 6) */ + #define R_ADC0_ADPGACR_P001ENAMP_Msk (0x40UL) /*!< P001ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001SEL1_Pos (5UL) /*!< P001SEL1 (Bit 5) */ + #define R_ADC0_ADPGACR_P001SEL1_Msk (0x20UL) /*!< P001SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P001SEL0_Pos (4UL) /*!< P001SEL0 (Bit 4) */ + #define R_ADC0_ADPGACR_P001SEL0_Msk (0x10UL) /*!< P001SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000GEN_Pos (3UL) /*!< P000GEN (Bit 3) */ + #define R_ADC0_ADPGACR_P000GEN_Msk (0x8UL) /*!< P000GEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000ENAMP_Pos (2UL) /*!< P000ENAMP (Bit 2) */ + #define R_ADC0_ADPGACR_P000ENAMP_Msk (0x4UL) /*!< P000ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000SEL1_Pos (1UL) /*!< P000SEL1 (Bit 1) */ + #define R_ADC0_ADPGACR_P000SEL1_Msk (0x2UL) /*!< P000SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P000SEL0_Pos (0UL) /*!< P000SEL0 (Bit 0) */ + #define R_ADC0_ADPGACR_P000SEL0_Msk (0x1UL) /*!< P000SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003SEL0_Pos (12UL) /*!< P003SEL0 (Bit 12) */ + #define R_ADC0_ADPGACR_P003SEL0_Msk (0x1000UL) /*!< P003SEL0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003SEL1_Pos (13UL) /*!< P003SEL1 (Bit 13) */ + #define R_ADC0_ADPGACR_P003SEL1_Msk (0x2000UL) /*!< P003SEL1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003ENAMP_Pos (14UL) /*!< P003ENAMP (Bit 14) */ + #define R_ADC0_ADPGACR_P003ENAMP_Msk (0x4000UL) /*!< P003ENAMP (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGACR_P003GEN_Pos (15UL) /*!< P003GEN (Bit 15) */ + #define R_ADC0_ADPGACR_P003GEN_Msk (0x8000UL) /*!< P003GEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ADRD ========================================================== */ + #define R_ADC0_ADRD_AD_Pos (0UL) /*!< AD (Bit 0) */ + #define R_ADC0_ADRD_AD_Msk (0xffffUL) /*!< AD (Bitfield-Mask: 0xffff) */ +/* ========================================================= ADRST ========================================================= */ + #define R_ADC0_ADRST_DIAGST_Pos (0UL) /*!< DIAGST (Bit 0) */ + #define R_ADC0_ADRST_DIAGST_Msk (0x3UL) /*!< DIAGST (Bitfield-Mask: 0x03) */ +/* ====================================================== VREFAMPCNT ======================================================= */ + #define R_ADC0_VREFAMPCNT_VREFADCG_Pos (1UL) /*!< VREFADCG (Bit 1) */ + #define R_ADC0_VREFAMPCNT_VREFADCG_Msk (0x6UL) /*!< VREFADCG (Bitfield-Mask: 0x03) */ + #define R_ADC0_VREFAMPCNT_VREFADCEN_Pos (3UL) /*!< VREFADCEN (Bit 3) */ + #define R_ADC0_VREFAMPCNT_VREFADCEN_Msk (0x8UL) /*!< VREFADCEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_VREFAMPCNT_ADSLP_Pos (7UL) /*!< ADSLP (Bit 7) */ + #define R_ADC0_VREFAMPCNT_ADSLP_Msk (0x80UL) /*!< ADSLP (Bitfield-Mask: 0x01) */ + #define R_ADC0_VREFAMPCNT_OLDETEN_Pos (0UL) /*!< OLDETEN (Bit 0) */ + #define R_ADC0_VREFAMPCNT_OLDETEN_Msk (0x1UL) /*!< OLDETEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_VREFAMPCNT_BGREN_Pos (4UL) /*!< BGREN (Bit 4) */ + #define R_ADC0_VREFAMPCNT_BGREN_Msk (0x10UL) /*!< BGREN (Bitfield-Mask: 0x01) */ +/* ======================================================= ADCALEXE ======================================================== */ + #define R_ADC0_ADCALEXE_CALEXE_Pos (7UL) /*!< CALEXE (Bit 7) */ + #define R_ADC0_ADCALEXE_CALEXE_Msk (0x80UL) /*!< CALEXE (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADCALEXE_CALMON_Pos (6UL) /*!< CALMON (Bit 6) */ + #define R_ADC0_ADCALEXE_CALMON_Msk (0x40UL) /*!< CALMON (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANIM ========================================================= */ + #define R_ADC0_ADANIM_ANIM_Pos (0UL) /*!< ANIM (Bit 0) */ + #define R_ADC0_ADANIM_ANIM_Msk (0x1UL) /*!< ANIM (Bitfield-Mask: 0x01) */ +/* ======================================================= ADPGAGS0 ======================================================== */ + #define R_ADC0_ADPGAGS0_P002GAIN_Pos (8UL) /*!< P002GAIN (Bit 8) */ + #define R_ADC0_ADPGAGS0_P002GAIN_Msk (0xf00UL) /*!< P002GAIN (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADPGAGS0_P001GAIN_Pos (4UL) /*!< P001GAIN (Bit 4) */ + #define R_ADC0_ADPGAGS0_P001GAIN_Msk (0xf0UL) /*!< P001GAIN (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADPGAGS0_P000GAIN_Pos (0UL) /*!< P000GAIN (Bit 0) */ + #define R_ADC0_ADPGAGS0_P000GAIN_Msk (0xfUL) /*!< P000GAIN (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADPGAGS0_P003GAIN_Pos (12UL) /*!< P003GAIN (Bit 12) */ + #define R_ADC0_ADPGAGS0_P003GAIN_Msk (0xf000UL) /*!< P003GAIN (Bitfield-Mask: 0x0f) */ +/* ======================================================= ADPGADCR0 ======================================================= */ + #define R_ADC0_ADPGADCR0_P003DG_Pos (12UL) /*!< P003DG (Bit 12) */ + #define R_ADC0_ADPGADCR0_P003DG_Msk (0x3000UL) /*!< P003DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P002DEN_Pos (11UL) /*!< P002DEN (Bit 11) */ + #define R_ADC0_ADPGADCR0_P002DEN_Msk (0x800UL) /*!< P002DEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGADCR0_P002DG_Pos (8UL) /*!< P002DG (Bit 8) */ + #define R_ADC0_ADPGADCR0_P002DG_Msk (0x300UL) /*!< P002DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P001DEN_Pos (7UL) /*!< P001DEN (Bit 7) */ + #define R_ADC0_ADPGADCR0_P001DEN_Msk (0x80UL) /*!< P001DEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGADCR0_P001DG_Pos (4UL) /*!< P001DG (Bit 4) */ + #define R_ADC0_ADPGADCR0_P001DG_Msk (0x30UL) /*!< P001DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P000DEN_Pos (3UL) /*!< P000DEN (Bit 3) */ + #define R_ADC0_ADPGADCR0_P000DEN_Msk (0x8UL) /*!< P000DEN (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADPGADCR0_P000DG_Pos (0UL) /*!< P000DG (Bit 0) */ + #define R_ADC0_ADPGADCR0_P000DG_Msk (0x3UL) /*!< P000DG (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADPGADCR0_P003DEN_Pos (15UL) /*!< P003DEN (Bit 15) */ + #define R_ADC0_ADPGADCR0_P003DEN_Msk (0x8000UL) /*!< P003DEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ADREF ========================================================= */ + #define R_ADC0_ADREF_ADF_Pos (0UL) /*!< ADF (Bit 0) */ + #define R_ADC0_ADREF_ADF_Msk (0x1UL) /*!< ADF (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADREF_ADSCACT_Pos (7UL) /*!< ADSCACT (Bit 7) */ + #define R_ADC0_ADREF_ADSCACT_Msk (0x80UL) /*!< ADSCACT (Bitfield-Mask: 0x01) */ +/* ======================================================== ADEXREF ======================================================== */ + #define R_ADC0_ADEXREF_GBADF_Pos (0UL) /*!< GBADF (Bit 0) */ + #define R_ADC0_ADEXREF_GBADF_Msk (0x1UL) /*!< GBADF (Bitfield-Mask: 0x01) */ +/* ======================================================= ADAMPOFF ======================================================== */ + #define R_ADC0_ADAMPOFF_OPOFF_Pos (0UL) /*!< OPOFF (Bit 0) */ + #define R_ADC0_ADAMPOFF_OPOFF_Msk (0xffUL) /*!< OPOFF (Bitfield-Mask: 0xff) */ +/* ======================================================== ADTSTPR ======================================================== */ + #define R_ADC0_ADTSTPR_PRO_Pos (0UL) /*!< PRO (Bit 0) */ + #define R_ADC0_ADTSTPR_PRO_Msk (0x1UL) /*!< PRO (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTPR_B0WI_Pos (1UL) /*!< B0WI (Bit 1) */ + #define R_ADC0_ADTSTPR_B0WI_Msk (0x2UL) /*!< B0WI (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDDACER ======================================================== */ + #define R_ADC0_ADDDACER_WRION_Pos (0UL) /*!< WRION (Bit 0) */ + #define R_ADC0_ADDDACER_WRION_Msk (0x1fUL) /*!< WRION (Bitfield-Mask: 0x1f) */ + #define R_ADC0_ADDDACER_WRIOFF_Pos (8UL) /*!< WRIOFF (Bit 8) */ + #define R_ADC0_ADDDACER_WRIOFF_Msk (0x1f00UL) /*!< WRIOFF (Bitfield-Mask: 0x1f) */ + #define R_ADC0_ADDDACER_ADHS_Pos (15UL) /*!< ADHS (Bit 15) */ + #define R_ADC0_ADDDACER_ADHS_Msk (0x8000UL) /*!< ADHS (Bitfield-Mask: 0x01) */ +/* ======================================================= ADEXTSTR ======================================================== */ + #define R_ADC0_ADEXTSTR_SHTEST_Pos (0UL) /*!< SHTEST (Bit 0) */ + #define R_ADC0_ADEXTSTR_SHTEST_Msk (0x7UL) /*!< SHTEST (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADEXTSTR_SWTST_Pos (4UL) /*!< SWTST (Bit 4) */ + #define R_ADC0_ADEXTSTR_SWTST_Msk (0x30UL) /*!< SWTST (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADEXTSTR_SHTRM_Pos (8UL) /*!< SHTRM (Bit 8) */ + #define R_ADC0_ADEXTSTR_SHTRM_Msk (0x300UL) /*!< SHTRM (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADEXTSTR_ADTRM3_Pos (11UL) /*!< ADTRM3 (Bit 11) */ + #define R_ADC0_ADEXTSTR_ADTRM3_Msk (0x800UL) /*!< ADTRM3 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADEXTSTR_ADTRM2_Pos (12UL) /*!< ADTRM2 (Bit 12) */ + #define R_ADC0_ADEXTSTR_ADTRM2_Msk (0x3000UL) /*!< ADTRM2 (Bitfield-Mask: 0x03) */ + #define R_ADC0_ADEXTSTR_ADTRM1_Pos (14UL) /*!< ADTRM1 (Bit 14) */ + #define R_ADC0_ADEXTSTR_ADTRM1_Msk (0xc000UL) /*!< ADTRM1 (Bitfield-Mask: 0x03) */ +/* ======================================================== ADTSTRA ======================================================== */ + #define R_ADC0_ADTSTRA_ATBUSSEL_Pos (0UL) /*!< ATBUSSEL (Bit 0) */ + #define R_ADC0_ADTSTRA_ATBUSSEL_Msk (0x1UL) /*!< ATBUSSEL (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTRA_TSTSWREF_Pos (1UL) /*!< TSTSWREF (Bit 1) */ + #define R_ADC0_ADTSTRA_TSTSWREF_Msk (0xeUL) /*!< TSTSWREF (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADTSTRA_OCSW_Pos (5UL) /*!< OCSW (Bit 5) */ + #define R_ADC0_ADTSTRA_OCSW_Msk (0x20UL) /*!< OCSW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTRA_TSSW_Pos (6UL) /*!< TSSW (Bit 6) */ + #define R_ADC0_ADTSTRA_TSSW_Msk (0x40UL) /*!< TSSW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADTSTRA_ADTEST_AD_Pos (8UL) /*!< ADTEST_AD (Bit 8) */ + #define R_ADC0_ADTSTRA_ADTEST_AD_Msk (0xf00UL) /*!< ADTEST_AD (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADTSTRA_ADTEST_IO_Pos (12UL) /*!< ADTEST_IO (Bit 12) */ + #define R_ADC0_ADTSTRA_ADTEST_IO_Msk (0xf000UL) /*!< ADTEST_IO (Bitfield-Mask: 0x0f) */ +/* ======================================================== ADTSTRB ======================================================== */ + #define R_ADC0_ADTSTRB_ADVAL_Pos (0UL) /*!< ADVAL (Bit 0) */ + #define R_ADC0_ADTSTRB_ADVAL_Msk (0x7fffUL) /*!< ADVAL (Bitfield-Mask: 0x7fff) */ +/* ======================================================== ADTSTRC ======================================================== */ + #define R_ADC0_ADTSTRC_ADMD_Pos (0UL) /*!< ADMD (Bit 0) */ + #define R_ADC0_ADTSTRC_ADMD_Msk (0xffUL) /*!< ADMD (Bitfield-Mask: 0xff) */ + #define R_ADC0_ADTSTRC_SYNCERR_Pos (12UL) /*!< SYNCERR (Bit 12) */ + #define R_ADC0_ADTSTRC_SYNCERR_Msk (0x1000UL) /*!< SYNCERR (Bitfield-Mask: 0x01) */ +/* ======================================================== ADTSTRD ======================================================== */ + #define R_ADC0_ADTSTRD_ADVAL16_Pos (0UL) /*!< ADVAL16 (Bit 0) */ + #define R_ADC0_ADTSTRD_ADVAL16_Msk (0x1UL) /*!< ADVAL16 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSWTSTR0 ======================================================= */ + #define R_ADC0_ADSWTSTR0_CHSW00_Pos (0UL) /*!< CHSW00 (Bit 0) */ + #define R_ADC0_ADSWTSTR0_CHSW00_Msk (0x1UL) /*!< CHSW00 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW01_Pos (1UL) /*!< CHSW01 (Bit 1) */ + #define R_ADC0_ADSWTSTR0_CHSW01_Msk (0x2UL) /*!< CHSW01 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW02_Pos (2UL) /*!< CHSW02 (Bit 2) */ + #define R_ADC0_ADSWTSTR0_CHSW02_Msk (0x4UL) /*!< CHSW02 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW03_Pos (3UL) /*!< CHSW03 (Bit 3) */ + #define R_ADC0_ADSWTSTR0_CHSW03_Msk (0x8UL) /*!< CHSW03 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW04_Pos (4UL) /*!< CHSW04 (Bit 4) */ + #define R_ADC0_ADSWTSTR0_CHSW04_Msk (0x10UL) /*!< CHSW04 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR0_CHSW05_Pos (5UL) /*!< CHSW05 (Bit 5) */ + #define R_ADC0_ADSWTSTR0_CHSW05_Msk (0x20UL) /*!< CHSW05 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSWTSTR1 ======================================================= */ + #define R_ADC0_ADSWTSTR1_CHSW16_Pos (0UL) /*!< CHSW16 (Bit 0) */ + #define R_ADC0_ADSWTSTR1_CHSW16_Msk (0x1UL) /*!< CHSW16 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW17_Pos (1UL) /*!< CHSW17 (Bit 1) */ + #define R_ADC0_ADSWTSTR1_CHSW17_Msk (0x2UL) /*!< CHSW17 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW18_Pos (2UL) /*!< CHSW18 (Bit 2) */ + #define R_ADC0_ADSWTSTR1_CHSW18_Msk (0x4UL) /*!< CHSW18 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW19_Pos (3UL) /*!< CHSW19 (Bit 3) */ + #define R_ADC0_ADSWTSTR1_CHSW19_Msk (0x8UL) /*!< CHSW19 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW20_Pos (4UL) /*!< CHSW20 (Bit 4) */ + #define R_ADC0_ADSWTSTR1_CHSW20_Msk (0x10UL) /*!< CHSW20 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR1_CHSW21_Pos (5UL) /*!< CHSW21 (Bit 5) */ + #define R_ADC0_ADSWTSTR1_CHSW21_Msk (0x20UL) /*!< CHSW21 (Bitfield-Mask: 0x01) */ +/* ======================================================= ADSWTSTR2 ======================================================= */ + #define R_ADC0_ADSWTSTR2_EX0SW_Pos (0UL) /*!< EX0SW (Bit 0) */ + #define R_ADC0_ADSWTSTR2_EX0SW_Msk (0x1UL) /*!< EX0SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_EX1SW_Pos (1UL) /*!< EX1SW (Bit 1) */ + #define R_ADC0_ADSWTSTR2_EX1SW_Msk (0x2UL) /*!< EX1SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_SHBYPS0_Pos (4UL) /*!< SHBYPS0 (Bit 4) */ + #define R_ADC0_ADSWTSTR2_SHBYPS0_Msk (0x10UL) /*!< SHBYPS0 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_SHBYPS1_Pos (5UL) /*!< SHBYPS1 (Bit 5) */ + #define R_ADC0_ADSWTSTR2_SHBYPS1_Msk (0x20UL) /*!< SHBYPS1 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_SHBYPS2_Pos (6UL) /*!< SHBYPS2 (Bit 6) */ + #define R_ADC0_ADSWTSTR2_SHBYPS2_Msk (0x40UL) /*!< SHBYPS2 (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP0SW_Pos (8UL) /*!< GRP0SW (Bit 8) */ + #define R_ADC0_ADSWTSTR2_GRP0SW_Msk (0x100UL) /*!< GRP0SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP1SW_Pos (9UL) /*!< GRP1SW (Bit 9) */ + #define R_ADC0_ADSWTSTR2_GRP1SW_Msk (0x200UL) /*!< GRP1SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP2SW_Pos (10UL) /*!< GRP2SW (Bit 10) */ + #define R_ADC0_ADSWTSTR2_GRP2SW_Msk (0x400UL) /*!< GRP2SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRP3SW_Pos (11UL) /*!< GRP3SW (Bit 11) */ + #define R_ADC0_ADSWTSTR2_GRP3SW_Msk (0x800UL) /*!< GRP3SW (Bitfield-Mask: 0x01) */ + #define R_ADC0_ADSWTSTR2_GRPEX1SW_Pos (12UL) /*!< GRPEX1SW (Bit 12) */ + #define R_ADC0_ADSWTSTR2_GRPEX1SW_Msk (0x1000UL) /*!< GRPEX1SW (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSWCR ========================================================= */ + #define R_ADC0_ADSWCR_ADSWREF_Pos (0UL) /*!< ADSWREF (Bit 0) */ + #define R_ADC0_ADSWCR_ADSWREF_Msk (0x7UL) /*!< ADSWREF (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADSWCR_SHSWREF_Pos (4UL) /*!< SHSWREF (Bit 4) */ + #define R_ADC0_ADSWCR_SHSWREF_Msk (0x70UL) /*!< SHSWREF (Bitfield-Mask: 0x07) */ +/* ======================================================== ADGSCS ========================================================= */ + #define R_ADC0_ADGSCS_CHSELGB_Pos (0UL) /*!< CHSELGB (Bit 0) */ + #define R_ADC0_ADGSCS_CHSELGB_Msk (0xffUL) /*!< CHSELGB (Bitfield-Mask: 0xff) */ + #define R_ADC0_ADGSCS_CHSELGA_Pos (8UL) /*!< CHSELGA (Bit 8) */ + #define R_ADC0_ADGSCS_CHSELGA_Msk (0xff00UL) /*!< CHSELGA (Bitfield-Mask: 0xff) */ +/* ========================================================= ADSER ========================================================= */ + #define R_ADC0_ADSER_SMPEX_Pos (7UL) /*!< SMPEX (Bit 7) */ + #define R_ADC0_ADSER_SMPEX_Msk (0x80UL) /*!< SMPEX (Bitfield-Mask: 0x01) */ +/* ======================================================== ADBUF0 ========================================================= */ + #define R_ADC0_ADBUF0_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF0_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF1 ========================================================= */ + #define R_ADC0_ADBUF1_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF1_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF2 ========================================================= */ + #define R_ADC0_ADBUF2_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF2_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF3 ========================================================= */ + #define R_ADC0_ADBUF3_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF3_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF4 ========================================================= */ + #define R_ADC0_ADBUF4_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF4_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF5 ========================================================= */ + #define R_ADC0_ADBUF5_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF5_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF6 ========================================================= */ + #define R_ADC0_ADBUF6_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF6_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF7 ========================================================= */ + #define R_ADC0_ADBUF7_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF7_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF8 ========================================================= */ + #define R_ADC0_ADBUF8_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF8_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF9 ========================================================= */ + #define R_ADC0_ADBUF9_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF9_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF10 ======================================================== */ + #define R_ADC0_ADBUF10_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF10_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF11 ======================================================== */ + #define R_ADC0_ADBUF11_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF11_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF12 ======================================================== */ + #define R_ADC0_ADBUF12_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF12_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF13 ======================================================== */ + #define R_ADC0_ADBUF13_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF13_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF14 ======================================================== */ + #define R_ADC0_ADBUF14_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF14_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUF15 ======================================================== */ + #define R_ADC0_ADBUF15_ADBUF_Pos (0UL) /*!< ADBUF (Bit 0) */ + #define R_ADC0_ADBUF15_ADBUF_Msk (0xffffUL) /*!< ADBUF (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADBUFEN ======================================================== */ + #define R_ADC0_ADBUFEN_BUFEN_Pos (0UL) /*!< BUFEN (Bit 0) */ + #define R_ADC0_ADBUFEN_BUFEN_Msk (0x1UL) /*!< BUFEN (Bitfield-Mask: 0x01) */ +/* ======================================================= ADBUFPTR ======================================================== */ + #define R_ADC0_ADBUFPTR_BUFPTR_Pos (0UL) /*!< BUFPTR (Bit 0) */ + #define R_ADC0_ADBUFPTR_BUFPTR_Msk (0xfUL) /*!< BUFPTR (Bitfield-Mask: 0x0f) */ + #define R_ADC0_ADBUFPTR_PTROVF_Pos (4UL) /*!< PTROVF (Bit 4) */ + #define R_ADC0_ADBUFPTR_PTROVF_Msk (0x10UL) /*!< PTROVF (Bitfield-Mask: 0x01) */ +/* ======================================================= ADPGADBS0 ======================================================= */ + #define R_ADC0_ADPGADBS0_P0BIAS_Pos (0UL) /*!< P0BIAS (Bit 0) */ + #define R_ADC0_ADPGADBS0_P0BIAS_Msk (0x1UL) /*!< P0BIAS (Bitfield-Mask: 0x01) */ +/* ======================================================= ADPGADBS1 ======================================================= */ + #define R_ADC0_ADPGADBS1_P3BIAS_Pos (0UL) /*!< P3BIAS (Bit 0) */ + #define R_ADC0_ADPGADBS1_P3BIAS_Msk (0x1UL) /*!< P3BIAS (Bitfield-Mask: 0x01) */ +/* ======================================================= ADREFMON ======================================================== */ + #define R_ADC0_ADREFMON_PGAMON_Pos (0UL) /*!< PGAMON (Bit 0) */ + #define R_ADC0_ADREFMON_PGAMON_Msk (0x7UL) /*!< PGAMON (Bitfield-Mask: 0x07) */ + #define R_ADC0_ADREFMON_MONSEL_Pos (16UL) /*!< MONSEL (Bit 16) */ + #define R_ADC0_ADREFMON_MONSEL_Msk (0xf0000UL) /*!< MONSEL (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_PSCU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PSARB ========================================================= */ + #define R_PSCU_PSARB_PSARB4_Pos (4UL) /*!< PSARB4 (Bit 4) */ + #define R_PSCU_PSARB_PSARB4_Msk (0x10UL) /*!< PSARB4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB8_Pos (8UL) /*!< PSARB8 (Bit 8) */ + #define R_PSCU_PSARB_PSARB8_Msk (0x100UL) /*!< PSARB8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB9_Pos (9UL) /*!< PSARB9 (Bit 9) */ + #define R_PSCU_PSARB_PSARB9_Msk (0x200UL) /*!< PSARB9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB11_Pos (11UL) /*!< PSARB11 (Bit 11) */ + #define R_PSCU_PSARB_PSARB11_Msk (0x800UL) /*!< PSARB11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB12_Pos (12UL) /*!< PSARB12 (Bit 12) */ + #define R_PSCU_PSARB_PSARB12_Msk (0x1000UL) /*!< PSARB12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB15_Pos (15UL) /*!< PSARB15 (Bit 15) */ + #define R_PSCU_PSARB_PSARB15_Msk (0x8000UL) /*!< PSARB15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB16_Pos (16UL) /*!< PSARB16 (Bit 16) */ + #define R_PSCU_PSARB_PSARB16_Msk (0x10000UL) /*!< PSARB16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB18_Pos (18UL) /*!< PSARB18 (Bit 18) */ + #define R_PSCU_PSARB_PSARB18_Msk (0x40000UL) /*!< PSARB18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB19_Pos (19UL) /*!< PSARB19 (Bit 19) */ + #define R_PSCU_PSARB_PSARB19_Msk (0x80000UL) /*!< PSARB19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB22_Pos (22UL) /*!< PSARB22 (Bit 22) */ + #define R_PSCU_PSARB_PSARB22_Msk (0x400000UL) /*!< PSARB22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB27_Pos (27UL) /*!< PSARB27 (Bit 27) */ + #define R_PSCU_PSARB_PSARB27_Msk (0x8000000UL) /*!< PSARB27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB28_Pos (28UL) /*!< PSARB28 (Bit 28) */ + #define R_PSCU_PSARB_PSARB28_Msk (0x10000000UL) /*!< PSARB28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB29_Pos (29UL) /*!< PSARB29 (Bit 29) */ + #define R_PSCU_PSARB_PSARB29_Msk (0x20000000UL) /*!< PSARB29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB30_Pos (30UL) /*!< PSARB30 (Bit 30) */ + #define R_PSCU_PSARB_PSARB30_Msk (0x40000000UL) /*!< PSARB30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARB_PSARB31_Pos (31UL) /*!< PSARB31 (Bit 31) */ + #define R_PSCU_PSARB_PSARB31_Msk (0x80000000UL) /*!< PSARB31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PSARC ========================================================= */ + #define R_PSCU_PSARC_PSARC0_Pos (0UL) /*!< PSARC0 (Bit 0) */ + #define R_PSCU_PSARC_PSARC0_Msk (0x1UL) /*!< PSARC0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC1_Pos (1UL) /*!< PSARC1 (Bit 1) */ + #define R_PSCU_PSARC_PSARC1_Msk (0x2UL) /*!< PSARC1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC7_Pos (7UL) /*!< PSARC7 (Bit 7) */ + #define R_PSCU_PSARC_PSARC7_Msk (0x80UL) /*!< PSARC7 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC8_Pos (8UL) /*!< PSARC8 (Bit 8) */ + #define R_PSCU_PSARC_PSARC8_Msk (0x100UL) /*!< PSARC8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC11_Pos (11UL) /*!< PSARC11 (Bit 11) */ + #define R_PSCU_PSARC_PSARC11_Msk (0x800UL) /*!< PSARC11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC12_Pos (12UL) /*!< PSARC12 (Bit 12) */ + #define R_PSCU_PSARC_PSARC12_Msk (0x1000UL) /*!< PSARC12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC13_Pos (13UL) /*!< PSARC13 (Bit 13) */ + #define R_PSCU_PSARC_PSARC13_Msk (0x2000UL) /*!< PSARC13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC15_Pos (15UL) /*!< PSARC15 (Bit 15) */ + #define R_PSCU_PSARC_PSARC15_Msk (0x8000UL) /*!< PSARC15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC16_Pos (16UL) /*!< PSARC16 (Bit 16) */ + #define R_PSCU_PSARC_PSARC16_Msk (0x10000UL) /*!< PSARC16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC26_Pos (26UL) /*!< PSARC26 (Bit 26) */ + #define R_PSCU_PSARC_PSARC26_Msk (0x4000000UL) /*!< PSARC26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC27_Pos (27UL) /*!< PSARC27 (Bit 27) */ + #define R_PSCU_PSARC_PSARC27_Msk (0x8000000UL) /*!< PSARC27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARC_PSARC31_Pos (31UL) /*!< PSARC31 (Bit 31) */ + #define R_PSCU_PSARC_PSARC31_Msk (0x80000000UL) /*!< PSARC31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PSARD ========================================================= */ + #define R_PSCU_PSARD_PSARD4_Pos (4UL) /*!< PSARD4 (Bit 4) */ + #define R_PSCU_PSARD_PSARD4_Msk (0x10UL) /*!< PSARD4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD5_Pos (5UL) /*!< PSARD5 (Bit 5) */ + #define R_PSCU_PSARD_PSARD5_Msk (0x20UL) /*!< PSARD5 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD11_Pos (11UL) /*!< PSARD11 (Bit 11) */ + #define R_PSCU_PSARD_PSARD11_Msk (0x800UL) /*!< PSARD11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD12_Pos (12UL) /*!< PSARD12 (Bit 12) */ + #define R_PSCU_PSARD_PSARD12_Msk (0x1000UL) /*!< PSARD12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD13_Pos (13UL) /*!< PSARD13 (Bit 13) */ + #define R_PSCU_PSARD_PSARD13_Msk (0x2000UL) /*!< PSARD13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD14_Pos (14UL) /*!< PSARD14 (Bit 14) */ + #define R_PSCU_PSARD_PSARD14_Msk (0x4000UL) /*!< PSARD14 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD15_Pos (15UL) /*!< PSARD15 (Bit 15) */ + #define R_PSCU_PSARD_PSARD15_Msk (0x8000UL) /*!< PSARD15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD16_Pos (16UL) /*!< PSARD16 (Bit 16) */ + #define R_PSCU_PSARD_PSARD16_Msk (0x10000UL) /*!< PSARD16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD20_Pos (20UL) /*!< PSARD20 (Bit 20) */ + #define R_PSCU_PSARD_PSARD20_Msk (0x100000UL) /*!< PSARD20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD22_Pos (22UL) /*!< PSARD22 (Bit 22) */ + #define R_PSCU_PSARD_PSARD22_Msk (0x400000UL) /*!< PSARD22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD27_Pos (27UL) /*!< PSARD27 (Bit 27) */ + #define R_PSCU_PSARD_PSARD27_Msk (0x8000000UL) /*!< PSARD27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARD_PSARD28_Pos (28UL) /*!< PSARD28 (Bit 28) */ + #define R_PSCU_PSARD_PSARD28_Msk (0x10000000UL) /*!< PSARD28 (Bitfield-Mask: 0x01) */ +/* ========================================================= PSARE ========================================================= */ + #define R_PSCU_PSARE_PSARE1_Pos (1UL) /*!< PSARE1 (Bit 1) */ + #define R_PSCU_PSARE_PSARE1_Msk (0x2UL) /*!< PSARE1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE2_Pos (2UL) /*!< PSARE2 (Bit 2) */ + #define R_PSCU_PSARE_PSARE2_Msk (0x4UL) /*!< PSARE2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE3_Pos (3UL) /*!< PSARE3 (Bit 3) */ + #define R_PSCU_PSARE_PSARE3_Msk (0x8UL) /*!< PSARE3 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE8_Pos (8UL) /*!< PSARE8 (Bit 8) */ + #define R_PSCU_PSARE_PSARE8_Msk (0x100UL) /*!< PSARE8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE9_Pos (9UL) /*!< PSARE9 (Bit 9) */ + #define R_PSCU_PSARE_PSARE9_Msk (0x200UL) /*!< PSARE9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE18_Pos (18UL) /*!< PSARE18 (Bit 18) */ + #define R_PSCU_PSARE_PSARE18_Msk (0x40000UL) /*!< PSARE18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE19_Pos (19UL) /*!< PSARE19 (Bit 19) */ + #define R_PSCU_PSARE_PSARE19_Msk (0x80000UL) /*!< PSARE19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE20_Pos (20UL) /*!< PSARE20 (Bit 20) */ + #define R_PSCU_PSARE_PSARE20_Msk (0x100000UL) /*!< PSARE20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE21_Pos (21UL) /*!< PSARE21 (Bit 21) */ + #define R_PSCU_PSARE_PSARE21_Msk (0x200000UL) /*!< PSARE21 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE22_Pos (22UL) /*!< PSARE22 (Bit 22) */ + #define R_PSCU_PSARE_PSARE22_Msk (0x400000UL) /*!< PSARE22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE23_Pos (23UL) /*!< PSARE23 (Bit 23) */ + #define R_PSCU_PSARE_PSARE23_Msk (0x800000UL) /*!< PSARE23 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE24_Pos (24UL) /*!< PSARE24 (Bit 24) */ + #define R_PSCU_PSARE_PSARE24_Msk (0x1000000UL) /*!< PSARE24 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE25_Pos (25UL) /*!< PSARE25 (Bit 25) */ + #define R_PSCU_PSARE_PSARE25_Msk (0x2000000UL) /*!< PSARE25 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE26_Pos (26UL) /*!< PSARE26 (Bit 26) */ + #define R_PSCU_PSARE_PSARE26_Msk (0x4000000UL) /*!< PSARE26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE27_Pos (27UL) /*!< PSARE27 (Bit 27) */ + #define R_PSCU_PSARE_PSARE27_Msk (0x8000000UL) /*!< PSARE27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE28_Pos (28UL) /*!< PSARE28 (Bit 28) */ + #define R_PSCU_PSARE_PSARE28_Msk (0x10000000UL) /*!< PSARE28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE29_Pos (29UL) /*!< PSARE29 (Bit 29) */ + #define R_PSCU_PSARE_PSARE29_Msk (0x20000000UL) /*!< PSARE29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE30_Pos (30UL) /*!< PSARE30 (Bit 30) */ + #define R_PSCU_PSARE_PSARE30_Msk (0x40000000UL) /*!< PSARE30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PSARE_PSARE31_Pos (31UL) /*!< PSARE31 (Bit 31) */ + #define R_PSCU_PSARE_PSARE31_Msk (0x80000000UL) /*!< PSARE31 (Bitfield-Mask: 0x01) */ +/* ========================================================= MSSAR ========================================================= */ + #define R_PSCU_MSSAR_MSSAR0_Pos (0UL) /*!< MSSAR0 (Bit 0) */ + #define R_PSCU_MSSAR_MSSAR0_Msk (0x1UL) /*!< MSSAR0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR1_Pos (1UL) /*!< MSSAR1 (Bit 1) */ + #define R_PSCU_MSSAR_MSSAR1_Msk (0x2UL) /*!< MSSAR1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR11_Pos (11UL) /*!< MSSAR11 (Bit 11) */ + #define R_PSCU_MSSAR_MSSAR11_Msk (0x800UL) /*!< MSSAR11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR13_Pos (13UL) /*!< MSSAR13 (Bit 13) */ + #define R_PSCU_MSSAR_MSSAR13_Msk (0x2000UL) /*!< MSSAR13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR15_Pos (15UL) /*!< MSSAR15 (Bit 15) */ + #define R_PSCU_MSSAR_MSSAR15_Msk (0x8000UL) /*!< MSSAR15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR22_Pos (22UL) /*!< MSSAR22 (Bit 22) */ + #define R_PSCU_MSSAR_MSSAR22_Msk (0x400000UL) /*!< MSSAR22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_MSSAR_MSSAR31_Pos (31UL) /*!< MSSAR31 (Bit 31) */ + #define R_PSCU_MSSAR_MSSAR31_Msk (0x80000000UL) /*!< MSSAR31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARB ========================================================= */ + #define R_PSCU_PPARB_PPARB4_Pos (4UL) /*!< PPARB4 (Bit 4) */ + #define R_PSCU_PPARB_PPARB4_Msk (0x10UL) /*!< PPARB4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB8_Pos (8UL) /*!< PPARB8 (Bit 8) */ + #define R_PSCU_PPARB_PPARB8_Msk (0x100UL) /*!< PPARB8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB9_Pos (9UL) /*!< PPARB9 (Bit 9) */ + #define R_PSCU_PPARB_PPARB9_Msk (0x200UL) /*!< PPARB9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB11_Pos (11UL) /*!< PPARB11 (Bit 11) */ + #define R_PSCU_PPARB_PPARB11_Msk (0x800UL) /*!< PPARB11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB12_Pos (12UL) /*!< PPARB12 (Bit 12) */ + #define R_PSCU_PPARB_PPARB12_Msk (0x1000UL) /*!< PPARB12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB15_Pos (15UL) /*!< PPARB15 (Bit 15) */ + #define R_PSCU_PPARB_PPARB15_Msk (0x8000UL) /*!< PPARB15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB16_Pos (16UL) /*!< PPARB16 (Bit 16) */ + #define R_PSCU_PPARB_PPARB16_Msk (0x10000UL) /*!< PPARB16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB18_Pos (18UL) /*!< PPARB18 (Bit 18) */ + #define R_PSCU_PPARB_PPARB18_Msk (0x40000UL) /*!< PPARB18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB19_Pos (19UL) /*!< PPARB19 (Bit 19) */ + #define R_PSCU_PPARB_PPARB19_Msk (0x80000UL) /*!< PPARB19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB22_Pos (22UL) /*!< PPARB22 (Bit 22) */ + #define R_PSCU_PPARB_PPARB22_Msk (0x400000UL) /*!< PPARB22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB27_Pos (27UL) /*!< PPARB27 (Bit 27) */ + #define R_PSCU_PPARB_PPARB27_Msk (0x8000000UL) /*!< PPARB27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB28_Pos (28UL) /*!< PPARB28 (Bit 28) */ + #define R_PSCU_PPARB_PPARB28_Msk (0x10000000UL) /*!< PPARB28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB29_Pos (29UL) /*!< PPARB29 (Bit 29) */ + #define R_PSCU_PPARB_PPARB29_Msk (0x20000000UL) /*!< PPARB29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB30_Pos (30UL) /*!< PPARB30 (Bit 30) */ + #define R_PSCU_PPARB_PPARB30_Msk (0x40000000UL) /*!< PPARB30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARB_PPARB31_Pos (31UL) /*!< PPARB31 (Bit 31) */ + #define R_PSCU_PPARB_PPARB31_Msk (0x80000000UL) /*!< PPARB31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARC ========================================================= */ + #define R_PSCU_PPARC_PPARC0_Pos (0UL) /*!< PPARC0 (Bit 0) */ + #define R_PSCU_PPARC_PPARC0_Msk (0x1UL) /*!< PPARC0 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC1_Pos (1UL) /*!< PPARC1 (Bit 1) */ + #define R_PSCU_PPARC_PPARC1_Msk (0x2UL) /*!< PPARC1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC7_Pos (7UL) /*!< PPARC7 (Bit 7) */ + #define R_PSCU_PPARC_PPARC7_Msk (0x80UL) /*!< PPARC7 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC8_Pos (8UL) /*!< PPARC8 (Bit 8) */ + #define R_PSCU_PPARC_PPARC8_Msk (0x100UL) /*!< PPARC8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC11_Pos (11UL) /*!< PPARC11 (Bit 11) */ + #define R_PSCU_PPARC_PPARC11_Msk (0x800UL) /*!< PPARC11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC12_Pos (12UL) /*!< PPARC12 (Bit 12) */ + #define R_PSCU_PPARC_PPARC12_Msk (0x1000UL) /*!< PPARC12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC13_Pos (13UL) /*!< PPARC13 (Bit 13) */ + #define R_PSCU_PPARC_PPARC13_Msk (0x2000UL) /*!< PPARC13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC15_Pos (15UL) /*!< PPARC15 (Bit 15) */ + #define R_PSCU_PPARC_PPARC15_Msk (0x8000UL) /*!< PPARC15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC16_Pos (16UL) /*!< PPARC16 (Bit 16) */ + #define R_PSCU_PPARC_PPARC16_Msk (0x10000UL) /*!< PPARC16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC26_Pos (26UL) /*!< PPARC26 (Bit 26) */ + #define R_PSCU_PPARC_PPARC26_Msk (0x4000000UL) /*!< PPARC26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC27_Pos (27UL) /*!< PPARC27 (Bit 27) */ + #define R_PSCU_PPARC_PPARC27_Msk (0x8000000UL) /*!< PPARC27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARC_PPARC31_Pos (31UL) /*!< PPARC31 (Bit 31) */ + #define R_PSCU_PPARC_PPARC31_Msk (0x80000000UL) /*!< PPARC31 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARD ========================================================= */ + #define R_PSCU_PPARD_PPARD4_Pos (4UL) /*!< PPARD4 (Bit 4) */ + #define R_PSCU_PPARD_PPARD4_Msk (0x10UL) /*!< PPARD4 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD5_Pos (5UL) /*!< PPARD5 (Bit 5) */ + #define R_PSCU_PPARD_PPARD5_Msk (0x20UL) /*!< PPARD5 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD11_Pos (11UL) /*!< PPARD11 (Bit 11) */ + #define R_PSCU_PPARD_PPARD11_Msk (0x800UL) /*!< PPARD11 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD12_Pos (12UL) /*!< PPARD12 (Bit 12) */ + #define R_PSCU_PPARD_PPARD12_Msk (0x1000UL) /*!< PPARD12 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD13_Pos (13UL) /*!< PPARD13 (Bit 13) */ + #define R_PSCU_PPARD_PPARD13_Msk (0x2000UL) /*!< PPARD13 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD14_Pos (14UL) /*!< PPARD14 (Bit 14) */ + #define R_PSCU_PPARD_PPARD14_Msk (0x4000UL) /*!< PPARD14 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD15_Pos (15UL) /*!< PPARD15 (Bit 15) */ + #define R_PSCU_PPARD_PPARD15_Msk (0x8000UL) /*!< PPARD15 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD16_Pos (16UL) /*!< PPARD16 (Bit 16) */ + #define R_PSCU_PPARD_PPARD16_Msk (0x10000UL) /*!< PPARD16 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD20_Pos (20UL) /*!< PPARD20 (Bit 20) */ + #define R_PSCU_PPARD_PPARD20_Msk (0x100000UL) /*!< PPARD20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD22_Pos (22UL) /*!< PPARD22 (Bit 22) */ + #define R_PSCU_PPARD_PPARD22_Msk (0x400000UL) /*!< PPARD22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD27_Pos (27UL) /*!< PPARD27 (Bit 27) */ + #define R_PSCU_PPARD_PPARD27_Msk (0x8000000UL) /*!< PPARD27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARD_PPARD28_Pos (28UL) /*!< PPARD28 (Bit 28) */ + #define R_PSCU_PPARD_PPARD28_Msk (0x10000000UL) /*!< PPARD28 (Bitfield-Mask: 0x01) */ +/* ========================================================= PPARE ========================================================= */ + #define R_PSCU_PPARE_PPARE1_Pos (1UL) /*!< PPARE1 (Bit 1) */ + #define R_PSCU_PPARE_PPARE1_Msk (0x2UL) /*!< PPARE1 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE2_Pos (2UL) /*!< PPARE2 (Bit 2) */ + #define R_PSCU_PPARE_PPARE2_Msk (0x4UL) /*!< PPARE2 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE3_Pos (3UL) /*!< PPARE3 (Bit 3) */ + #define R_PSCU_PPARE_PPARE3_Msk (0x8UL) /*!< PPARE3 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE8_Pos (8UL) /*!< PPARE8 (Bit 8) */ + #define R_PSCU_PPARE_PPARE8_Msk (0x100UL) /*!< PPARE8 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE9_Pos (9UL) /*!< PPARE9 (Bit 9) */ + #define R_PSCU_PPARE_PPARE9_Msk (0x200UL) /*!< PPARE9 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE18_Pos (18UL) /*!< PPARE18 (Bit 18) */ + #define R_PSCU_PPARE_PPARE18_Msk (0x40000UL) /*!< PPARE18 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE19_Pos (19UL) /*!< PPARE19 (Bit 19) */ + #define R_PSCU_PPARE_PPARE19_Msk (0x80000UL) /*!< PPARE19 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE20_Pos (20UL) /*!< PPARE20 (Bit 20) */ + #define R_PSCU_PPARE_PPARE20_Msk (0x100000UL) /*!< PPARE20 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE21_Pos (21UL) /*!< PPARE21 (Bit 21) */ + #define R_PSCU_PPARE_PPARE21_Msk (0x200000UL) /*!< PPARE21 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE22_Pos (22UL) /*!< PPARE22 (Bit 22) */ + #define R_PSCU_PPARE_PPARE22_Msk (0x400000UL) /*!< PPARE22 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE23_Pos (23UL) /*!< PPARE23 (Bit 23) */ + #define R_PSCU_PPARE_PPARE23_Msk (0x800000UL) /*!< PPARE23 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE24_Pos (24UL) /*!< PPARE24 (Bit 24) */ + #define R_PSCU_PPARE_PPARE24_Msk (0x1000000UL) /*!< PPARE24 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE25_Pos (25UL) /*!< PPARE25 (Bit 25) */ + #define R_PSCU_PPARE_PPARE25_Msk (0x2000000UL) /*!< PPARE25 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE26_Pos (26UL) /*!< PPARE26 (Bit 26) */ + #define R_PSCU_PPARE_PPARE26_Msk (0x4000000UL) /*!< PPARE26 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE27_Pos (27UL) /*!< PPARE27 (Bit 27) */ + #define R_PSCU_PPARE_PPARE27_Msk (0x8000000UL) /*!< PPARE27 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE28_Pos (28UL) /*!< PPARE28 (Bit 28) */ + #define R_PSCU_PPARE_PPARE28_Msk (0x10000000UL) /*!< PPARE28 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE29_Pos (29UL) /*!< PPARE29 (Bit 29) */ + #define R_PSCU_PPARE_PPARE29_Msk (0x20000000UL) /*!< PPARE29 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE30_Pos (30UL) /*!< PPARE30 (Bit 30) */ + #define R_PSCU_PPARE_PPARE30_Msk (0x40000000UL) /*!< PPARE30 (Bitfield-Mask: 0x01) */ + #define R_PSCU_PPARE_PPARE31_Pos (31UL) /*!< PPARE31 (Bit 31) */ + #define R_PSCU_PPARE_PPARE31_Msk (0x80000000UL) /*!< PPARE31 (Bitfield-Mask: 0x01) */ +/* ========================================================= MSPAR ========================================================= */ + #define R_PSCU_MSPAR_MSPAR31_Pos (31UL) /*!< MSPAR31 (Bit 31) */ + #define R_PSCU_MSPAR_MSPAR31_Msk (0x80000000UL) /*!< MSPAR31 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFSAMONA ======================================================== */ + #define R_PSCU_CFSAMONA_CFS2_Pos (15UL) /*!< CFS2 (Bit 15) */ + #define R_PSCU_CFSAMONA_CFS2_Msk (0xff8000UL) /*!< CFS2 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== DFSAMON ======================================================== */ + #define R_PSCU_DFSAMON_DFS_Pos (10UL) /*!< DFS (Bit 10) */ + #define R_PSCU_DFSAMON_DFS_Msk (0xfc00UL) /*!< DFS (Bitfield-Mask: 0x3f) */ +/* ======================================================== DLMMON ========================================================= */ + #define R_PSCU_DLMMON_DLMMON_Pos (0UL) /*!< DLMMON (Bit 0) */ + #define R_PSCU_DLMMON_DLMMON_Msk (0xfUL) /*!< DLMMON (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_BUS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CSRECEN ======================================================== */ + #define R_BUS_CSRECEN_RCVENM_Pos (8UL) /*!< RCVENM (Bit 8) */ + #define R_BUS_CSRECEN_RCVENM_Msk (0x100UL) /*!< RCVENM (Bitfield-Mask: 0x01) */ + #define R_BUS_CSRECEN_RCVEN_Pos (0UL) /*!< RCVEN (Bit 0) */ + #define R_BUS_CSRECEN_RCVEN_Msk (0x1UL) /*!< RCVEN (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSMABT ======================================================== */ + #define R_BUS_BUSMABT_ARBS_Pos (0UL) /*!< ARBS (Bit 0) */ + #define R_BUS_BUSMABT_ARBS_Msk (0x1UL) /*!< ARBS (Bitfield-Mask: 0x01) */ +/* ======================================================= BUSDIVBYP ======================================================= */ + #define R_BUS_BUSDIVBYP_CPU0SBPE_Pos (16UL) /*!< CPU0SBPE (Bit 16) */ + #define R_BUS_BUSDIVBYP_CPU0SBPE_Msk (0x10000UL) /*!< CPU0SBPE (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSDIVBYP_GDSSBPE_Pos (3UL) /*!< GDSSBPE (Bit 3) */ + #define R_BUS_BUSDIVBYP_GDSSBPE_Msk (0x8UL) /*!< GDSSBPE (Bitfield-Mask: 0x01) */ + #define R_BUS_BUSDIVBYP_EDMABPE_Pos (0UL) /*!< EDMABPE (Bit 0) */ + #define R_BUS_BUSDIVBYP_EDMABPE_Msk (0x1UL) /*!< EDMABPE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CAC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CACR0 ========================================================= */ + #define R_CAC_CACR0_CFME_Pos (0UL) /*!< CFME (Bit 0) */ + #define R_CAC_CACR0_CFME_Msk (0x1UL) /*!< CFME (Bitfield-Mask: 0x01) */ +/* ========================================================= CACR1 ========================================================= */ + #define R_CAC_CACR1_EDGES_Pos (6UL) /*!< EDGES (Bit 6) */ + #define R_CAC_CACR1_EDGES_Msk (0xc0UL) /*!< EDGES (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR1_TCSS_Pos (4UL) /*!< TCSS (Bit 4) */ + #define R_CAC_CACR1_TCSS_Msk (0x30UL) /*!< TCSS (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR1_FMCS_Pos (1UL) /*!< FMCS (Bit 1) */ + #define R_CAC_CACR1_FMCS_Msk (0xeUL) /*!< FMCS (Bitfield-Mask: 0x07) */ + #define R_CAC_CACR1_CACREFE_Pos (0UL) /*!< CACREFE (Bit 0) */ + #define R_CAC_CACR1_CACREFE_Msk (0x1UL) /*!< CACREFE (Bitfield-Mask: 0x01) */ +/* ========================================================= CACR2 ========================================================= */ + #define R_CAC_CACR2_DFS_Pos (6UL) /*!< DFS (Bit 6) */ + #define R_CAC_CACR2_DFS_Msk (0xc0UL) /*!< DFS (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR2_RCDS_Pos (4UL) /*!< RCDS (Bit 4) */ + #define R_CAC_CACR2_RCDS_Msk (0x30UL) /*!< RCDS (Bitfield-Mask: 0x03) */ + #define R_CAC_CACR2_RSCS_Pos (1UL) /*!< RSCS (Bit 1) */ + #define R_CAC_CACR2_RSCS_Msk (0xeUL) /*!< RSCS (Bitfield-Mask: 0x07) */ + #define R_CAC_CACR2_RPS_Pos (0UL) /*!< RPS (Bit 0) */ + #define R_CAC_CACR2_RPS_Msk (0x1UL) /*!< RPS (Bitfield-Mask: 0x01) */ +/* ========================================================= CAICR ========================================================= */ + #define R_CAC_CAICR_OVFFCL_Pos (6UL) /*!< OVFFCL (Bit 6) */ + #define R_CAC_CAICR_OVFFCL_Msk (0x40UL) /*!< OVFFCL (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_MENDFCL_Pos (5UL) /*!< MENDFCL (Bit 5) */ + #define R_CAC_CAICR_MENDFCL_Msk (0x20UL) /*!< MENDFCL (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_FERRFCL_Pos (4UL) /*!< FERRFCL (Bit 4) */ + #define R_CAC_CAICR_FERRFCL_Msk (0x10UL) /*!< FERRFCL (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_OVFIE_Pos (2UL) /*!< OVFIE (Bit 2) */ + #define R_CAC_CAICR_OVFIE_Msk (0x4UL) /*!< OVFIE (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_MENDIE_Pos (1UL) /*!< MENDIE (Bit 1) */ + #define R_CAC_CAICR_MENDIE_Msk (0x2UL) /*!< MENDIE (Bitfield-Mask: 0x01) */ + #define R_CAC_CAICR_FERRIE_Pos (0UL) /*!< FERRIE (Bit 0) */ + #define R_CAC_CAICR_FERRIE_Msk (0x1UL) /*!< FERRIE (Bitfield-Mask: 0x01) */ +/* ========================================================= CASTR ========================================================= */ + #define R_CAC_CASTR_OVFF_Pos (2UL) /*!< OVFF (Bit 2) */ + #define R_CAC_CASTR_OVFF_Msk (0x4UL) /*!< OVFF (Bitfield-Mask: 0x01) */ + #define R_CAC_CASTR_MENDF_Pos (1UL) /*!< MENDF (Bit 1) */ + #define R_CAC_CASTR_MENDF_Msk (0x2UL) /*!< MENDF (Bitfield-Mask: 0x01) */ + #define R_CAC_CASTR_FERRF_Pos (0UL) /*!< FERRF (Bit 0) */ + #define R_CAC_CASTR_FERRF_Msk (0x1UL) /*!< FERRF (Bitfield-Mask: 0x01) */ +/* ======================================================== CAULVR ========================================================= */ + #define R_CAC_CAULVR_CAULVR_Pos (0UL) /*!< CAULVR (Bit 0) */ + #define R_CAC_CAULVR_CAULVR_Msk (0xffffUL) /*!< CAULVR (Bitfield-Mask: 0xffff) */ +/* ======================================================== CALLVR ========================================================= */ + #define R_CAC_CALLVR_CALLVR_Pos (0UL) /*!< CALLVR (Bit 0) */ + #define R_CAC_CALLVR_CALLVR_Msk (0xffffUL) /*!< CALLVR (Bitfield-Mask: 0xffff) */ +/* ======================================================== CACNTBR ======================================================== */ + #define R_CAC_CACNTBR_CACNTBR_Pos (0UL) /*!< CACNTBR (Bit 0) */ + #define R_CAC_CACNTBR_CACNTBR_Msk (0xffffUL) /*!< CACNTBR (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CFDGCFG ======================================================== */ + #define R_CANFD_CFDGCFG_TPRI_Pos (0UL) /*!< TPRI (Bit 0) */ + #define R_CANFD_CFDGCFG_TPRI_Msk (0x1UL) /*!< TPRI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_DCE_Pos (1UL) /*!< DCE (Bit 1) */ + #define R_CANFD_CFDGCFG_DCE_Msk (0x2UL) /*!< DCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_DRE_Pos (2UL) /*!< DRE (Bit 2) */ + #define R_CANFD_CFDGCFG_DRE_Msk (0x4UL) /*!< DRE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_MME_Pos (3UL) /*!< MME (Bit 3) */ + #define R_CANFD_CFDGCFG_MME_Msk (0x8UL) /*!< MME (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_DCS_Pos (4UL) /*!< DCS (Bit 4) */ + #define R_CANFD_CFDGCFG_DCS_Msk (0x10UL) /*!< DCS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_CMPOC_Pos (5UL) /*!< CMPOC (Bit 5) */ + #define R_CANFD_CFDGCFG_CMPOC_Msk (0x20UL) /*!< CMPOC (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_TSP_Pos (8UL) /*!< TSP (Bit 8) */ + #define R_CANFD_CFDGCFG_TSP_Msk (0xf00UL) /*!< TSP (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDGCFG_TSSS_Pos (12UL) /*!< TSSS (Bit 12) */ + #define R_CANFD_CFDGCFG_TSSS_Msk (0x1000UL) /*!< TSSS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCFG_ITRCP_Pos (16UL) /*!< ITRCP (Bit 16) */ + #define R_CANFD_CFDGCFG_ITRCP_Msk (0xffff0000UL) /*!< ITRCP (Bitfield-Mask: 0xffff) */ +/* ======================================================== CFDGCTR ======================================================== */ + #define R_CANFD_CFDGCTR_GMDC_Pos (0UL) /*!< GMDC (Bit 0) */ + #define R_CANFD_CFDGCTR_GMDC_Msk (0x3UL) /*!< GMDC (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDGCTR_GSLPR_Pos (2UL) /*!< GSLPR (Bit 2) */ + #define R_CANFD_CFDGCTR_GSLPR_Msk (0x4UL) /*!< GSLPR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_DEIE_Pos (8UL) /*!< DEIE (Bit 8) */ + #define R_CANFD_CFDGCTR_DEIE_Msk (0x100UL) /*!< DEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_MEIE_Pos (9UL) /*!< MEIE (Bit 9) */ + #define R_CANFD_CFDGCTR_MEIE_Msk (0x200UL) /*!< MEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_THLEIE_Pos (10UL) /*!< THLEIE (Bit 10) */ + #define R_CANFD_CFDGCTR_THLEIE_Msk (0x400UL) /*!< THLEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_CMPOFIE_Pos (11UL) /*!< CMPOFIE (Bit 11) */ + #define R_CANFD_CFDGCTR_CMPOFIE_Msk (0x800UL) /*!< CMPOFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_TSRST_Pos (16UL) /*!< TSRST (Bit 16) */ + #define R_CANFD_CFDGCTR_TSRST_Msk (0x10000UL) /*!< TSRST (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDGSTS ======================================================== */ + #define R_CANFD_CFDGSTS_GRSTSTS_Pos (0UL) /*!< GRSTSTS (Bit 0) */ + #define R_CANFD_CFDGSTS_GRSTSTS_Msk (0x1UL) /*!< GRSTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGSTS_GHLTSTS_Pos (1UL) /*!< GHLTSTS (Bit 1) */ + #define R_CANFD_CFDGSTS_GHLTSTS_Msk (0x2UL) /*!< GHLTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGSTS_GSLPSTS_Pos (2UL) /*!< GSLPSTS (Bit 2) */ + #define R_CANFD_CFDGSTS_GSLPSTS_Msk (0x4UL) /*!< GSLPSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGSTS_GRAMINIT_Pos (3UL) /*!< GRAMINIT (Bit 3) */ + #define R_CANFD_CFDGSTS_GRAMINIT_Msk (0x8UL) /*!< GRAMINIT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGERFL ======================================================== */ + #define R_CANFD_CFDGERFL_DEF_Pos (0UL) /*!< DEF (Bit 0) */ + #define R_CANFD_CFDGERFL_DEF_Msk (0x1UL) /*!< DEF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_MES_Pos (1UL) /*!< MES (Bit 1) */ + #define R_CANFD_CFDGERFL_MES_Msk (0x2UL) /*!< MES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_THLES_Pos (2UL) /*!< THLES (Bit 2) */ + #define R_CANFD_CFDGERFL_THLES_Msk (0x4UL) /*!< THLES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_CMPOF_Pos (3UL) /*!< CMPOF (Bit 3) */ + #define R_CANFD_CFDGERFL_CMPOF_Msk (0x8UL) /*!< CMPOF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_EEF0_Pos (16UL) /*!< EEF0 (Bit 16) */ + #define R_CANFD_CFDGERFL_EEF0_Msk (0x10000UL) /*!< EEF0 (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDGTSC ======================================================== */ + #define R_CANFD_CFDGTSC_TS_Pos (0UL) /*!< TS (Bit 0) */ + #define R_CANFD_CFDGTSC_TS_Msk (0xffffUL) /*!< TS (Bitfield-Mask: 0xffff) */ +/* ====================================================== CFDGAFLECTR ====================================================== */ + #define R_CANFD_CFDGAFLECTR_AFLPN_Pos (0UL) /*!< AFLPN (Bit 0) */ + #define R_CANFD_CFDGAFLECTR_AFLPN_Msk (0xfUL) /*!< AFLPN (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDGAFLECTR_AFLDAE_Pos (8UL) /*!< AFLDAE (Bit 8) */ + #define R_CANFD_CFDGAFLECTR_AFLDAE_Msk (0x100UL) /*!< AFLDAE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGAFLCFG0 ====================================================== */ + #define R_CANFD_CFDGAFLCFG0_RNC1_Pos (0UL) /*!< RNC1 (Bit 0) */ + #define R_CANFD_CFDGAFLCFG0_RNC1_Msk (0x1ffUL) /*!< RNC1 (Bitfield-Mask: 0x1ff) */ + #define R_CANFD_CFDGAFLCFG0_RNC0_Pos (16UL) /*!< RNC0 (Bit 16) */ + #define R_CANFD_CFDGAFLCFG0_RNC0_Msk (0x1ff0000UL) /*!< RNC0 (Bitfield-Mask: 0x1ff) */ +/* ======================================================== CFDRMNB ======================================================== */ + #define R_CANFD_CFDRMNB_NRXMB_Pos (0UL) /*!< NRXMB (Bit 0) */ + #define R_CANFD_CFDRMNB_NRXMB_Msk (0xffUL) /*!< NRXMB (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRMNB_RMPLS_Pos (8UL) /*!< RMPLS (Bit 8) */ + #define R_CANFD_CFDRMNB_RMPLS_Msk (0x700UL) /*!< RMPLS (Bitfield-Mask: 0x07) */ +/* ======================================================= CFDRMND0 ======================================================== */ + #define R_CANFD_CFDRMND0_RMNSu_Pos (0UL) /*!< RMNSu (Bit 0) */ + #define R_CANFD_CFDRMND0_RMNSu_Msk (0xffffffffUL) /*!< RMNSu (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CFDRMIEC ======================================================== */ + #define R_CANFD_CFDRMIEC_RMIE_Pos (0UL) /*!< RMIE (Bit 0) */ + #define R_CANFD_CFDRMIEC_RMIE_Msk (0xffffffffUL) /*!< RMIE (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CFDRFCC ======================================================== */ + #define R_CANFD_CFDRFCC_RFE_Pos (0UL) /*!< RFE (Bit 0) */ + #define R_CANFD_CFDRFCC_RFE_Msk (0x1UL) /*!< RFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFCC_RFIE_Pos (1UL) /*!< RFIE (Bit 1) */ + #define R_CANFD_CFDRFCC_RFIE_Msk (0x2UL) /*!< RFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFCC_RFPLS_Pos (4UL) /*!< RFPLS (Bit 4) */ + #define R_CANFD_CFDRFCC_RFPLS_Msk (0x70UL) /*!< RFPLS (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDRFCC_RFDC_Pos (8UL) /*!< RFDC (Bit 8) */ + #define R_CANFD_CFDRFCC_RFDC_Msk (0x700UL) /*!< RFDC (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDRFCC_RFIM_Pos (12UL) /*!< RFIM (Bit 12) */ + #define R_CANFD_CFDRFCC_RFIM_Msk (0x1000UL) /*!< RFIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFCC_RFIGCV_Pos (13UL) /*!< RFIGCV (Bit 13) */ + #define R_CANFD_CFDRFCC_RFIGCV_Msk (0xe000UL) /*!< RFIGCV (Bitfield-Mask: 0x07) */ +/* ======================================================= CFDRFSTS ======================================================== */ + #define R_CANFD_CFDRFSTS_RFEMP_Pos (0UL) /*!< RFEMP (Bit 0) */ + #define R_CANFD_CFDRFSTS_RFEMP_Msk (0x1UL) /*!< RFEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFFLL_Pos (1UL) /*!< RFFLL (Bit 1) */ + #define R_CANFD_CFDRFSTS_RFFLL_Msk (0x2UL) /*!< RFFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFMLT_Pos (2UL) /*!< RFMLT (Bit 2) */ + #define R_CANFD_CFDRFSTS_RFMLT_Msk (0x4UL) /*!< RFMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFIF_Pos (3UL) /*!< RFIF (Bit 3) */ + #define R_CANFD_CFDRFSTS_RFIF_Msk (0x8UL) /*!< RFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRFSTS_RFMC_Pos (8UL) /*!< RFMC (Bit 8) */ + #define R_CANFD_CFDRFSTS_RFMC_Msk (0xff00UL) /*!< RFMC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDRFPCTR ======================================================= */ + #define R_CANFD_CFDRFPCTR_RFPC_Pos (0UL) /*!< RFPC (Bit 0) */ + #define R_CANFD_CFDRFPCTR_RFPC_Msk (0xffUL) /*!< RFPC (Bitfield-Mask: 0xff) */ +/* ======================================================== CFDCFCC ======================================================== */ + #define R_CANFD_CFDCFCC_CFE_Pos (0UL) /*!< CFE (Bit 0) */ + #define R_CANFD_CFDCFCC_CFE_Msk (0x1UL) /*!< CFE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFRXIE_Pos (1UL) /*!< CFRXIE (Bit 1) */ + #define R_CANFD_CFDCFCC_CFRXIE_Msk (0x2UL) /*!< CFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFTXIE_Pos (2UL) /*!< CFTXIE (Bit 2) */ + #define R_CANFD_CFDCFCC_CFTXIE_Msk (0x4UL) /*!< CFTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFPLS_Pos (4UL) /*!< CFPLS (Bit 4) */ + #define R_CANFD_CFDCFCC_CFPLS_Msk (0x70UL) /*!< CFPLS (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDCFCC_CFM_Pos (8UL) /*!< CFM (Bit 8) */ + #define R_CANFD_CFDCFCC_CFM_Msk (0x300UL) /*!< CFM (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDCFCC_CFITSS_Pos (10UL) /*!< CFITSS (Bit 10) */ + #define R_CANFD_CFDCFCC_CFITSS_Msk (0x400UL) /*!< CFITSS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFITR_Pos (11UL) /*!< CFITR (Bit 11) */ + #define R_CANFD_CFDCFCC_CFITR_Msk (0x800UL) /*!< CFITR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFIM_Pos (12UL) /*!< CFIM (Bit 12) */ + #define R_CANFD_CFDCFCC_CFIM_Msk (0x1000UL) /*!< CFIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCC_CFIGCV_Pos (13UL) /*!< CFIGCV (Bit 13) */ + #define R_CANFD_CFDCFCC_CFIGCV_Msk (0xe000UL) /*!< CFIGCV (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDCFCC_CFTML_Pos (16UL) /*!< CFTML (Bit 16) */ + #define R_CANFD_CFDCFCC_CFTML_Msk (0x1f0000UL) /*!< CFTML (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDCFCC_CFDC_Pos (21UL) /*!< CFDC (Bit 21) */ + #define R_CANFD_CFDCFCC_CFDC_Msk (0xe00000UL) /*!< CFDC (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDCFCC_CFITT_Pos (24UL) /*!< CFITT (Bit 24) */ + #define R_CANFD_CFDCFCC_CFITT_Msk (0xff000000UL) /*!< CFITT (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCFSTS ======================================================== */ + #define R_CANFD_CFDCFSTS_CFEMP_Pos (0UL) /*!< CFEMP (Bit 0) */ + #define R_CANFD_CFDCFSTS_CFEMP_Msk (0x1UL) /*!< CFEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFFLL_Pos (1UL) /*!< CFFLL (Bit 1) */ + #define R_CANFD_CFDCFSTS_CFFLL_Msk (0x2UL) /*!< CFFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFMLT_Pos (2UL) /*!< CFMLT (Bit 2) */ + #define R_CANFD_CFDCFSTS_CFMLT_Msk (0x4UL) /*!< CFMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFRXIF_Pos (3UL) /*!< CFRXIF (Bit 3) */ + #define R_CANFD_CFDCFSTS_CFRXIF_Msk (0x8UL) /*!< CFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFTXIF_Pos (4UL) /*!< CFTXIF (Bit 4) */ + #define R_CANFD_CFDCFSTS_CFTXIF_Msk (0x10UL) /*!< CFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFMC_Pos (8UL) /*!< CFMC (Bit 8) */ + #define R_CANFD_CFDCFSTS_CFMC_Msk (0xff00UL) /*!< CFMC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCFPCTR ======================================================= */ + #define R_CANFD_CFDCFPCTR_CFPC_Pos (0UL) /*!< CFPC (Bit 0) */ + #define R_CANFD_CFDCFPCTR_CFPC_Msk (0xffUL) /*!< CFPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDFESTS ======================================================== */ + #define R_CANFD_CFDFESTS_RFXEMP_Pos (0UL) /*!< RFXEMP (Bit 0) */ + #define R_CANFD_CFDFESTS_RFXEMP_Msk (0x3UL) /*!< RFXEMP (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDFESTS_CFXEMP_Pos (8UL) /*!< CFXEMP (Bit 8) */ + #define R_CANFD_CFDFESTS_CFXEMP_Msk (0x100UL) /*!< CFXEMP (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDFFSTS ======================================================== */ + #define R_CANFD_CFDFFSTS_RFXFLL_Pos (0UL) /*!< RFXFLL (Bit 0) */ + #define R_CANFD_CFDFFSTS_RFXFLL_Msk (0x3UL) /*!< RFXFLL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Pos (8UL) /*!< CFXFLL (Bit 8) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Msk (0x100UL) /*!< CFXFLL (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDFMSTS ======================================================== */ + #define R_CANFD_CFDFMSTS_RFXMLT_Pos (0UL) /*!< RFXMLT (Bit 0) */ + #define R_CANFD_CFDFMSTS_RFXMLT_Msk (0x3UL) /*!< RFXMLT (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Pos (8UL) /*!< CFXMLT (Bit 8) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Msk (0x100UL) /*!< CFXMLT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDRFISTS ======================================================= */ + #define R_CANFD_CFDRFISTS_RFXIF_Pos (0UL) /*!< RFXIF (Bit 0) */ + #define R_CANFD_CFDRFISTS_RFXIF_Msk (0x1UL) /*!< RFXIF (Bitfield-Mask: 0x01) */ +/* ======================================================== CFDTMC ========================================================= */ + #define R_CANFD_CFDTMC_TMTR_Pos (0UL) /*!< TMTR (Bit 0) */ + #define R_CANFD_CFDTMC_TMTR_Msk (0x1UL) /*!< TMTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMC_TMTAR_Pos (1UL) /*!< TMTAR (Bit 1) */ + #define R_CANFD_CFDTMC_TMTAR_Msk (0x2UL) /*!< TMTAR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMC_TMOM_Pos (2UL) /*!< TMOM (Bit 2) */ + #define R_CANFD_CFDTMC_TMOM_Msk (0x4UL) /*!< TMOM (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDTMSTS ======================================================== */ + #define R_CANFD_CFDTMSTS_TMTSTS_Pos (0UL) /*!< TMTSTS (Bit 0) */ + #define R_CANFD_CFDTMSTS_TMTSTS_Msk (0x1UL) /*!< TMTSTS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMSTS_TMTRF_Pos (1UL) /*!< TMTRF (Bit 1) */ + #define R_CANFD_CFDTMSTS_TMTRF_Msk (0x6UL) /*!< TMTRF (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDTMSTS_TMTRM_Pos (3UL) /*!< TMTRM (Bit 3) */ + #define R_CANFD_CFDTMSTS_TMTRM_Msk (0x8UL) /*!< TMTRM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTMSTS_TMTARM_Pos (4UL) /*!< TMTARM (Bit 4) */ + #define R_CANFD_CFDTMSTS_TMTARM_Msk (0x10UL) /*!< TMTARM (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTMTRSTS ======================================================= */ + #define R_CANFD_CFDTMTRSTS_CFDTMTRSTSg_Pos (0UL) /*!< CFDTMTRSTSg (Bit 0) */ + #define R_CANFD_CFDTMTRSTS_CFDTMTRSTSg_Msk (0xfUL) /*!< CFDTMTRSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTARSTS ====================================================== */ + #define R_CANFD_CFDTMTARSTS_CFDTMTARSTSg_Pos (0UL) /*!< CFDTMTARSTSg (Bit 0) */ + #define R_CANFD_CFDTMTARSTS_CFDTMTARSTSg_Msk (0xfUL) /*!< CFDTMTARSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTCSTS ======================================================= */ + #define R_CANFD_CFDTMTCSTS_CFDTMTCSTSg_Pos (0UL) /*!< CFDTMTCSTSg (Bit 0) */ + #define R_CANFD_CFDTMTCSTS_CFDTMTCSTSg_Msk (0xfUL) /*!< CFDTMTCSTSg (Bitfield-Mask: 0x0f) */ +/* ====================================================== CFDTMTASTS ======================================================= */ + #define R_CANFD_CFDTMTASTS_CFDTMTASTSg_Pos (0UL) /*!< CFDTMTASTSg (Bit 0) */ + #define R_CANFD_CFDTMTASTS_CFDTMTASTSg_Msk (0xfUL) /*!< CFDTMTASTSg (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDTMIEC ======================================================== */ + #define R_CANFD_CFDTMIEC_TMIEg_Pos (0UL) /*!< TMIEg (Bit 0) */ + #define R_CANFD_CFDTMIEC_TMIEg_Msk (0xfUL) /*!< TMIEg (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDTXQCC0 ======================================================= */ + #define R_CANFD_CFDTXQCC0_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC0_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC0_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC0_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC0_TXQDC_Msk (0x300UL) /*!< TXQDC (Bitfield-Mask: 0x03) */ +/* ====================================================== CFDTXQSTS0 ======================================================= */ + #define R_CANFD_CFDTXQSTS0_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS0_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS0_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS0_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS0_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDTXQPCTR0 ====================================================== */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTHLCC ======================================================== */ + #define R_CANFD_CFDTHLCC_THLE_Pos (0UL) /*!< THLE (Bit 0) */ + #define R_CANFD_CFDTHLCC_THLE_Msk (0x1UL) /*!< THLE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLCC_THLIE_Pos (8UL) /*!< THLIE (Bit 8) */ + #define R_CANFD_CFDTHLCC_THLIE_Msk (0x100UL) /*!< THLIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLCC_THLIM_Pos (9UL) /*!< THLIM (Bit 9) */ + #define R_CANFD_CFDTHLCC_THLIM_Msk (0x200UL) /*!< THLIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLCC_THLDTE_Pos (10UL) /*!< THLDTE (Bit 10) */ + #define R_CANFD_CFDTHLCC_THLDTE_Msk (0x400UL) /*!< THLDTE (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDTHLSTS ======================================================= */ + #define R_CANFD_CFDTHLSTS_THLEMP_Pos (0UL) /*!< THLEMP (Bit 0) */ + #define R_CANFD_CFDTHLSTS_THLEMP_Msk (0x1UL) /*!< THLEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLFLL_Pos (1UL) /*!< THLFLL (Bit 1) */ + #define R_CANFD_CFDTHLSTS_THLFLL_Msk (0x2UL) /*!< THLFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLELT_Pos (2UL) /*!< THLELT (Bit 2) */ + #define R_CANFD_CFDTHLSTS_THLELT_Msk (0x4UL) /*!< THLELT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLIF_Pos (3UL) /*!< THLIF (Bit 3) */ + #define R_CANFD_CFDTHLSTS_THLIF_Msk (0x8UL) /*!< THLIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTHLSTS_THLMC_Pos (8UL) /*!< THLMC (Bit 8) */ + #define R_CANFD_CFDTHLSTS_THLMC_Msk (0x3f00UL) /*!< THLMC (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDTHLPCTR ======================================================= */ + #define R_CANFD_CFDTHLPCTR_THLPC_Pos (0UL) /*!< THLPC (Bit 0) */ + #define R_CANFD_CFDTHLPCTR_THLPC_Msk (0xffUL) /*!< THLPC (Bitfield-Mask: 0xff) */ +/* ===================================================== CFDGTINTSTS0 ====================================================== */ + #define R_CANFD_CFDGTINTSTS0_TSIF0_Pos (0UL) /*!< TSIF0 (Bit 0) */ + #define R_CANFD_CFDGTINTSTS0_TSIF0_Msk (0x1UL) /*!< TSIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TAIF0_Pos (1UL) /*!< TAIF0 (Bit 1) */ + #define R_CANFD_CFDGTINTSTS0_TAIF0_Msk (0x2UL) /*!< TAIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TQIF0_Pos (2UL) /*!< TQIF0 (Bit 2) */ + #define R_CANFD_CFDGTINTSTS0_TQIF0_Msk (0x4UL) /*!< TQIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF0_Pos (3UL) /*!< CFTIF0 (Bit 3) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF0_Msk (0x8UL) /*!< CFTIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_THIF0_Pos (4UL) /*!< THIF0 (Bit 4) */ + #define R_CANFD_CFDGTINTSTS0_THIF0_Msk (0x10UL) /*!< THIF0 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGTSTCFG ======================================================= */ + #define R_CANFD_CFDGTSTCFG_RTMPS_Pos (16UL) /*!< RTMPS (Bit 16) */ + #define R_CANFD_CFDGTSTCFG_RTMPS_Msk (0x3ff0000UL) /*!< RTMPS (Bitfield-Mask: 0x3ff) */ +/* ====================================================== CFDGTSTCTR ======================================================= */ + #define R_CANFD_CFDGTSTCTR_RTME_Pos (2UL) /*!< RTME (Bit 2) */ + #define R_CANFD_CFDGTSTCTR_RTME_Msk (0x4UL) /*!< RTME (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGFDCFG ======================================================= */ + #define R_CANFD_CFDGFDCFG_RPED_Pos (0UL) /*!< RPED (Bit 0) */ + #define R_CANFD_CFDGFDCFG_RPED_Msk (0x1UL) /*!< RPED (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGFDCFG_TSCCFG_Pos (8UL) /*!< TSCCFG (Bit 8) */ + #define R_CANFD_CFDGFDCFG_TSCCFG_Msk (0x300UL) /*!< TSCCFG (Bitfield-Mask: 0x03) */ +/* ======================================================= CFDGLOCKK ======================================================= */ + #define R_CANFD_CFDGLOCKK_LOCK_Pos (0UL) /*!< LOCK (Bit 0) */ + #define R_CANFD_CFDGLOCKK_LOCK_Msk (0xffffUL) /*!< LOCK (Bitfield-Mask: 0xffff) */ +/* ===================================================== CFDGAFLIGNENT ===================================================== */ + #define R_CANFD_CFDGAFLIGNENT_IRN_Pos (0UL) /*!< IRN (Bit 0) */ + #define R_CANFD_CFDGAFLIGNENT_IRN_Msk (0x1fUL) /*!< IRN (Bitfield-Mask: 0x1f) */ +/* ===================================================== CFDGAFLIGNCTR ===================================================== */ + #define R_CANFD_CFDGAFLIGNCTR_IREN_Pos (0UL) /*!< IREN (Bit 0) */ + #define R_CANFD_CFDGAFLIGNCTR_IREN_Msk (0x1UL) /*!< IREN (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFLIGNCTR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_CANFD_CFDGAFLIGNCTR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDCDTCT ======================================================== */ + #define R_CANFD_CFDCDTCT_RFDMAE0_Pos (0UL) /*!< RFDMAE0 (Bit 0) */ + #define R_CANFD_CFDCDTCT_RFDMAE0_Msk (0x1UL) /*!< RFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE1_Pos (1UL) /*!< RFDMAE1 (Bit 1) */ + #define R_CANFD_CFDCDTCT_RFDMAE1_Msk (0x2UL) /*!< RFDMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Pos (8UL) /*!< CFDMAE0 (Bit 8) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Msk (0x100UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDCDTSTS ======================================================= */ + #define R_CANFD_CFDCDTSTS_RFDMASTS0_Pos (0UL) /*!< RFDMASTS0 (Bit 0) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS0_Msk (0x1UL) /*!< RFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS1_Pos (1UL) /*!< RFDMASTS1 (Bit 1) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS1_Msk (0x2UL) /*!< RFDMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Pos (8UL) /*!< CFDMASTS0 (Bit 8) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Msk (0x100UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGRSTC ======================================================== */ + #define R_CANFD_CFDGRSTC_SRST_Pos (0UL) /*!< SRST (Bit 0) */ + #define R_CANFD_CFDGRSTC_SRST_Msk (0x1UL) /*!< SRST (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGRSTC_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_CANFD_CFDGRSTC_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDRPGACC ======================================================= */ + #define R_CANFD_CFDRPGACC_RDTA_Pos (0UL) /*!< RDTA (Bit 0) */ + #define R_CANFD_CFDRPGACC_RDTA_Msk (0xffffffffUL) /*!< RDTA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CRCCR0 ========================================================= */ + #define R_CRC_CRCCR0_DORCLR_Pos (7UL) /*!< DORCLR (Bit 7) */ + #define R_CRC_CRCCR0_DORCLR_Msk (0x80UL) /*!< DORCLR (Bitfield-Mask: 0x01) */ + #define R_CRC_CRCCR0_LMS_Pos (6UL) /*!< LMS (Bit 6) */ + #define R_CRC_CRCCR0_LMS_Msk (0x40UL) /*!< LMS (Bitfield-Mask: 0x01) */ + #define R_CRC_CRCCR0_GPS_Pos (0UL) /*!< GPS (Bit 0) */ + #define R_CRC_CRCCR0_GPS_Msk (0x7UL) /*!< GPS (Bitfield-Mask: 0x07) */ +/* ======================================================== CRCCR1 ========================================================= */ + #define R_CRC_CRCCR1_CRCSEN_Pos (7UL) /*!< CRCSEN (Bit 7) */ + #define R_CRC_CRCCR1_CRCSEN_Msk (0x80UL) /*!< CRCSEN (Bitfield-Mask: 0x01) */ + #define R_CRC_CRCCR1_CRCSWR_Pos (6UL) /*!< CRCSWR (Bit 6) */ + #define R_CRC_CRCCR1_CRCSWR_Msk (0x40UL) /*!< CRCSWR (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCDIR ========================================================= */ + #define R_CRC_CRCDIR_CRCDIR_Pos (0UL) /*!< CRCDIR (Bit 0) */ + #define R_CRC_CRCDIR_CRCDIR_Msk (0xffffffffUL) /*!< CRCDIR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CRCDIR_BY ======================================================= */ + #define R_CRC_CRCDIR_BY_CRCDIR_BY_Pos (0UL) /*!< CRCDIR_BY (Bit 0) */ + #define R_CRC_CRCDIR_BY_CRCDIR_BY_Msk (0xffUL) /*!< CRCDIR_BY (Bitfield-Mask: 0xff) */ +/* ======================================================== CRCDOR ========================================================= */ + #define R_CRC_CRCDOR_CRCDOR_Pos (0UL) /*!< CRCDOR (Bit 0) */ + #define R_CRC_CRCDOR_CRCDOR_Msk (0xffffffffUL) /*!< CRCDOR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CRCDOR_HA ======================================================= */ + #define R_CRC_CRCDOR_HA_CRCDOR_HA_Pos (0UL) /*!< CRCDOR_HA (Bit 0) */ + #define R_CRC_CRCDOR_HA_CRCDOR_HA_Msk (0xffffUL) /*!< CRCDOR_HA (Bitfield-Mask: 0xffff) */ +/* ======================================================= CRCDOR_BY ======================================================= */ + #define R_CRC_CRCDOR_BY_CRCDOR_BY_Pos (0UL) /*!< CRCDOR_BY (Bit 0) */ + #define R_CRC_CRCDOR_BY_CRCDOR_BY_Msk (0xffUL) /*!< CRCDOR_BY (Bitfield-Mask: 0xff) */ +/* ======================================================== CRCSAR ========================================================= */ + #define R_CRC_CRCSAR_CRCSA_Pos (0UL) /*!< CRCSA (Bit 0) */ + #define R_CRC_CRCSAR_CRCSA_Msk (0x3fffUL) /*!< CRCSA (Bitfield-Mask: 0x3fff) */ + +/* =========================================================================================================================== */ +/* ================ R_DAC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DACR ========================================================== */ + #define R_DAC_DACR_DAE_Pos (5UL) /*!< DAE (Bit 5) */ + #define R_DAC_DACR_DAE_Msk (0x20UL) /*!< DAE (Bitfield-Mask: 0x01) */ + #define R_DAC_DACR_DAOE_Pos (6UL) /*!< DAOE (Bit 6) */ + #define R_DAC_DACR_DAOE_Msk (0x40UL) /*!< DAOE (Bitfield-Mask: 0x01) */ +/* ========================================================= DADR ========================================================== */ + #define R_DAC_DADR_DADR_Pos (0UL) /*!< DADR (Bit 0) */ + #define R_DAC_DADR_DADR_Msk (0xffffUL) /*!< DADR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DADPR ========================================================= */ + #define R_DAC_DADPR_DPSEL_Pos (7UL) /*!< DPSEL (Bit 7) */ + #define R_DAC_DADPR_DPSEL_Msk (0x80UL) /*!< DPSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== DAADSCR ======================================================== */ + #define R_DAC_DAADSCR_DAADST_Pos (7UL) /*!< DAADST (Bit 7) */ + #define R_DAC_DAADSCR_DAADST_Msk (0x80UL) /*!< DAADST (Bitfield-Mask: 0x01) */ +/* ======================================================= DAVREFCR ======================================================== */ + #define R_DAC_DAVREFCR_REF_Pos (0UL) /*!< REF (Bit 0) */ + #define R_DAC_DAVREFCR_REF_Msk (0x7UL) /*!< REF (Bitfield-Mask: 0x07) */ +/* ========================================================= DAPC ========================================================== */ + #define R_DAC_DAPC_PUMPEN_Pos (0UL) /*!< PUMPEN (Bit 0) */ + #define R_DAC_DAPC_PUMPEN_Msk (0x1UL) /*!< PUMPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== DAAMPCR ======================================================== */ + #define R_DAC_DAAMPCR_DAAMP_Pos (6UL) /*!< DAAMP (Bit 6) */ + #define R_DAC_DAAMPCR_DAAMP_Msk (0x40UL) /*!< DAAMP (Bitfield-Mask: 0x01) */ +/* ======================================================== DAASWCR ======================================================== */ + #define R_DAC_DAASWCR_DAASW1_Pos (7UL) /*!< DAASW1 (Bit 7) */ + #define R_DAC_DAASWCR_DAASW1_Msk (0x80UL) /*!< DAASW1 (Bitfield-Mask: 0x01) */ + #define R_DAC_DAASWCR_DAASW0_Pos (6UL) /*!< DAASW0 (Bit 6) */ + #define R_DAC_DAASWCR_DAASW0_Msk (0x40UL) /*!< DAASW0 (Bitfield-Mask: 0x01) */ +/* ======================================================== DAADUSR ======================================================== */ + #define R_DAC_DAADUSR_AMADSEL0_Pos (0UL) /*!< AMADSEL0 (Bit 0) */ + #define R_DAC_DAADUSR_AMADSEL0_Msk (0x1UL) /*!< AMADSEL0 (Bitfield-Mask: 0x01) */ + #define R_DAC_DAADUSR_AMADSEL1_Pos (1UL) /*!< AMADSEL1 (Bit 1) */ + #define R_DAC_DAADUSR_AMADSEL1_Msk (0x2UL) /*!< AMADSEL1 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== DBGSTR ========================================================= */ + #define R_DEBUG_DBGSTR_CDBGPWRUPREQ_Pos (28UL) /*!< CDBGPWRUPREQ (Bit 28) */ + #define R_DEBUG_DBGSTR_CDBGPWRUPREQ_Msk (0x10000000UL) /*!< CDBGPWRUPREQ (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTR_CDBGPWRUPACK_Pos (29UL) /*!< CDBGPWRUPACK (Bit 29) */ + #define R_DEBUG_DBGSTR_CDBGPWRUPACK_Msk (0x20000000UL) /*!< CDBGPWRUPACK (Bitfield-Mask: 0x01) */ +/* ======================================================= DBGSTOPCR ======================================================= */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RPER_Pos (24UL) /*!< DBGSTOP_RPER (Bit 24) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RPER_Msk (0x1000000UL) /*!< DBGSTOP_RPER (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_LVD_Pos (16UL) /*!< DBGSTOP_LVD (Bit 16) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_LVD_Msk (0x10000UL) /*!< DBGSTOP_LVD (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RECCR_Pos (25UL) /*!< DBGSTOP_RECCR (Bit 25) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_RECCR_Msk (0x2000000UL) /*!< DBGSTOP_RECCR (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_IWDT_Pos (0UL) /*!< DBGSTOP_IWDT (Bit 0) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_IWDT_Msk (0x1UL) /*!< DBGSTOP_IWDT (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_WDT_Pos (1UL) /*!< DBGSTOP_WDT (Bit 1) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_WDT_Msk (0x2UL) /*!< DBGSTOP_WDT (Bitfield-Mask: 0x01) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_CPER_Pos (31UL) /*!< DBGSTOP_CPER (Bit 31) */ + #define R_DEBUG_DBGSTOPCR_DBGSTOP_CPER_Msk (0x80000000UL) /*!< DBGSTOP_CPER (Bitfield-Mask: 0x01) */ +/* ======================================================= FSBLSTAT ======================================================== */ + #define R_DEBUG_FSBLSTAT_CS_Pos (0UL) /*!< CS (Bit 0) */ + #define R_DEBUG_FSBLSTAT_CS_Msk (0x1UL) /*!< CS (Bitfield-Mask: 0x01) */ + #define R_DEBUG_FSBLSTAT_RS_Pos (1UL) /*!< RS (Bit 1) */ + #define R_DEBUG_FSBLSTAT_RS_Msk (0x2UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_DEBUG_FSBLSTAT_FSBLCLK_Pos (8UL) /*!< FSBLCLK (Bit 8) */ + #define R_DEBUG_FSBLSTAT_FSBLCLK_Msk (0x700UL) /*!< FSBLCLK (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DMAST ========================================================= */ + #define R_DMA_DMAST_DMST_Pos (0UL) /*!< DMST (Bit 0) */ + #define R_DMA_DMAST_DMST_Msk (0x1UL) /*!< DMST (Bitfield-Mask: 0x01) */ +/* ======================================================== DMECHR ========================================================= */ + #define R_DMA_DMECHR_DMECH_Pos (0UL) /*!< DMECH (Bit 0) */ + #define R_DMA_DMECHR_DMECH_Msk (0x7UL) /*!< DMECH (Bitfield-Mask: 0x07) */ + #define R_DMA_DMECHR_DMECHSAM_Pos (8UL) /*!< DMECHSAM (Bit 8) */ + #define R_DMA_DMECHR_DMECHSAM_Msk (0x100UL) /*!< DMECHSAM (Bitfield-Mask: 0x01) */ + #define R_DMA_DMECHR_DMESTA_Pos (16UL) /*!< DMESTA (Bit 16) */ + #define R_DMA_DMECHR_DMESTA_Msk (0x10000UL) /*!< DMESTA (Bitfield-Mask: 0x01) */ +/* ========================================================= DELSR ========================================================= */ + #define R_DMA_DELSR_IR_Pos (16UL) /*!< IR (Bit 16) */ + #define R_DMA_DELSR_IR_Msk (0x10000UL) /*!< IR (Bitfield-Mask: 0x01) */ + #define R_DMA_DELSR_DELS_Pos (0UL) /*!< DELS (Bit 0) */ + #define R_DMA_DELSR_DELS_Msk (0x1ffUL) /*!< DELS (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DMSAR ========================================================= */ + #define R_DMAC0_DMSAR_DMSAR_Pos (0UL) /*!< DMSAR (Bit 0) */ + #define R_DMAC0_DMSAR_DMSAR_Msk (0xffffffffUL) /*!< DMSAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DMDAR ========================================================= */ + #define R_DMAC0_DMDAR_DMDAR_Pos (0UL) /*!< DMDAR (Bit 0) */ + #define R_DMAC0_DMDAR_DMDAR_Msk (0xffffffffUL) /*!< DMDAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DMCRA ========================================================= */ + #define R_DMAC0_DMCRA_DMCRAH_Pos (16UL) /*!< DMCRAH (Bit 16) */ + #define R_DMAC0_DMCRA_DMCRAH_Msk (0x3ff0000UL) /*!< DMCRAH (Bitfield-Mask: 0x3ff) */ + #define R_DMAC0_DMCRA_DMCRAL_Pos (0UL) /*!< DMCRAL (Bit 0) */ + #define R_DMAC0_DMCRA_DMCRAL_Msk (0xffffUL) /*!< DMCRAL (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMCRB ========================================================= */ + #define R_DMAC0_DMCRB_DMCRBL_Pos (0UL) /*!< DMCRBL (Bit 0) */ + #define R_DMAC0_DMCRB_DMCRBL_Msk (0xffffUL) /*!< DMCRBL (Bitfield-Mask: 0xffff) */ + #define R_DMAC0_DMCRB_DMCRBH_Pos (16UL) /*!< DMCRBH (Bit 16) */ + #define R_DMAC0_DMCRB_DMCRBH_Msk (0xffff0000UL) /*!< DMCRBH (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMTMD ========================================================= */ + #define R_DMAC0_DMTMD_MD_Pos (14UL) /*!< MD (Bit 14) */ + #define R_DMAC0_DMTMD_MD_Msk (0xc000UL) /*!< MD (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_DTS_Pos (12UL) /*!< DTS (Bit 12) */ + #define R_DMAC0_DMTMD_DTS_Msk (0x3000UL) /*!< DTS (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_SZ_Pos (8UL) /*!< SZ (Bit 8) */ + #define R_DMAC0_DMTMD_SZ_Msk (0x300UL) /*!< SZ (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_DCTG_Pos (0UL) /*!< DCTG (Bit 0) */ + #define R_DMAC0_DMTMD_DCTG_Msk (0x3UL) /*!< DCTG (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMTMD_TKP_Pos (10UL) /*!< TKP (Bit 10) */ + #define R_DMAC0_DMTMD_TKP_Msk (0x400UL) /*!< TKP (Bitfield-Mask: 0x01) */ +/* ========================================================= DMINT ========================================================= */ + #define R_DMAC0_DMINT_DTIE_Pos (4UL) /*!< DTIE (Bit 4) */ + #define R_DMAC0_DMINT_DTIE_Msk (0x10UL) /*!< DTIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_ESIE_Pos (3UL) /*!< ESIE (Bit 3) */ + #define R_DMAC0_DMINT_ESIE_Msk (0x8UL) /*!< ESIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_RPTIE_Pos (2UL) /*!< RPTIE (Bit 2) */ + #define R_DMAC0_DMINT_RPTIE_Msk (0x4UL) /*!< RPTIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_SARIE_Pos (1UL) /*!< SARIE (Bit 1) */ + #define R_DMAC0_DMINT_SARIE_Msk (0x2UL) /*!< SARIE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMINT_DARIE_Pos (0UL) /*!< DARIE (Bit 0) */ + #define R_DMAC0_DMINT_DARIE_Msk (0x1UL) /*!< DARIE (Bitfield-Mask: 0x01) */ +/* ========================================================= DMAMD ========================================================= */ + #define R_DMAC0_DMAMD_SM_Pos (14UL) /*!< SM (Bit 14) */ + #define R_DMAC0_DMAMD_SM_Msk (0xc000UL) /*!< SM (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMAMD_SARA_Pos (8UL) /*!< SARA (Bit 8) */ + #define R_DMAC0_DMAMD_SARA_Msk (0x1f00UL) /*!< SARA (Bitfield-Mask: 0x1f) */ + #define R_DMAC0_DMAMD_DM_Pos (6UL) /*!< DM (Bit 6) */ + #define R_DMAC0_DMAMD_DM_Msk (0xc0UL) /*!< DM (Bitfield-Mask: 0x03) */ + #define R_DMAC0_DMAMD_DARA_Pos (0UL) /*!< DARA (Bit 0) */ + #define R_DMAC0_DMAMD_DARA_Msk (0x1fUL) /*!< DARA (Bitfield-Mask: 0x1f) */ + #define R_DMAC0_DMAMD_DADR_Pos (5UL) /*!< DADR (Bit 5) */ + #define R_DMAC0_DMAMD_DADR_Msk (0x20UL) /*!< DADR (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMAMD_SADR_Pos (13UL) /*!< SADR (Bit 13) */ + #define R_DMAC0_DMAMD_SADR_Msk (0x2000UL) /*!< SADR (Bitfield-Mask: 0x01) */ +/* ========================================================= DMOFR ========================================================= */ + #define R_DMAC0_DMOFR_DMOFR_Pos (0UL) /*!< DMOFR (Bit 0) */ + #define R_DMAC0_DMOFR_DMOFR_Msk (0xffffffffUL) /*!< DMOFR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DMCNT ========================================================= */ + #define R_DMAC0_DMCNT_DTE_Pos (0UL) /*!< DTE (Bit 0) */ + #define R_DMAC0_DMCNT_DTE_Msk (0x1UL) /*!< DTE (Bitfield-Mask: 0x01) */ +/* ========================================================= DMREQ ========================================================= */ + #define R_DMAC0_DMREQ_CLRS_Pos (4UL) /*!< CLRS (Bit 4) */ + #define R_DMAC0_DMREQ_CLRS_Msk (0x10UL) /*!< CLRS (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMREQ_SWREQ_Pos (0UL) /*!< SWREQ (Bit 0) */ + #define R_DMAC0_DMREQ_SWREQ_Msk (0x1UL) /*!< SWREQ (Bitfield-Mask: 0x01) */ +/* ========================================================= DMSTS ========================================================= */ + #define R_DMAC0_DMSTS_ACT_Pos (7UL) /*!< ACT (Bit 7) */ + #define R_DMAC0_DMSTS_ACT_Msk (0x80UL) /*!< ACT (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMSTS_DTIF_Pos (4UL) /*!< DTIF (Bit 4) */ + #define R_DMAC0_DMSTS_DTIF_Msk (0x10UL) /*!< DTIF (Bitfield-Mask: 0x01) */ + #define R_DMAC0_DMSTS_ESIF_Pos (0UL) /*!< ESIF (Bit 0) */ + #define R_DMAC0_DMSTS_ESIF_Msk (0x1UL) /*!< ESIF (Bitfield-Mask: 0x01) */ +/* ========================================================= DMSRR ========================================================= */ +/* ========================================================= DMDRR ========================================================= */ +/* ========================================================= DMSBS ========================================================= */ + #define R_DMAC0_DMSBS_DMSBSL_Pos (0UL) /*!< DMSBSL (Bit 0) */ + #define R_DMAC0_DMSBS_DMSBSL_Msk (0xffffUL) /*!< DMSBSL (Bitfield-Mask: 0xffff) */ + #define R_DMAC0_DMSBS_DMSBSH_Pos (16UL) /*!< DMSBSH (Bit 16) */ + #define R_DMAC0_DMSBS_DMSBSH_Msk (0xffff0000UL) /*!< DMSBSH (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMDBS ========================================================= */ + #define R_DMAC0_DMDBS_DMDBSL_Pos (0UL) /*!< DMDBSL (Bit 0) */ + #define R_DMAC0_DMDBS_DMDBSL_Msk (0xffffUL) /*!< DMDBSL (Bitfield-Mask: 0xffff) */ + #define R_DMAC0_DMDBS_DMDBSH_Pos (16UL) /*!< DMDBSH (Bit 16) */ + #define R_DMAC0_DMDBS_DMDBSH_Msk (0xffff0000UL) /*!< DMDBSH (Bitfield-Mask: 0xffff) */ +/* ========================================================= DMBWR ========================================================= */ + #define R_DMAC0_DMBWR_BWE_Pos (0UL) /*!< BWE (Bit 0) */ + #define R_DMAC0_DMBWR_BWE_Msk (0x1UL) /*!< BWE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DOCR ========================================================== */ + #define R_DOC_DOCR_DOPCFCL_Pos (6UL) /*!< DOPCFCL (Bit 6) */ + #define R_DOC_DOCR_DOPCFCL_Msk (0x40UL) /*!< DOPCFCL (Bitfield-Mask: 0x01) */ + #define R_DOC_DOCR_DOPCF_Pos (5UL) /*!< DOPCF (Bit 5) */ + #define R_DOC_DOCR_DOPCF_Msk (0x20UL) /*!< DOPCF (Bitfield-Mask: 0x01) */ + #define R_DOC_DOCR_DCSEL_Pos (2UL) /*!< DCSEL (Bit 2) */ + #define R_DOC_DOCR_DCSEL_Msk (0x4UL) /*!< DCSEL (Bitfield-Mask: 0x01) */ + #define R_DOC_DOCR_OMS_Pos (0UL) /*!< OMS (Bit 0) */ + #define R_DOC_DOCR_OMS_Msk (0x3UL) /*!< OMS (Bitfield-Mask: 0x03) */ +/* ========================================================= DODIR ========================================================= */ + #define R_DOC_DODIR_DODIR_Pos (0UL) /*!< DODIR (Bit 0) */ + #define R_DOC_DODIR_DODIR_Msk (0xffffUL) /*!< DODIR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DODSR ========================================================= */ + #define R_DOC_DODSR_DODSR_Pos (0UL) /*!< DODSR (Bit 0) */ + #define R_DOC_DODSR_DODSR_Msk (0xffffUL) /*!< DODSR (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ R_DRW ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CONTROL ======================================================== */ + #define R_DRW_CONTROL_SPANSTORE_Pos (23UL) /*!< SPANSTORE (Bit 23) */ + #define R_DRW_CONTROL_SPANSTORE_Msk (0x800000UL) /*!< SPANSTORE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_SPANABORT_Pos (22UL) /*!< SPANABORT (Bit 22) */ + #define R_DRW_CONTROL_SPANABORT_Msk (0x400000UL) /*!< SPANABORT (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNIONCD_Pos (21UL) /*!< UNIONCD (Bit 21) */ + #define R_DRW_CONTROL_UNIONCD_Msk (0x200000UL) /*!< UNIONCD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNIONAB_Pos (20UL) /*!< UNIONAB (Bit 20) */ + #define R_DRW_CONTROL_UNIONAB_Msk (0x100000UL) /*!< UNIONAB (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNION56_Pos (19UL) /*!< UNION56 (Bit 19) */ + #define R_DRW_CONTROL_UNION56_Msk (0x80000UL) /*!< UNION56 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNION34_Pos (18UL) /*!< UNION34 (Bit 18) */ + #define R_DRW_CONTROL_UNION34_Msk (0x40000UL) /*!< UNION34 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_UNION12_Pos (17UL) /*!< UNION12 (Bit 17) */ + #define R_DRW_CONTROL_UNION12_Msk (0x20000UL) /*!< UNION12 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_BAND2ENABLE_Pos (16UL) /*!< BAND2ENABLE (Bit 16) */ + #define R_DRW_CONTROL_BAND2ENABLE_Msk (0x10000UL) /*!< BAND2ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_BAND1ENABLE_Pos (15UL) /*!< BAND1ENABLE (Bit 15) */ + #define R_DRW_CONTROL_BAND1ENABLE_Msk (0x8000UL) /*!< BAND1ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM6THRESHOLD_Pos (14UL) /*!< LIM6THRESHOLD (Bit 14) */ + #define R_DRW_CONTROL_LIM6THRESHOLD_Msk (0x4000UL) /*!< LIM6THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM5THRESHOLD_Pos (13UL) /*!< LIM5THRESHOLD (Bit 13) */ + #define R_DRW_CONTROL_LIM5THRESHOLD_Msk (0x2000UL) /*!< LIM5THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM4THRESHOLD_Pos (12UL) /*!< LIM4THRESHOLD (Bit 12) */ + #define R_DRW_CONTROL_LIM4THRESHOLD_Msk (0x1000UL) /*!< LIM4THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM3THRESHOLD_Pos (11UL) /*!< LIM3THRESHOLD (Bit 11) */ + #define R_DRW_CONTROL_LIM3THRESHOLD_Msk (0x800UL) /*!< LIM3THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM2THRESHOLD_Pos (10UL) /*!< LIM2THRESHOLD (Bit 10) */ + #define R_DRW_CONTROL_LIM2THRESHOLD_Msk (0x400UL) /*!< LIM2THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM1THRESHOLD_Pos (9UL) /*!< LIM1THRESHOLD (Bit 9) */ + #define R_DRW_CONTROL_LIM1THRESHOLD_Msk (0x200UL) /*!< LIM1THRESHOLD (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_QUAD3ENABLE_Pos (8UL) /*!< QUAD3ENABLE (Bit 8) */ + #define R_DRW_CONTROL_QUAD3ENABLE_Msk (0x100UL) /*!< QUAD3ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_QUAD2ENABLE_Pos (7UL) /*!< QUAD2ENABLE (Bit 7) */ + #define R_DRW_CONTROL_QUAD2ENABLE_Msk (0x80UL) /*!< QUAD2ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_QUAD1ENABLE_Pos (6UL) /*!< QUAD1ENABLE (Bit 6) */ + #define R_DRW_CONTROL_QUAD1ENABLE_Msk (0x40UL) /*!< QUAD1ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM6ENABLE_Pos (5UL) /*!< LIM6ENABLE (Bit 5) */ + #define R_DRW_CONTROL_LIM6ENABLE_Msk (0x20UL) /*!< LIM6ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM5ENABLE_Pos (4UL) /*!< LIM5ENABLE (Bit 4) */ + #define R_DRW_CONTROL_LIM5ENABLE_Msk (0x10UL) /*!< LIM5ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM4ENABLE_Pos (3UL) /*!< LIM4ENABLE (Bit 3) */ + #define R_DRW_CONTROL_LIM4ENABLE_Msk (0x8UL) /*!< LIM4ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM3ENABLE_Pos (2UL) /*!< LIM3ENABLE (Bit 2) */ + #define R_DRW_CONTROL_LIM3ENABLE_Msk (0x4UL) /*!< LIM3ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM2ENABLE_Pos (1UL) /*!< LIM2ENABLE (Bit 1) */ + #define R_DRW_CONTROL_LIM2ENABLE_Msk (0x2UL) /*!< LIM2ENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL_LIM1ENABLE_Pos (0UL) /*!< LIM1ENABLE (Bit 0) */ + #define R_DRW_CONTROL_LIM1ENABLE_Msk (0x1UL) /*!< LIM1ENABLE (Bitfield-Mask: 0x01) */ +/* ======================================================= CONTROL2 ======================================================== */ + #define R_DRW_CONTROL2_RLEPIXELWIDTH_Pos (30UL) /*!< RLEPIXELWIDTH (Bit 30) */ + #define R_DRW_CONTROL2_RLEPIXELWIDTH_Msk (0xc0000000UL) /*!< RLEPIXELWIDTH (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_BDIA_Pos (29UL) /*!< BDIA (Bit 29) */ + #define R_DRW_CONTROL2_BDIA_Msk (0x20000000UL) /*!< BDIA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSIA_Pos (28UL) /*!< BSIA (Bit 28) */ + #define R_DRW_CONTROL2_BSIA_Msk (0x10000000UL) /*!< BSIA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_CLUTFORMAT_Pos (27UL) /*!< CLUTFORMAT (Bit 27) */ + #define R_DRW_CONTROL2_CLUTFORMAT_Msk (0x8000000UL) /*!< CLUTFORMAT (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_COLKEYENABLE_Pos (26UL) /*!< COLKEYENABLE (Bit 26) */ + #define R_DRW_CONTROL2_COLKEYENABLE_Msk (0x4000000UL) /*!< COLKEYENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_CLUTENABLE_Pos (25UL) /*!< CLUTENABLE (Bit 25) */ + #define R_DRW_CONTROL2_CLUTENABLE_Msk (0x2000000UL) /*!< CLUTENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_RLEENABLE_Pos (24UL) /*!< RLEENABLE (Bit 24) */ + #define R_DRW_CONTROL2_RLEENABLE_Msk (0x1000000UL) /*!< RLEENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_WRITEALPHA_Pos (22UL) /*!< WRITEALPHA (Bit 22) */ + #define R_DRW_CONTROL2_WRITEALPHA_Msk (0xc00000UL) /*!< WRITEALPHA (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_WRITEFORMAT10_Pos (20UL) /*!< WRITEFORMAT10 (Bit 20) */ + #define R_DRW_CONTROL2_WRITEFORMAT10_Msk (0x300000UL) /*!< WRITEFORMAT10 (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_READFORMAT10_Pos (18UL) /*!< READFORMAT10 (Bit 18) */ + #define R_DRW_CONTROL2_READFORMAT10_Msk (0xc0000UL) /*!< READFORMAT10 (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_TEXTUREFILTERY_Pos (17UL) /*!< TEXTUREFILTERY (Bit 17) */ + #define R_DRW_CONTROL2_TEXTUREFILTERY_Msk (0x20000UL) /*!< TEXTUREFILTERY (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTUREFILTERX_Pos (16UL) /*!< TEXTUREFILTERX (Bit 16) */ + #define R_DRW_CONTROL2_TEXTUREFILTERX_Msk (0x10000UL) /*!< TEXTUREFILTERX (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTURECLAMPY_Pos (15UL) /*!< TEXTURECLAMPY (Bit 15) */ + #define R_DRW_CONTROL2_TEXTURECLAMPY_Msk (0x8000UL) /*!< TEXTURECLAMPY (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTURECLAMPX_Pos (14UL) /*!< TEXTURECLAMPX (Bit 14) */ + #define R_DRW_CONTROL2_TEXTURECLAMPX_Msk (0x4000UL) /*!< TEXTURECLAMPX (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BC2_Pos (13UL) /*!< BC2 (Bit 13) */ + #define R_DRW_CONTROL2_BC2_Msk (0x2000UL) /*!< BC2 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BDI_Pos (12UL) /*!< BDI (Bit 12) */ + #define R_DRW_CONTROL2_BDI_Msk (0x1000UL) /*!< BDI (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSI_Pos (11UL) /*!< BSI (Bit 11) */ + #define R_DRW_CONTROL2_BSI_Msk (0x800UL) /*!< BSI (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BDF_Pos (10UL) /*!< BDF (Bit 10) */ + #define R_DRW_CONTROL2_BDF_Msk (0x400UL) /*!< BDF (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSF_Pos (9UL) /*!< BSF (Bit 9) */ + #define R_DRW_CONTROL2_BSF_Msk (0x200UL) /*!< BSF (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_WRITEFORMAT2_Pos (8UL) /*!< WRITEFORMAT2 (Bit 8) */ + #define R_DRW_CONTROL2_WRITEFORMAT2_Msk (0x100UL) /*!< WRITEFORMAT2 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BDFA_Pos (7UL) /*!< BDFA (Bit 7) */ + #define R_DRW_CONTROL2_BDFA_Msk (0x80UL) /*!< BDFA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_BSFA_Pos (6UL) /*!< BSFA (Bit 6) */ + #define R_DRW_CONTROL2_BSFA_Msk (0x40UL) /*!< BSFA (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_READFORMAT32_Pos (4UL) /*!< READFORMAT32 (Bit 4) */ + #define R_DRW_CONTROL2_READFORMAT32_Msk (0x30UL) /*!< READFORMAT32 (Bitfield-Mask: 0x03) */ + #define R_DRW_CONTROL2_USEACB_Pos (3UL) /*!< USEACB (Bit 3) */ + #define R_DRW_CONTROL2_USEACB_Msk (0x8UL) /*!< USEACB (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_PATTERNSOURCEL5_Pos (2UL) /*!< PATTERNSOURCEL5 (Bit 2) */ + #define R_DRW_CONTROL2_PATTERNSOURCEL5_Msk (0x4UL) /*!< PATTERNSOURCEL5 (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_TEXTUREENABLE_Pos (1UL) /*!< TEXTUREENABLE (Bit 1) */ + #define R_DRW_CONTROL2_TEXTUREENABLE_Msk (0x2UL) /*!< TEXTUREENABLE (Bitfield-Mask: 0x01) */ + #define R_DRW_CONTROL2_PATTERNENABLE_Pos (0UL) /*!< PATTERNENABLE (Bit 0) */ + #define R_DRW_CONTROL2_PATTERNENABLE_Msk (0x1UL) /*!< PATTERNENABLE (Bitfield-Mask: 0x01) */ +/* ======================================================== IRQCTL ========================================================= */ + #define R_DRW_IRQCTL_BUSIRQCLR_Pos (5UL) /*!< BUSIRQCLR (Bit 5) */ + #define R_DRW_IRQCTL_BUSIRQCLR_Msk (0x20UL) /*!< BUSIRQCLR (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_BUSIRQEN_Pos (4UL) /*!< BUSIRQEN (Bit 4) */ + #define R_DRW_IRQCTL_BUSIRQEN_Msk (0x10UL) /*!< BUSIRQEN (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_DLISTIRQCLR_Pos (3UL) /*!< DLISTIRQCLR (Bit 3) */ + #define R_DRW_IRQCTL_DLISTIRQCLR_Msk (0x8UL) /*!< DLISTIRQCLR (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_ENUMIRQCLR_Pos (2UL) /*!< ENUMIRQCLR (Bit 2) */ + #define R_DRW_IRQCTL_ENUMIRQCLR_Msk (0x4UL) /*!< ENUMIRQCLR (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_DLISTIRQEN_Pos (1UL) /*!< DLISTIRQEN (Bit 1) */ + #define R_DRW_IRQCTL_DLISTIRQEN_Msk (0x2UL) /*!< DLISTIRQEN (Bitfield-Mask: 0x01) */ + #define R_DRW_IRQCTL_ENUMIRQEN_Pos (0UL) /*!< ENUMIRQEN (Bit 0) */ + #define R_DRW_IRQCTL_ENUMIRQEN_Msk (0x1UL) /*!< ENUMIRQEN (Bitfield-Mask: 0x01) */ +/* ======================================================= CACHECTL ======================================================== */ + #define R_DRW_CACHECTL_CFLUSHTX_Pos (3UL) /*!< CFLUSHTX (Bit 3) */ + #define R_DRW_CACHECTL_CFLUSHTX_Msk (0x8UL) /*!< CFLUSHTX (Bitfield-Mask: 0x01) */ + #define R_DRW_CACHECTL_CENABLETX_Pos (2UL) /*!< CENABLETX (Bit 2) */ + #define R_DRW_CACHECTL_CENABLETX_Msk (0x4UL) /*!< CENABLETX (Bitfield-Mask: 0x01) */ + #define R_DRW_CACHECTL_CFLUSHFX_Pos (1UL) /*!< CFLUSHFX (Bit 1) */ + #define R_DRW_CACHECTL_CFLUSHFX_Msk (0x2UL) /*!< CFLUSHFX (Bitfield-Mask: 0x01) */ + #define R_DRW_CACHECTL_CENABLEFX_Pos (0UL) /*!< CENABLEFX (Bit 0) */ + #define R_DRW_CACHECTL_CENABLEFX_Msk (0x1UL) /*!< CENABLEFX (Bitfield-Mask: 0x01) */ +/* ======================================================== STATUS ========================================================= */ + #define R_DRW_STATUS_BUSERRMDL_Pos (10UL) /*!< BUSERRMDL (Bit 10) */ + #define R_DRW_STATUS_BUSERRMDL_Msk (0x400UL) /*!< BUSERRMDL (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSERRMTXMRL_Pos (9UL) /*!< BUSERRMTXMRL (Bit 9) */ + #define R_DRW_STATUS_BUSERRMTXMRL_Msk (0x200UL) /*!< BUSERRMTXMRL (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSERRMFB_Pos (8UL) /*!< BUSERRMFB (Bit 8) */ + #define R_DRW_STATUS_BUSERRMFB_Msk (0x100UL) /*!< BUSERRMFB (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSIRQ_Pos (6UL) /*!< BUSIRQ (Bit 6) */ + #define R_DRW_STATUS_BUSIRQ_Msk (0x40UL) /*!< BUSIRQ (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_DLISTIRQ_Pos (5UL) /*!< DLISTIRQ (Bit 5) */ + #define R_DRW_STATUS_DLISTIRQ_Msk (0x20UL) /*!< DLISTIRQ (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_ENUMIRQ_Pos (4UL) /*!< ENUMIRQ (Bit 4) */ + #define R_DRW_STATUS_ENUMIRQ_Msk (0x10UL) /*!< ENUMIRQ (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_DLISTACTIVE_Pos (3UL) /*!< DLISTACTIVE (Bit 3) */ + #define R_DRW_STATUS_DLISTACTIVE_Msk (0x8UL) /*!< DLISTACTIVE (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_CACHEDIRTY_Pos (2UL) /*!< CACHEDIRTY (Bit 2) */ + #define R_DRW_STATUS_CACHEDIRTY_Msk (0x4UL) /*!< CACHEDIRTY (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSYWRITE_Pos (1UL) /*!< BUSYWRITE (Bit 1) */ + #define R_DRW_STATUS_BUSYWRITE_Msk (0x2UL) /*!< BUSYWRITE (Bitfield-Mask: 0x01) */ + #define R_DRW_STATUS_BUSYENUM_Pos (0UL) /*!< BUSYENUM (Bit 0) */ + #define R_DRW_STATUS_BUSYENUM_Msk (0x1UL) /*!< BUSYENUM (Bitfield-Mask: 0x01) */ +/* ====================================================== HWREVISION ======================================================= */ + #define R_DRW_HWREVISION_ACBLEND_Pos (27UL) /*!< ACBLEND (Bit 27) */ + #define R_DRW_HWREVISION_ACBLEND_Msk (0x8000000UL) /*!< ACBLEND (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_COLORKEY_Pos (25UL) /*!< COLORKEY (Bit 25) */ + #define R_DRW_HWREVISION_COLORKEY_Msk (0x2000000UL) /*!< COLORKEY (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_TEXCLUT256_Pos (24UL) /*!< TEXCLUT256 (Bit 24) */ + #define R_DRW_HWREVISION_TEXCLUT256_Msk (0x1000000UL) /*!< TEXCLUT256 (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_RLEUNIT_Pos (23UL) /*!< RLEUNIT (Bit 23) */ + #define R_DRW_HWREVISION_RLEUNIT_Msk (0x800000UL) /*!< RLEUNIT (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_TEXCLU_Pos (21UL) /*!< TEXCLU (Bit 21) */ + #define R_DRW_HWREVISION_TEXCLU_Msk (0x200000UL) /*!< TEXCLU (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_PERFCOUNT_Pos (20UL) /*!< PERFCOUNT (Bit 20) */ + #define R_DRW_HWREVISION_PERFCOUNT_Msk (0x100000UL) /*!< PERFCOUNT (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_TXCACHE_Pos (19UL) /*!< TXCACHE (Bit 19) */ + #define R_DRW_HWREVISION_TXCACHE_Msk (0x80000UL) /*!< TXCACHE (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_FBCACHE_Pos (18UL) /*!< FBCACHE (Bit 18) */ + #define R_DRW_HWREVISION_FBCACHE_Msk (0x40000UL) /*!< FBCACHE (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_DLR_Pos (17UL) /*!< DLR (Bit 17) */ + #define R_DRW_HWREVISION_DLR_Msk (0x20000UL) /*!< DLR (Bitfield-Mask: 0x01) */ + #define R_DRW_HWREVISION_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_DRW_HWREVISION_REV_Msk (0xfffUL) /*!< REV (Bitfield-Mask: 0xfff) */ +/* ======================================================== COLOR1 ========================================================= */ + #define R_DRW_COLOR1_COLOR1A_Pos (24UL) /*!< COLOR1A (Bit 24) */ + #define R_DRW_COLOR1_COLOR1A_Msk (0xff000000UL) /*!< COLOR1A (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR1_COLOR1R_Pos (16UL) /*!< COLOR1R (Bit 16) */ + #define R_DRW_COLOR1_COLOR1R_Msk (0xff0000UL) /*!< COLOR1R (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR1_COLOR1G_Pos (8UL) /*!< COLOR1G (Bit 8) */ + #define R_DRW_COLOR1_COLOR1G_Msk (0xff00UL) /*!< COLOR1G (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR1_COLOR1B_Pos (0UL) /*!< COLOR1B (Bit 0) */ + #define R_DRW_COLOR1_COLOR1B_Msk (0xffUL) /*!< COLOR1B (Bitfield-Mask: 0xff) */ +/* ======================================================== COLOR2 ========================================================= */ + #define R_DRW_COLOR2_COLOR2A_Pos (24UL) /*!< COLOR2A (Bit 24) */ + #define R_DRW_COLOR2_COLOR2A_Msk (0xff000000UL) /*!< COLOR2A (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR2_COLOR2R_Pos (16UL) /*!< COLOR2R (Bit 16) */ + #define R_DRW_COLOR2_COLOR2R_Msk (0xff0000UL) /*!< COLOR2R (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR2_COLOR2G_Pos (8UL) /*!< COLOR2G (Bit 8) */ + #define R_DRW_COLOR2_COLOR2G_Msk (0xff00UL) /*!< COLOR2G (Bitfield-Mask: 0xff) */ + #define R_DRW_COLOR2_COLOR2B_Pos (0UL) /*!< COLOR2B (Bit 0) */ + #define R_DRW_COLOR2_COLOR2B_Msk (0xffUL) /*!< COLOR2B (Bitfield-Mask: 0xff) */ +/* ======================================================== PATTERN ======================================================== */ + #define R_DRW_PATTERN_PATTERN_Pos (0UL) /*!< PATTERN (Bit 0) */ + #define R_DRW_PATTERN_PATTERN_Msk (0xffUL) /*!< PATTERN (Bitfield-Mask: 0xff) */ +/* ======================================================== L1START ======================================================== */ + #define R_DRW_L1START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L1START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2START ======================================================== */ + #define R_DRW_L2START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L2START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L3START ======================================================== */ + #define R_DRW_L3START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L3START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L4START ======================================================== */ + #define R_DRW_L4START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L4START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L5START ======================================================== */ + #define R_DRW_L5START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L5START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L6START ======================================================== */ + #define R_DRW_L6START_LSTART_Pos (0UL) /*!< LSTART (Bit 0) */ + #define R_DRW_L6START_LSTART_Msk (0xffffffffUL) /*!< LSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L1XADD ========================================================= */ + #define R_DRW_L1XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L1XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2XADD ========================================================= */ + #define R_DRW_L2XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L2XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L3XADD ========================================================= */ + #define R_DRW_L3XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L3XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L4XADD ========================================================= */ + #define R_DRW_L4XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L4XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L5XADD ========================================================= */ + #define R_DRW_L5XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L5XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L6XADD ========================================================= */ + #define R_DRW_L6XADD_LXADD_Pos (0UL) /*!< LXADD (Bit 0) */ + #define R_DRW_L6XADD_LXADD_Msk (0xffffffffUL) /*!< LXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L1YADD ========================================================= */ + #define R_DRW_L1YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L1YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2YADD ========================================================= */ + #define R_DRW_L2YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L2YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L3YADD ========================================================= */ + #define R_DRW_L3YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L3YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L4YADD ========================================================= */ + #define R_DRW_L4YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L4YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L5YADD ========================================================= */ + #define R_DRW_L5YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L5YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L6YADD ========================================================= */ + #define R_DRW_L6YADD_LYADD_Pos (0UL) /*!< LYADD (Bit 0) */ + #define R_DRW_L6YADD_LYADD_Msk (0xffffffffUL) /*!< LYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L1BAND ========================================================= */ + #define R_DRW_L1BAND_LBAND_Pos (0UL) /*!< LBAND (Bit 0) */ + #define R_DRW_L1BAND_LBAND_Msk (0xffffffffUL) /*!< LBAND (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== L2BAND ========================================================= */ + #define R_DRW_L2BAND_LBAND_Pos (0UL) /*!< LBAND (Bit 0) */ + #define R_DRW_L2BAND_LBAND_Msk (0xffffffffUL) /*!< LBAND (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TEXORIGIN ======================================================= */ + #define R_DRW_TEXORIGIN_TEXORIGIN_Pos (0UL) /*!< TEXORIGIN (Bit 0) */ + #define R_DRW_TEXORIGIN_TEXORIGIN_Msk (0xffffffffUL) /*!< TEXORIGIN (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TEXPITCH ======================================================== */ + #define R_DRW_TEXPITCH_TEXPITCH_Pos (0UL) /*!< TEXPITCH (Bit 0) */ + #define R_DRW_TEXPITCH_TEXPITCH_Msk (0xffffffffUL) /*!< TEXPITCH (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TEXMASK ======================================================== */ + #define R_DRW_TEXMASK_TEXVMASK_Pos (11UL) /*!< TEXVMASK (Bit 11) */ + #define R_DRW_TEXMASK_TEXVMASK_Msk (0xfffff800UL) /*!< TEXVMASK (Bitfield-Mask: 0x1fffff) */ + #define R_DRW_TEXMASK_TEXUMASK_Pos (0UL) /*!< TEXUMASK (Bit 0) */ + #define R_DRW_TEXMASK_TEXUMASK_Msk (0x7ffUL) /*!< TEXUMASK (Bitfield-Mask: 0x7ff) */ +/* ======================================================== LUSTART ======================================================== */ + #define R_DRW_LUSTART_LUSTART_Pos (0UL) /*!< LUSTART (Bit 0) */ + #define R_DRW_LUSTART_LUSTART_Msk (0xffffffffUL) /*!< LUSTART (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LUXADD ========================================================= */ + #define R_DRW_LUXADD_LUXADD_Pos (0UL) /*!< LUXADD (Bit 0) */ + #define R_DRW_LUXADD_LUXADD_Msk (0xffffffffUL) /*!< LUXADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LUYADD ========================================================= */ + #define R_DRW_LUYADD_LUYADD_Pos (0UL) /*!< LUYADD (Bit 0) */ + #define R_DRW_LUYADD_LUYADD_Msk (0xffffffffUL) /*!< LUYADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= LVSTARTI ======================================================== */ + #define R_DRW_LVSTARTI_LVSTARTI_Pos (0UL) /*!< LVSTARTI (Bit 0) */ + #define R_DRW_LVSTARTI_LVSTARTI_Msk (0xffffffffUL) /*!< LVSTARTI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= LVSTARTF ======================================================== */ + #define R_DRW_LVSTARTF_LVSTARTF_Pos (0UL) /*!< LVSTARTF (Bit 0) */ + #define R_DRW_LVSTARTF_LVSTARTF_Msk (0xffffUL) /*!< LVSTARTF (Bitfield-Mask: 0xffff) */ +/* ======================================================== LVXADDI ======================================================== */ + #define R_DRW_LVXADDI_LVXADDI_Pos (0UL) /*!< LVXADDI (Bit 0) */ + #define R_DRW_LVXADDI_LVXADDI_Msk (0xffffffffUL) /*!< LVXADDI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LVYADDI ======================================================== */ + #define R_DRW_LVYADDI_LVYADDI_Pos (0UL) /*!< LVYADDI (Bit 0) */ + #define R_DRW_LVYADDI_LVYADDI_Msk (0xffffffffUL) /*!< LVYADDI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= LVYXADDF ======================================================== */ + #define R_DRW_LVYXADDF_LVYADDF_Pos (16UL) /*!< LVYADDF (Bit 16) */ + #define R_DRW_LVYXADDF_LVYADDF_Msk (0xffff0000UL) /*!< LVYADDF (Bitfield-Mask: 0xffff) */ + #define R_DRW_LVYXADDF_LVXADDF_Pos (0UL) /*!< LVXADDF (Bit 0) */ + #define R_DRW_LVYXADDF_LVXADDF_Msk (0xffffUL) /*!< LVXADDF (Bitfield-Mask: 0xffff) */ +/* ======================================================= TEXCLADDR ======================================================= */ + #define R_DRW_TEXCLADDR_CLADDR_Pos (0UL) /*!< CLADDR (Bit 0) */ + #define R_DRW_TEXCLADDR_CLADDR_Msk (0xffUL) /*!< CLADDR (Bitfield-Mask: 0xff) */ +/* ======================================================= TEXCLDATA ======================================================= */ + #define R_DRW_TEXCLDATA_CLDATA_Pos (0UL) /*!< CLDATA (Bit 0) */ + #define R_DRW_TEXCLDATA_CLDATA_Msk (0xffffffffUL) /*!< CLDATA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== TEXCLOFFSET ====================================================== */ + #define R_DRW_TEXCLOFFSET_CLOFFSET_Pos (0UL) /*!< CLOFFSET (Bit 0) */ + #define R_DRW_TEXCLOFFSET_CLOFFSET_Msk (0xffUL) /*!< CLOFFSET (Bitfield-Mask: 0xff) */ +/* ======================================================== COLKEY ========================================================= */ + #define R_DRW_COLKEY_COLKEYR_Pos (16UL) /*!< COLKEYR (Bit 16) */ + #define R_DRW_COLKEY_COLKEYR_Msk (0xff0000UL) /*!< COLKEYR (Bitfield-Mask: 0xff) */ + #define R_DRW_COLKEY_COLKEYG_Pos (8UL) /*!< COLKEYG (Bit 8) */ + #define R_DRW_COLKEY_COLKEYG_Msk (0xff00UL) /*!< COLKEYG (Bitfield-Mask: 0xff) */ + #define R_DRW_COLKEY_COLKEYB_Pos (0UL) /*!< COLKEYB (Bit 0) */ + #define R_DRW_COLKEY_COLKEYB_Msk (0xffUL) /*!< COLKEYB (Bitfield-Mask: 0xff) */ +/* ========================================================= SIZE ========================================================== */ + #define R_DRW_SIZE_SIZEY_Pos (16UL) /*!< SIZEY (Bit 16) */ + #define R_DRW_SIZE_SIZEY_Msk (0xffff0000UL) /*!< SIZEY (Bitfield-Mask: 0xffff) */ + #define R_DRW_SIZE_SIZEX_Pos (0UL) /*!< SIZEX (Bit 0) */ + #define R_DRW_SIZE_SIZEX_Msk (0xffffUL) /*!< SIZEX (Bitfield-Mask: 0xffff) */ +/* ========================================================= PITCH ========================================================= */ + #define R_DRW_PITCH_SSD_Pos (16UL) /*!< SSD (Bit 16) */ + #define R_DRW_PITCH_SSD_Msk (0xffff0000UL) /*!< SSD (Bitfield-Mask: 0xffff) */ + #define R_DRW_PITCH_PITCH_Pos (0UL) /*!< PITCH (Bit 0) */ + #define R_DRW_PITCH_PITCH_Msk (0xffffUL) /*!< PITCH (Bitfield-Mask: 0xffff) */ +/* ======================================================== ORIGIN ========================================================= */ + #define R_DRW_ORIGIN_ORIGIN_Pos (0UL) /*!< ORIGIN (Bit 0) */ + #define R_DRW_ORIGIN_ORIGIN_Msk (0xffffffffUL) /*!< ORIGIN (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== DLISTSTART ======================================================= */ + #define R_DRW_DLISTSTART_DLISTSTART_Pos (0UL) /*!< DLISTSTART (Bit 0) */ + #define R_DRW_DLISTSTART_DLISTSTART_Msk (0xffffffffUL) /*!< DLISTSTART (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PERFTRIGGER ====================================================== */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER2_Pos (16UL) /*!< PERFTRIGGER2 (Bit 16) */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER2_Msk (0xffff0000UL) /*!< PERFTRIGGER2 (Bitfield-Mask: 0xffff) */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER1_Pos (0UL) /*!< PERFTRIGGER1 (Bit 0) */ + #define R_DRW_PERFTRIGGER_PERFTRIGGER1_Msk (0xffffUL) /*!< PERFTRIGGER1 (Bitfield-Mask: 0xffff) */ +/* ====================================================== PERFCOUNT1 ======================================================= */ + #define R_DRW_PERFCOUNT1_PERFCOUNT_Pos (0UL) /*!< PERFCOUNT (Bit 0) */ + #define R_DRW_PERFCOUNT1_PERFCOUNT_Msk (0xffffffffUL) /*!< PERFCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PERFCOUNT2 ======================================================= */ + #define R_DRW_PERFCOUNT2_PERFCOUNT_Pos (0UL) /*!< PERFCOUNT (Bit 0) */ + #define R_DRW_PERFCOUNT2_PERFCOUNT_Msk (0xffffffffUL) /*!< PERFCOUNT (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_DTC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DTCCR ========================================================= */ + #define R_DTC_DTCCR_RRS_Pos (4UL) /*!< RRS (Bit 4) */ + #define R_DTC_DTCCR_RRS_Msk (0x10UL) /*!< RRS (Bitfield-Mask: 0x01) */ +/* ======================================================== DTCVBR ========================================================= */ + #define R_DTC_DTCVBR_DTCVBR_Pos (0UL) /*!< DTCVBR (Bit 0) */ + #define R_DTC_DTCVBR_DTCVBR_Msk (0xffffffffUL) /*!< DTCVBR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DTCST ========================================================= */ + #define R_DTC_DTCST_DTCST_Pos (0UL) /*!< DTCST (Bit 0) */ + #define R_DTC_DTCST_DTCST_Msk (0x1UL) /*!< DTCST (Bitfield-Mask: 0x01) */ +/* ======================================================== DTCSTS ========================================================= */ + #define R_DTC_DTCSTS_ACT_Pos (15UL) /*!< ACT (Bit 15) */ + #define R_DTC_DTCSTS_ACT_Msk (0x8000UL) /*!< ACT (Bitfield-Mask: 0x01) */ + #define R_DTC_DTCSTS_VECN_Pos (0UL) /*!< VECN (Bit 0) */ + #define R_DTC_DTCSTS_VECN_Msk (0xffUL) /*!< VECN (Bitfield-Mask: 0xff) */ +/* ======================================================= DTCCR_SEC ======================================================= */ + #define R_DTC_DTCCR_SEC_RRSS_Pos (4UL) /*!< RRSS (Bit 4) */ + #define R_DTC_DTCCR_SEC_RRSS_Msk (0x10UL) /*!< RRSS (Bitfield-Mask: 0x01) */ +/* ====================================================== DTCVBR_SEC ======================================================= */ +/* ========================================================= DTEVR ========================================================= */ + #define R_DTC_DTEVR_DTEV_Pos (0UL) /*!< DTEV (Bit 0) */ + #define R_DTC_DTEVR_DTEV_Msk (0xffUL) /*!< DTEV (Bitfield-Mask: 0xff) */ + #define R_DTC_DTEVR_DTEVSAM_Pos (8UL) /*!< DTEVSAM (Bit 8) */ + #define R_DTC_DTEVR_DTEVSAM_Msk (0x100UL) /*!< DTEVSAM (Bitfield-Mask: 0x01) */ + #define R_DTC_DTEVR_DTESTA_Pos (16UL) /*!< DTESTA (Bit 16) */ + #define R_DTC_DTEVR_DTESTA_Msk (0x10000UL) /*!< DTESTA (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ELC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ELCR ========================================================== */ + #define R_ELC_ELCR_ELCON_Pos (7UL) /*!< ELCON (Bit 7) */ + #define R_ELC_ELCR_ELCON_Msk (0x80UL) /*!< ELCON (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCSARA ======================================================== */ + #define R_ELC_ELCSARA_ELCR_Pos (0UL) /*!< ELCR (Bit 0) */ + #define R_ELC_ELCSARA_ELCR_Msk (0x1UL) /*!< ELCR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARA_ELSEGR0_Pos (1UL) /*!< ELSEGR0 (Bit 1) */ + #define R_ELC_ELCSARA_ELSEGR0_Msk (0x2UL) /*!< ELSEGR0 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARA_ELSEGR1_Pos (2UL) /*!< ELSEGR1 (Bit 2) */ + #define R_ELC_ELCSARA_ELSEGR1_Msk (0x4UL) /*!< ELSEGR1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCSARB ======================================================== */ + #define R_ELC_ELCSARB_ELSR_Pos (0UL) /*!< ELSR (Bit 0) */ + #define R_ELC_ELCSARB_ELSR_Msk (0x1UL) /*!< ELSR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCSARB_ELSR30_Pos (30UL) /*!< ELSR30 (Bit 30) */ + #define R_ELC_ELCSARB_ELSR30_Msk (0x40000000UL) /*!< ELSR30 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCPARA ======================================================== */ + #define R_ELC_ELCPARA_ELCR_Pos (0UL) /*!< ELCR (Bit 0) */ + #define R_ELC_ELCPARA_ELCR_Msk (0x1UL) /*!< ELCR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCPARA_ELSEGR0_Pos (1UL) /*!< ELSEGR0 (Bit 1) */ + #define R_ELC_ELCPARA_ELSEGR0_Msk (0x2UL) /*!< ELSEGR0 (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCPARA_ELSEGR1_Pos (2UL) /*!< ELSEGR1 (Bit 2) */ + #define R_ELC_ELCPARA_ELSEGR1_Msk (0x4UL) /*!< ELSEGR1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELCPARB ======================================================== */ + #define R_ELC_ELCPARB_ELSR_Pos (0UL) /*!< ELSR (Bit 0) */ + #define R_ELC_ELCPARB_ELSR_Msk (0x1UL) /*!< ELSR (Bitfield-Mask: 0x01) */ + #define R_ELC_ELCPARB_ELSR30_Pos (30UL) /*!< ELSR30 (Bit 30) */ + #define R_ELC_ELCPARB_ELSR30_Msk (0x40000000UL) /*!< ELSR30 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ECMR ========================================================== */ + #define R_ETHERC0_ECMR_TPC_Pos (20UL) /*!< TPC (Bit 20) */ + #define R_ETHERC0_ECMR_TPC_Msk (0x100000UL) /*!< TPC (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_ZPF_Pos (19UL) /*!< ZPF (Bit 19) */ + #define R_ETHERC0_ECMR_ZPF_Msk (0x80000UL) /*!< ZPF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_PFR_Pos (18UL) /*!< PFR (Bit 18) */ + #define R_ETHERC0_ECMR_PFR_Msk (0x40000UL) /*!< PFR (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_RXF_Pos (17UL) /*!< RXF (Bit 17) */ + #define R_ETHERC0_ECMR_RXF_Msk (0x20000UL) /*!< RXF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_TXF_Pos (16UL) /*!< TXF (Bit 16) */ + #define R_ETHERC0_ECMR_TXF_Msk (0x10000UL) /*!< TXF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_PRCEF_Pos (12UL) /*!< PRCEF (Bit 12) */ + #define R_ETHERC0_ECMR_PRCEF_Msk (0x1000UL) /*!< PRCEF (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_MPDE_Pos (9UL) /*!< MPDE (Bit 9) */ + #define R_ETHERC0_ECMR_MPDE_Msk (0x200UL) /*!< MPDE (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_RE_Pos (6UL) /*!< RE (Bit 6) */ + #define R_ETHERC0_ECMR_RE_Msk (0x40UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_TE_Pos (5UL) /*!< TE (Bit 5) */ + #define R_ETHERC0_ECMR_TE_Msk (0x20UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_ILB_Pos (3UL) /*!< ILB (Bit 3) */ + #define R_ETHERC0_ECMR_ILB_Msk (0x8UL) /*!< ILB (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_RTM_Pos (2UL) /*!< RTM (Bit 2) */ + #define R_ETHERC0_ECMR_RTM_Msk (0x4UL) /*!< RTM (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_DM_Pos (1UL) /*!< DM (Bit 1) */ + #define R_ETHERC0_ECMR_DM_Msk (0x2UL) /*!< DM (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECMR_PRM_Pos (0UL) /*!< PRM (Bit 0) */ + #define R_ETHERC0_ECMR_PRM_Msk (0x1UL) /*!< PRM (Bitfield-Mask: 0x01) */ +/* ========================================================= RFLR ========================================================== */ + #define R_ETHERC0_RFLR_RFL_Pos (0UL) /*!< RFL (Bit 0) */ + #define R_ETHERC0_RFLR_RFL_Msk (0xfffUL) /*!< RFL (Bitfield-Mask: 0xfff) */ +/* ========================================================= ECSR ========================================================== */ + #define R_ETHERC0_ECSR_BFR_Pos (5UL) /*!< BFR (Bit 5) */ + #define R_ETHERC0_ECSR_BFR_Msk (0x20UL) /*!< BFR (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_PSRTO_Pos (4UL) /*!< PSRTO (Bit 4) */ + #define R_ETHERC0_ECSR_PSRTO_Msk (0x10UL) /*!< PSRTO (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_LCHNG_Pos (2UL) /*!< LCHNG (Bit 2) */ + #define R_ETHERC0_ECSR_LCHNG_Msk (0x4UL) /*!< LCHNG (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_MPD_Pos (1UL) /*!< MPD (Bit 1) */ + #define R_ETHERC0_ECSR_MPD_Msk (0x2UL) /*!< MPD (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSR_ICD_Pos (0UL) /*!< ICD (Bit 0) */ + #define R_ETHERC0_ECSR_ICD_Msk (0x1UL) /*!< ICD (Bitfield-Mask: 0x01) */ +/* ======================================================== ECSIPR ========================================================= */ + #define R_ETHERC0_ECSIPR_BFSIPR_Pos (5UL) /*!< BFSIPR (Bit 5) */ + #define R_ETHERC0_ECSIPR_BFSIPR_Msk (0x20UL) /*!< BFSIPR (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_PSRTOIP_Pos (4UL) /*!< PSRTOIP (Bit 4) */ + #define R_ETHERC0_ECSIPR_PSRTOIP_Msk (0x10UL) /*!< PSRTOIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_LCHNGIP_Pos (2UL) /*!< LCHNGIP (Bit 2) */ + #define R_ETHERC0_ECSIPR_LCHNGIP_Msk (0x4UL) /*!< LCHNGIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_MPDIP_Pos (1UL) /*!< MPDIP (Bit 1) */ + #define R_ETHERC0_ECSIPR_MPDIP_Msk (0x2UL) /*!< MPDIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_ECSIPR_ICDIP_Pos (0UL) /*!< ICDIP (Bit 0) */ + #define R_ETHERC0_ECSIPR_ICDIP_Msk (0x1UL) /*!< ICDIP (Bitfield-Mask: 0x01) */ +/* ========================================================== PIR ========================================================== */ + #define R_ETHERC0_PIR_MDI_Pos (3UL) /*!< MDI (Bit 3) */ + #define R_ETHERC0_PIR_MDI_Msk (0x8UL) /*!< MDI (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_PIR_MDO_Pos (2UL) /*!< MDO (Bit 2) */ + #define R_ETHERC0_PIR_MDO_Msk (0x4UL) /*!< MDO (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_PIR_MMD_Pos (1UL) /*!< MMD (Bit 1) */ + #define R_ETHERC0_PIR_MMD_Msk (0x2UL) /*!< MMD (Bitfield-Mask: 0x01) */ + #define R_ETHERC0_PIR_MDC_Pos (0UL) /*!< MDC (Bit 0) */ + #define R_ETHERC0_PIR_MDC_Msk (0x1UL) /*!< MDC (Bitfield-Mask: 0x01) */ +/* ========================================================== PSR ========================================================== */ + #define R_ETHERC0_PSR_LMON_Pos (0UL) /*!< LMON (Bit 0) */ + #define R_ETHERC0_PSR_LMON_Msk (0x1UL) /*!< LMON (Bitfield-Mask: 0x01) */ +/* ========================================================= RDMLR ========================================================= */ + #define R_ETHERC0_RDMLR_RMD_Pos (0UL) /*!< RMD (Bit 0) */ + #define R_ETHERC0_RDMLR_RMD_Msk (0xfffffUL) /*!< RMD (Bitfield-Mask: 0xfffff) */ +/* ========================================================= IPGR ========================================================== */ + #define R_ETHERC0_IPGR_IPG_Pos (0UL) /*!< IPG (Bit 0) */ + #define R_ETHERC0_IPGR_IPG_Msk (0x1fUL) /*!< IPG (Bitfield-Mask: 0x1f) */ +/* ========================================================== APR ========================================================== */ + #define R_ETHERC0_APR_AP_Pos (0UL) /*!< AP (Bit 0) */ + #define R_ETHERC0_APR_AP_Msk (0xffffUL) /*!< AP (Bitfield-Mask: 0xffff) */ +/* ========================================================== MPR ========================================================== */ + #define R_ETHERC0_MPR_MP_Pos (0UL) /*!< MP (Bit 0) */ + #define R_ETHERC0_MPR_MP_Msk (0xffffUL) /*!< MP (Bitfield-Mask: 0xffff) */ +/* ========================================================= RFCF ========================================================== */ + #define R_ETHERC0_RFCF_RPAUSE_Pos (0UL) /*!< RPAUSE (Bit 0) */ + #define R_ETHERC0_RFCF_RPAUSE_Msk (0xffUL) /*!< RPAUSE (Bitfield-Mask: 0xff) */ +/* ======================================================== TPAUSER ======================================================== */ + #define R_ETHERC0_TPAUSER_TPAUSE_Pos (0UL) /*!< TPAUSE (Bit 0) */ + #define R_ETHERC0_TPAUSER_TPAUSE_Msk (0xffffUL) /*!< TPAUSE (Bitfield-Mask: 0xffff) */ +/* ======================================================= TPAUSECR ======================================================== */ +/* ========================================================= BCFRR ========================================================= */ + #define R_ETHERC0_BCFRR_BCF_Pos (0UL) /*!< BCF (Bit 0) */ + #define R_ETHERC0_BCFRR_BCF_Msk (0xffffUL) /*!< BCF (Bitfield-Mask: 0xffff) */ +/* ========================================================= MAHR ========================================================== */ + #define R_ETHERC0_MAHR_MAHR_Pos (0UL) /*!< MAHR (Bit 0) */ + #define R_ETHERC0_MAHR_MAHR_Msk (0xffffffffUL) /*!< MAHR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MALR ========================================================== */ + #define R_ETHERC0_MALR_MALR_Pos (0UL) /*!< MALR (Bit 0) */ + #define R_ETHERC0_MALR_MALR_Msk (0xffffUL) /*!< MALR (Bitfield-Mask: 0xffff) */ +/* ========================================================= TROCR ========================================================= */ + #define R_ETHERC0_TROCR_TROCR_Pos (0UL) /*!< TROCR (Bit 0) */ + #define R_ETHERC0_TROCR_TROCR_Msk (0xffffffffUL) /*!< TROCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDCR ========================================================== */ +/* ========================================================= LCCR ========================================================== */ + #define R_ETHERC0_LCCR_LCCR_Pos (0UL) /*!< LCCR (Bit 0) */ + #define R_ETHERC0_LCCR_LCCR_Msk (0xffffffffUL) /*!< LCCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CNDCR ========================================================= */ + #define R_ETHERC0_CNDCR_CNDCR_Pos (0UL) /*!< CNDCR (Bit 0) */ + #define R_ETHERC0_CNDCR_CNDCR_Msk (0xffffffffUL) /*!< CNDCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CEFCR ========================================================= */ + #define R_ETHERC0_CEFCR_CEFCR_Pos (0UL) /*!< CEFCR (Bit 0) */ + #define R_ETHERC0_CEFCR_CEFCR_Msk (0xffffffffUL) /*!< CEFCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= FRECR ========================================================= */ + #define R_ETHERC0_FRECR_FRECR_Pos (0UL) /*!< FRECR (Bit 0) */ + #define R_ETHERC0_FRECR_FRECR_Msk (0xffffffffUL) /*!< FRECR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TSFRCR ========================================================= */ + #define R_ETHERC0_TSFRCR_TSFRCR_Pos (0UL) /*!< TSFRCR (Bit 0) */ + #define R_ETHERC0_TSFRCR_TSFRCR_Msk (0xffffffffUL) /*!< TSFRCR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== TLFRCR ========================================================= */ + #define R_ETHERC0_TLFRCR_TLFRCR_Pos (0UL) /*!< TLFRCR (Bit 0) */ + #define R_ETHERC0_TLFRCR_TLFRCR_Msk (0xffffffffUL) /*!< TLFRCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= RFCR ========================================================== */ + #define R_ETHERC0_RFCR_RFCR_Pos (0UL) /*!< RFCR (Bit 0) */ + #define R_ETHERC0_RFCR_RFCR_Msk (0xffffffffUL) /*!< RFCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= MAFCR ========================================================= */ + #define R_ETHERC0_MAFCR_MAFCR_Pos (0UL) /*!< MAFCR (Bit 0) */ + #define R_ETHERC0_MAFCR_MAFCR_Msk (0xffffffffUL) /*!< MAFCR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHERC_EDMAC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= EDMR ========================================================== */ + #define R_ETHERC_EDMAC_EDMR_DE_Pos (6UL) /*!< DE (Bit 6) */ + #define R_ETHERC_EDMAC_EDMR_DE_Msk (0x40UL) /*!< DE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EDMR_DL_Pos (4UL) /*!< DL (Bit 4) */ + #define R_ETHERC_EDMAC_EDMR_DL_Msk (0x30UL) /*!< DL (Bitfield-Mask: 0x03) */ + #define R_ETHERC_EDMAC_EDMR_SWR_Pos (0UL) /*!< SWR (Bit 0) */ + #define R_ETHERC_EDMAC_EDMR_SWR_Msk (0x1UL) /*!< SWR (Bitfield-Mask: 0x01) */ +/* ========================================================= EDTRR ========================================================= */ + #define R_ETHERC_EDMAC_EDTRR_TR_Pos (0UL) /*!< TR (Bit 0) */ + #define R_ETHERC_EDMAC_EDTRR_TR_Msk (0x1UL) /*!< TR (Bitfield-Mask: 0x01) */ +/* ========================================================= EDRRR ========================================================= */ + #define R_ETHERC_EDMAC_EDRRR_RR_Pos (0UL) /*!< RR (Bit 0) */ + #define R_ETHERC_EDMAC_EDRRR_RR_Msk (0x1UL) /*!< RR (Bitfield-Mask: 0x01) */ +/* ========================================================= TDLAR ========================================================= */ + #define R_ETHERC_EDMAC_TDLAR_TDLAR_Pos (0UL) /*!< TDLAR (Bit 0) */ + #define R_ETHERC_EDMAC_TDLAR_TDLAR_Msk (0xffffffffUL) /*!< TDLAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= RDLAR ========================================================= */ + #define R_ETHERC_EDMAC_RDLAR_RDLAR_Pos (0UL) /*!< RDLAR (Bit 0) */ + #define R_ETHERC_EDMAC_RDLAR_RDLAR_Msk (0xffffffffUL) /*!< RDLAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= EESR ========================================================== */ + #define R_ETHERC_EDMAC_EESR_TWB_Pos (30UL) /*!< TWB (Bit 30) */ + #define R_ETHERC_EDMAC_EESR_TWB_Msk (0x40000000UL) /*!< TWB (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TABT_Pos (26UL) /*!< TABT (Bit 26) */ + #define R_ETHERC_EDMAC_EESR_TABT_Msk (0x4000000UL) /*!< TABT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RABT_Pos (25UL) /*!< RABT (Bit 25) */ + #define R_ETHERC_EDMAC_EESR_RABT_Msk (0x2000000UL) /*!< RABT (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RFCOF_Pos (24UL) /*!< RFCOF (Bit 24) */ + #define R_ETHERC_EDMAC_EESR_RFCOF_Msk (0x1000000UL) /*!< RFCOF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_ADE_Pos (23UL) /*!< ADE (Bit 23) */ + #define R_ETHERC_EDMAC_EESR_ADE_Msk (0x800000UL) /*!< ADE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_ECI_Pos (22UL) /*!< ECI (Bit 22) */ + #define R_ETHERC_EDMAC_EESR_ECI_Msk (0x400000UL) /*!< ECI (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TC_Pos (21UL) /*!< TC (Bit 21) */ + #define R_ETHERC_EDMAC_EESR_TC_Msk (0x200000UL) /*!< TC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TDE_Pos (20UL) /*!< TDE (Bit 20) */ + #define R_ETHERC_EDMAC_EESR_TDE_Msk (0x100000UL) /*!< TDE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TFUF_Pos (19UL) /*!< TFUF (Bit 19) */ + #define R_ETHERC_EDMAC_EESR_TFUF_Msk (0x80000UL) /*!< TFUF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_FR_Pos (18UL) /*!< FR (Bit 18) */ + #define R_ETHERC_EDMAC_EESR_FR_Msk (0x40000UL) /*!< FR (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RDE_Pos (17UL) /*!< RDE (Bit 17) */ + #define R_ETHERC_EDMAC_EESR_RDE_Msk (0x20000UL) /*!< RDE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RFOF_Pos (16UL) /*!< RFOF (Bit 16) */ + #define R_ETHERC_EDMAC_EESR_RFOF_Msk (0x10000UL) /*!< RFOF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_CND_Pos (11UL) /*!< CND (Bit 11) */ + #define R_ETHERC_EDMAC_EESR_CND_Msk (0x800UL) /*!< CND (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_DLC_Pos (10UL) /*!< DLC (Bit 10) */ + #define R_ETHERC_EDMAC_EESR_DLC_Msk (0x400UL) /*!< DLC (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_CD_Pos (9UL) /*!< CD (Bit 9) */ + #define R_ETHERC_EDMAC_EESR_CD_Msk (0x200UL) /*!< CD (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_TRO_Pos (8UL) /*!< TRO (Bit 8) */ + #define R_ETHERC_EDMAC_EESR_TRO_Msk (0x100UL) /*!< TRO (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RMAF_Pos (7UL) /*!< RMAF (Bit 7) */ + #define R_ETHERC_EDMAC_EESR_RMAF_Msk (0x80UL) /*!< RMAF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RRF_Pos (4UL) /*!< RRF (Bit 4) */ + #define R_ETHERC_EDMAC_EESR_RRF_Msk (0x10UL) /*!< RRF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RTLF_Pos (3UL) /*!< RTLF (Bit 3) */ + #define R_ETHERC_EDMAC_EESR_RTLF_Msk (0x8UL) /*!< RTLF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_RTSF_Pos (2UL) /*!< RTSF (Bit 2) */ + #define R_ETHERC_EDMAC_EESR_RTSF_Msk (0x4UL) /*!< RTSF (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_PRE_Pos (1UL) /*!< PRE (Bit 1) */ + #define R_ETHERC_EDMAC_EESR_PRE_Msk (0x2UL) /*!< PRE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESR_CERF_Pos (0UL) /*!< CERF (Bit 0) */ + #define R_ETHERC_EDMAC_EESR_CERF_Msk (0x1UL) /*!< CERF (Bitfield-Mask: 0x01) */ +/* ======================================================== EESIPR ========================================================= */ + #define R_ETHERC_EDMAC_EESIPR_TWBIP_Pos (30UL) /*!< TWBIP (Bit 30) */ + #define R_ETHERC_EDMAC_EESIPR_TWBIP_Msk (0x40000000UL) /*!< TWBIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TABTIP_Pos (26UL) /*!< TABTIP (Bit 26) */ + #define R_ETHERC_EDMAC_EESIPR_TABTIP_Msk (0x4000000UL) /*!< TABTIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RABTIP_Pos (25UL) /*!< RABTIP (Bit 25) */ + #define R_ETHERC_EDMAC_EESIPR_RABTIP_Msk (0x2000000UL) /*!< RABTIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RFCOFIP_Pos (24UL) /*!< RFCOFIP (Bit 24) */ + #define R_ETHERC_EDMAC_EESIPR_RFCOFIP_Msk (0x1000000UL) /*!< RFCOFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_ADEIP_Pos (23UL) /*!< ADEIP (Bit 23) */ + #define R_ETHERC_EDMAC_EESIPR_ADEIP_Msk (0x800000UL) /*!< ADEIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_ECIIP_Pos (22UL) /*!< ECIIP (Bit 22) */ + #define R_ETHERC_EDMAC_EESIPR_ECIIP_Msk (0x400000UL) /*!< ECIIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TCIP_Pos (21UL) /*!< TCIP (Bit 21) */ + #define R_ETHERC_EDMAC_EESIPR_TCIP_Msk (0x200000UL) /*!< TCIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TDEIP_Pos (20UL) /*!< TDEIP (Bit 20) */ + #define R_ETHERC_EDMAC_EESIPR_TDEIP_Msk (0x100000UL) /*!< TDEIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TFUFIP_Pos (19UL) /*!< TFUFIP (Bit 19) */ + #define R_ETHERC_EDMAC_EESIPR_TFUFIP_Msk (0x80000UL) /*!< TFUFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_FRIP_Pos (18UL) /*!< FRIP (Bit 18) */ + #define R_ETHERC_EDMAC_EESIPR_FRIP_Msk (0x40000UL) /*!< FRIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RDEIP_Pos (17UL) /*!< RDEIP (Bit 17) */ + #define R_ETHERC_EDMAC_EESIPR_RDEIP_Msk (0x20000UL) /*!< RDEIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RFOFIP_Pos (16UL) /*!< RFOFIP (Bit 16) */ + #define R_ETHERC_EDMAC_EESIPR_RFOFIP_Msk (0x10000UL) /*!< RFOFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_CNDIP_Pos (11UL) /*!< CNDIP (Bit 11) */ + #define R_ETHERC_EDMAC_EESIPR_CNDIP_Msk (0x800UL) /*!< CNDIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_DLCIP_Pos (10UL) /*!< DLCIP (Bit 10) */ + #define R_ETHERC_EDMAC_EESIPR_DLCIP_Msk (0x400UL) /*!< DLCIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_CDIP_Pos (9UL) /*!< CDIP (Bit 9) */ + #define R_ETHERC_EDMAC_EESIPR_CDIP_Msk (0x200UL) /*!< CDIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_TROIP_Pos (8UL) /*!< TROIP (Bit 8) */ + #define R_ETHERC_EDMAC_EESIPR_TROIP_Msk (0x100UL) /*!< TROIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RMAFIP_Pos (7UL) /*!< RMAFIP (Bit 7) */ + #define R_ETHERC_EDMAC_EESIPR_RMAFIP_Msk (0x80UL) /*!< RMAFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RRFIP_Pos (4UL) /*!< RRFIP (Bit 4) */ + #define R_ETHERC_EDMAC_EESIPR_RRFIP_Msk (0x10UL) /*!< RRFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RTLFIP_Pos (3UL) /*!< RTLFIP (Bit 3) */ + #define R_ETHERC_EDMAC_EESIPR_RTLFIP_Msk (0x8UL) /*!< RTLFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_RTSFIP_Pos (2UL) /*!< RTSFIP (Bit 2) */ + #define R_ETHERC_EDMAC_EESIPR_RTSFIP_Msk (0x4UL) /*!< RTSFIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_PREIP_Pos (1UL) /*!< PREIP (Bit 1) */ + #define R_ETHERC_EDMAC_EESIPR_PREIP_Msk (0x2UL) /*!< PREIP (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_EESIPR_CERFIP_Pos (0UL) /*!< CERFIP (Bit 0) */ + #define R_ETHERC_EDMAC_EESIPR_CERFIP_Msk (0x1UL) /*!< CERFIP (Bitfield-Mask: 0x01) */ +/* ======================================================== TRSCER ========================================================= */ + #define R_ETHERC_EDMAC_TRSCER_RMAFCE_Pos (7UL) /*!< RMAFCE (Bit 7) */ + #define R_ETHERC_EDMAC_TRSCER_RMAFCE_Msk (0x80UL) /*!< RMAFCE (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_TRSCER_RRFCE_Pos (4UL) /*!< RRFCE (Bit 4) */ + #define R_ETHERC_EDMAC_TRSCER_RRFCE_Msk (0x10UL) /*!< RRFCE (Bitfield-Mask: 0x01) */ +/* ========================================================= RMFCR ========================================================= */ + #define R_ETHERC_EDMAC_RMFCR_MFC_Pos (0UL) /*!< MFC (Bit 0) */ + #define R_ETHERC_EDMAC_RMFCR_MFC_Msk (0xffffUL) /*!< MFC (Bitfield-Mask: 0xffff) */ +/* ========================================================= TFTR ========================================================== */ + #define R_ETHERC_EDMAC_TFTR_TFT_Pos (0UL) /*!< TFT (Bit 0) */ + #define R_ETHERC_EDMAC_TFTR_TFT_Msk (0x7ffUL) /*!< TFT (Bitfield-Mask: 0x7ff) */ +/* ========================================================== FDR ========================================================== */ + #define R_ETHERC_EDMAC_FDR_TFD_Pos (8UL) /*!< TFD (Bit 8) */ + #define R_ETHERC_EDMAC_FDR_TFD_Msk (0x1f00UL) /*!< TFD (Bitfield-Mask: 0x1f) */ + #define R_ETHERC_EDMAC_FDR_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHERC_EDMAC_FDR_RFD_Msk (0x1fUL) /*!< RFD (Bitfield-Mask: 0x1f) */ +/* ========================================================= RMCR ========================================================== */ + #define R_ETHERC_EDMAC_RMCR_RNR_Pos (0UL) /*!< RNR (Bit 0) */ + #define R_ETHERC_EDMAC_RMCR_RNR_Msk (0x1UL) /*!< RNR (Bitfield-Mask: 0x01) */ +/* ========================================================= TFUCR ========================================================= */ + #define R_ETHERC_EDMAC_TFUCR_UNDER_Pos (0UL) /*!< UNDER (Bit 0) */ + #define R_ETHERC_EDMAC_TFUCR_UNDER_Msk (0xffffUL) /*!< UNDER (Bitfield-Mask: 0xffff) */ +/* ========================================================= RFOCR ========================================================= */ + #define R_ETHERC_EDMAC_RFOCR_OVER_Pos (0UL) /*!< OVER (Bit 0) */ + #define R_ETHERC_EDMAC_RFOCR_OVER_Msk (0xffffUL) /*!< OVER (Bitfield-Mask: 0xffff) */ +/* ========================================================= IOSR ========================================================== */ + #define R_ETHERC_EDMAC_IOSR_ELB_Pos (0UL) /*!< ELB (Bit 0) */ + #define R_ETHERC_EDMAC_IOSR_ELB_Msk (0x1UL) /*!< ELB (Bitfield-Mask: 0x01) */ +/* ========================================================= FCFTR ========================================================= */ + #define R_ETHERC_EDMAC_FCFTR_RFFO_Pos (16UL) /*!< RFFO (Bit 16) */ + #define R_ETHERC_EDMAC_FCFTR_RFFO_Msk (0x70000UL) /*!< RFFO (Bitfield-Mask: 0x07) */ + #define R_ETHERC_EDMAC_FCFTR_RFDO_Pos (0UL) /*!< RFDO (Bit 0) */ + #define R_ETHERC_EDMAC_FCFTR_RFDO_Msk (0x7UL) /*!< RFDO (Bitfield-Mask: 0x07) */ +/* ======================================================== RPADIR ========================================================= */ + #define R_ETHERC_EDMAC_RPADIR_PADS_Pos (16UL) /*!< PADS (Bit 16) */ + #define R_ETHERC_EDMAC_RPADIR_PADS_Msk (0x30000UL) /*!< PADS (Bitfield-Mask: 0x03) */ + #define R_ETHERC_EDMAC_RPADIR_PADR_Pos (0UL) /*!< PADR (Bit 0) */ + #define R_ETHERC_EDMAC_RPADIR_PADR_Msk (0x3fUL) /*!< PADR (Bitfield-Mask: 0x3f) */ +/* ========================================================= TRIMD ========================================================= */ + #define R_ETHERC_EDMAC_TRIMD_TIM_Pos (4UL) /*!< TIM (Bit 4) */ + #define R_ETHERC_EDMAC_TRIMD_TIM_Msk (0x10UL) /*!< TIM (Bitfield-Mask: 0x01) */ + #define R_ETHERC_EDMAC_TRIMD_TIS_Pos (0UL) /*!< TIS (Bit 0) */ + #define R_ETHERC_EDMAC_TRIMD_TIS_Msk (0x1UL) /*!< TIS (Bitfield-Mask: 0x01) */ +/* ========================================================= RBWAR ========================================================= */ + #define R_ETHERC_EDMAC_RBWAR_RBWAR_Pos (0UL) /*!< RBWAR (Bit 0) */ + #define R_ETHERC_EDMAC_RBWAR_RBWAR_Msk (0xffffffffUL) /*!< RBWAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= RDFAR ========================================================= */ + #define R_ETHERC_EDMAC_RDFAR_RDFAR_Pos (0UL) /*!< RDFAR (Bit 0) */ + #define R_ETHERC_EDMAC_RDFAR_RDFAR_Msk (0xffffffffUL) /*!< RDFAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= TBRAR ========================================================= */ + #define R_ETHERC_EDMAC_TBRAR_TBRAR_Pos (0UL) /*!< TBRAR (Bit 0) */ + #define R_ETHERC_EDMAC_TBRAR_TBRAR_Msk (0xffffffffUL) /*!< TBRAR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= TDFAR ========================================================= */ + #define R_ETHERC_EDMAC_TDFAR_TDFAR_Pos (0UL) /*!< TDFAR (Bit 0) */ + #define R_ETHERC_EDMAC_TDFAR_TDFAR_Msk (0xffffffffUL) /*!< TDFAR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP_CMD ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== FACI_CMD16 ======================================================= */ +/* ======================================================= FACI_CMD8 ======================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_FACI_HP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== FASTAT ========================================================= */ + #define R_FACI_HP_FASTAT_CFAE_Pos (7UL) /*!< CFAE (Bit 7) */ + #define R_FACI_HP_FASTAT_CFAE_Msk (0x80UL) /*!< CFAE (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FASTAT_CMDLK_Pos (4UL) /*!< CMDLK (Bit 4) */ + #define R_FACI_HP_FASTAT_CMDLK_Msk (0x10UL) /*!< CMDLK (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FASTAT_DFAE_Pos (3UL) /*!< DFAE (Bit 3) */ + #define R_FACI_HP_FASTAT_DFAE_Msk (0x8UL) /*!< DFAE (Bitfield-Mask: 0x01) */ +/* ======================================================== FAEINT ========================================================= */ + #define R_FACI_HP_FAEINT_CFAEIE_Pos (7UL) /*!< CFAEIE (Bit 7) */ + #define R_FACI_HP_FAEINT_CFAEIE_Msk (0x80UL) /*!< CFAEIE (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAEINT_CMDLKIE_Pos (4UL) /*!< CMDLKIE (Bit 4) */ + #define R_FACI_HP_FAEINT_CMDLKIE_Msk (0x10UL) /*!< CMDLKIE (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAEINT_DFAEIE_Pos (3UL) /*!< DFAEIE (Bit 3) */ + #define R_FACI_HP_FAEINT_DFAEIE_Msk (0x8UL) /*!< DFAEIE (Bitfield-Mask: 0x01) */ +/* ======================================================== FRDYIE ========================================================= */ + #define R_FACI_HP_FRDYIE_FRDYIE_Pos (0UL) /*!< FRDYIE (Bit 0) */ + #define R_FACI_HP_FRDYIE_FRDYIE_Msk (0x1UL) /*!< FRDYIE (Bitfield-Mask: 0x01) */ +/* ======================================================== FSADDR ========================================================= */ + #define R_FACI_HP_FSADDR_FSA_Pos (0UL) /*!< FSA (Bit 0) */ + #define R_FACI_HP_FSADDR_FSA_Msk (0xffffffffUL) /*!< FSA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== FEADDR ========================================================= */ + #define R_FACI_HP_FEADDR_FEA_Pos (0UL) /*!< FEA (Bit 0) */ + #define R_FACI_HP_FEADDR_FEA_Msk (0xffffffffUL) /*!< FEA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== FMEPROT ======================================================== */ + #define R_FACI_HP_FMEPROT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FMEPROT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FMEPROT_CEPROT_Pos (0UL) /*!< CEPROT (Bit 0) */ + #define R_FACI_HP_FMEPROT_CEPROT_Msk (0x1UL) /*!< CEPROT (Bitfield-Mask: 0x01) */ +/* ======================================================== FBPROT0 ======================================================== */ + #define R_FACI_HP_FBPROT0_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FBPROT0_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FBPROT0_BPCN0_Pos (0UL) /*!< BPCN0 (Bit 0) */ + #define R_FACI_HP_FBPROT0_BPCN0_Msk (0x1UL) /*!< BPCN0 (Bitfield-Mask: 0x01) */ +/* ======================================================== FBPROT1 ======================================================== */ + #define R_FACI_HP_FBPROT1_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FBPROT1_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FBPROT1_BPCN1_Pos (0UL) /*!< BPCN1 (Bit 0) */ + #define R_FACI_HP_FBPROT1_BPCN1_Msk (0x1UL) /*!< BPCN1 (Bitfield-Mask: 0x01) */ +/* ======================================================== FSTATR ========================================================= */ + #define R_FACI_HP_FSTATR_ILGCOMERR_Pos (23UL) /*!< ILGCOMERR (Bit 23) */ + #define R_FACI_HP_FSTATR_ILGCOMERR_Msk (0x800000UL) /*!< ILGCOMERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_FESETERR_Pos (22UL) /*!< FESETERR (Bit 22) */ + #define R_FACI_HP_FSTATR_FESETERR_Msk (0x400000UL) /*!< FESETERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_SECERR_Pos (21UL) /*!< SECERR (Bit 21) */ + #define R_FACI_HP_FSTATR_SECERR_Msk (0x200000UL) /*!< SECERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_OTERR_Pos (20UL) /*!< OTERR (Bit 20) */ + #define R_FACI_HP_FSTATR_OTERR_Msk (0x100000UL) /*!< OTERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_FRDY_Pos (15UL) /*!< FRDY (Bit 15) */ + #define R_FACI_HP_FSTATR_FRDY_Msk (0x8000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_ILGLERR_Pos (14UL) /*!< ILGLERR (Bit 14) */ + #define R_FACI_HP_FSTATR_ILGLERR_Msk (0x4000UL) /*!< ILGLERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_ERSERR_Pos (13UL) /*!< ERSERR (Bit 13) */ + #define R_FACI_HP_FSTATR_ERSERR_Msk (0x2000UL) /*!< ERSERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_PRGERR_Pos (12UL) /*!< PRGERR (Bit 12) */ + #define R_FACI_HP_FSTATR_PRGERR_Msk (0x1000UL) /*!< PRGERR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_SUSRDY_Pos (11UL) /*!< SUSRDY (Bit 11) */ + #define R_FACI_HP_FSTATR_SUSRDY_Msk (0x800UL) /*!< SUSRDY (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_DBFULL_Pos (10UL) /*!< DBFULL (Bit 10) */ + #define R_FACI_HP_FSTATR_DBFULL_Msk (0x400UL) /*!< DBFULL (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_ERSSPD_Pos (9UL) /*!< ERSSPD (Bit 9) */ + #define R_FACI_HP_FSTATR_ERSSPD_Msk (0x200UL) /*!< ERSSPD (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_PRGSPD_Pos (8UL) /*!< PRGSPD (Bit 8) */ + #define R_FACI_HP_FSTATR_PRGSPD_Msk (0x100UL) /*!< PRGSPD (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FSTATR_FLWEERR_Pos (6UL) /*!< FLWEERR (Bit 6) */ + #define R_FACI_HP_FSTATR_FLWEERR_Msk (0x40UL) /*!< FLWEERR (Bitfield-Mask: 0x01) */ +/* ======================================================== FENTRYR ======================================================== */ + #define R_FACI_HP_FENTRYR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FENTRYR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FENTRYR_FENTRYD_Pos (7UL) /*!< FENTRYD (Bit 7) */ + #define R_FACI_HP_FENTRYR_FENTRYD_Msk (0x80UL) /*!< FENTRYD (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FENTRYR_FENTRYC_Pos (0UL) /*!< FENTRYC (Bit 0) */ + #define R_FACI_HP_FENTRYR_FENTRYC_Msk (0x1UL) /*!< FENTRYC (Bitfield-Mask: 0x01) */ +/* ======================================================= FSUINITR ======================================================== */ + #define R_FACI_HP_FSUINITR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FSUINITR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FSUINITR_SUINIT_Pos (0UL) /*!< SUINIT (Bit 0) */ + #define R_FACI_HP_FSUINITR_SUINIT_Msk (0x1UL) /*!< SUINIT (Bitfield-Mask: 0x01) */ +/* ========================================================= FCMDR ========================================================= */ + #define R_FACI_HP_FCMDR_CMDR_Pos (8UL) /*!< CMDR (Bit 8) */ + #define R_FACI_HP_FCMDR_CMDR_Msk (0xff00UL) /*!< CMDR (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FCMDR_PCMDR_Pos (0UL) /*!< PCMDR (Bit 0) */ + #define R_FACI_HP_FCMDR_PCMDR_Msk (0xffUL) /*!< PCMDR (Bitfield-Mask: 0xff) */ +/* ======================================================== FBCCNT ========================================================= */ + #define R_FACI_HP_FBCCNT_BCDIR_Pos (0UL) /*!< BCDIR (Bit 0) */ + #define R_FACI_HP_FBCCNT_BCDIR_Msk (0x1UL) /*!< BCDIR (Bitfield-Mask: 0x01) */ +/* ======================================================== FBCSTAT ======================================================== */ + #define R_FACI_HP_FBCSTAT_BCST_Pos (0UL) /*!< BCST (Bit 0) */ + #define R_FACI_HP_FBCSTAT_BCST_Msk (0x1UL) /*!< BCST (Bitfield-Mask: 0x01) */ +/* ======================================================== FPSADDR ======================================================== */ + #define R_FACI_HP_FPSADDR_PSADR_Pos (0UL) /*!< PSADR (Bit 0) */ + #define R_FACI_HP_FPSADDR_PSADR_Msk (0x7ffffUL) /*!< PSADR (Bitfield-Mask: 0x7ffff) */ +/* ======================================================== FAWMON ========================================================= */ + #define R_FACI_HP_FAWMON_BTFLG_Pos (31UL) /*!< BTFLG (Bit 31) */ + #define R_FACI_HP_FAWMON_BTFLG_Msk (0x80000000UL) /*!< BTFLG (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAWMON_FAWE_Pos (16UL) /*!< FAWE (Bit 16) */ + #define R_FACI_HP_FAWMON_FAWE_Msk (0x7ff0000UL) /*!< FAWE (Bitfield-Mask: 0x7ff) */ + #define R_FACI_HP_FAWMON_FSPR_Pos (15UL) /*!< FSPR (Bit 15) */ + #define R_FACI_HP_FAWMON_FSPR_Msk (0x8000UL) /*!< FSPR (Bitfield-Mask: 0x01) */ + #define R_FACI_HP_FAWMON_FAWS_Pos (0UL) /*!< FAWS (Bit 0) */ + #define R_FACI_HP_FAWMON_FAWS_Msk (0x7ffUL) /*!< FAWS (Bitfield-Mask: 0x7ff) */ +/* ========================================================= FCPSR ========================================================= */ + #define R_FACI_HP_FCPSR_ESUSPMD_Pos (0UL) /*!< ESUSPMD (Bit 0) */ + #define R_FACI_HP_FCPSR_ESUSPMD_Msk (0x1UL) /*!< ESUSPMD (Bitfield-Mask: 0x01) */ +/* ======================================================== FPCKAR ========================================================= */ + #define R_FACI_HP_FPCKAR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FPCKAR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FPCKAR_PCKA_Pos (0UL) /*!< PCKA (Bit 0) */ + #define R_FACI_HP_FPCKAR_PCKA_Msk (0xffUL) /*!< PCKA (Bitfield-Mask: 0xff) */ +/* ======================================================== FSUACR ========================================================= */ + #define R_FACI_HP_FSUACR_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_FACI_HP_FSUACR_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_FACI_HP_FSUACR_SAS_Pos (0UL) /*!< SAS (Bit 0) */ + #define R_FACI_HP_FSUACR_SAS_Msk (0x3UL) /*!< SAS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_FCACHE ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== FCACHEE ======================================================== */ + #define R_FCACHE_FCACHEE_FCACHEEN_Pos (0UL) /*!< FCACHEEN (Bit 0) */ + #define R_FCACHE_FCACHEE_FCACHEEN_Msk (0x1UL) /*!< FCACHEEN (Bitfield-Mask: 0x01) */ +/* ======================================================= FCACHEIV ======================================================== */ + #define R_FCACHE_FCACHEIV_FCACHEIV_Pos (0UL) /*!< FCACHEIV (Bit 0) */ + #define R_FCACHE_FCACHEIV_FCACHEIV_Msk (0x1UL) /*!< FCACHEIV (Bitfield-Mask: 0x01) */ +/* ========================================================= FLWT ========================================================== */ + #define R_FCACHE_FLWT_FLWT_Pos (0UL) /*!< FLWT (Bit 0) */ + #define R_FCACHE_FLWT_FLWT_Msk (0x7UL) /*!< FLWT (Bitfield-Mask: 0x07) */ +/* ========================================================= FSAR ========================================================== */ + #define R_FCACHE_FSAR_FLWTSA_Pos (0UL) /*!< FLWTSA (Bit 0) */ + #define R_FCACHE_FSAR_FLWTSA_Msk (0x1UL) /*!< FLWTSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FCACHEENSA_Pos (1UL) /*!< FCACHEENSA (Bit 1) */ + #define R_FCACHE_FSAR_FCACHEENSA_Msk (0x2UL) /*!< FCACHEENSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FCKMHZSA_Pos (8UL) /*!< FCKMHZSA (Bit 8) */ + #define R_FCACHE_FSAR_FCKMHZSA_Msk (0x100UL) /*!< FCKMHZSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FACICOMISA_Pos (9UL) /*!< FACICOMISA (Bit 9) */ + #define R_FCACHE_FSAR_FACICOMISA_Msk (0x200UL) /*!< FACICOMISA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FACICOMRSA_Pos (10UL) /*!< FACICOMRSA (Bit 10) */ + #define R_FCACHE_FSAR_FACICOMRSA_Msk (0x400UL) /*!< FACICOMRSA (Bitfield-Mask: 0x01) */ + #define R_FCACHE_FSAR_FACITRSA_Pos (11UL) /*!< FACITRSA (Bit 11) */ + #define R_FCACHE_FSAR_FACITRSA_Msk (0x800UL) /*!< FACITRSA (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GLCDC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= GR1_CLUT0 ======================================================= */ + #define R_GLCDC_GR1_CLUT0_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR1_CLUT0_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT0_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR1_CLUT0_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT0_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR1_CLUT0_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT0_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR1_CLUT0_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ======================================================= GR1_CLUT1 ======================================================= */ + #define R_GLCDC_GR1_CLUT1_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR1_CLUT1_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT1_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR1_CLUT1_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT1_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR1_CLUT1_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR1_CLUT1_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR1_CLUT1_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ======================================================= GR2_CLUT0 ======================================================= */ + #define R_GLCDC_GR2_CLUT0_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR2_CLUT0_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT0_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR2_CLUT0_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT0_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR2_CLUT0_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT0_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR2_CLUT0_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ +/* ======================================================= GR2_CLUT1 ======================================================= */ + #define R_GLCDC_GR2_CLUT1_A_Pos (24UL) /*!< A (Bit 24) */ + #define R_GLCDC_GR2_CLUT1_A_Msk (0xff000000UL) /*!< A (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT1_R_Pos (16UL) /*!< R (Bit 16) */ + #define R_GLCDC_GR2_CLUT1_R_Msk (0xff0000UL) /*!< R (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT1_G_Pos (8UL) /*!< G (Bit 8) */ + #define R_GLCDC_GR2_CLUT1_G_Msk (0xff00UL) /*!< G (Bitfield-Mask: 0xff) */ + #define R_GLCDC_GR2_CLUT1_B_Pos (0UL) /*!< B (Bit 0) */ + #define R_GLCDC_GR2_CLUT1_B_Msk (0xffUL) /*!< B (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= GTWP ========================================================== */ + #define R_GPT0_GTWP_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_GPT0_GTWP_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + #define R_GPT0_GTWP_WP_Pos (0UL) /*!< WP (Bit 0) */ + #define R_GPT0_GTWP_WP_Msk (0x1UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_STRWP_Pos (1UL) /*!< STRWP (Bit 1) */ + #define R_GPT0_GTWP_STRWP_Msk (0x2UL) /*!< STRWP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_STPWP_Pos (2UL) /*!< STPWP (Bit 2) */ + #define R_GPT0_GTWP_STPWP_Msk (0x4UL) /*!< STPWP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_CLRWP_Pos (3UL) /*!< CLRWP (Bit 3) */ + #define R_GPT0_GTWP_CLRWP_Msk (0x8UL) /*!< CLRWP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTWP_CMNWP_Pos (4UL) /*!< CMNWP (Bit 4) */ + #define R_GPT0_GTWP_CMNWP_Msk (0x10UL) /*!< CMNWP (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSTR ========================================================= */ + #define R_GPT0_GTSTR_CSTRT_Pos (0UL) /*!< CSTRT (Bit 0) */ + #define R_GPT0_GTSTR_CSTRT_Msk (0x1UL) /*!< CSTRT (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSTP ========================================================= */ + #define R_GPT0_GTSTP_CSTOP_Pos (0UL) /*!< CSTOP (Bit 0) */ + #define R_GPT0_GTSTP_CSTOP_Msk (0x1UL) /*!< CSTOP (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCLR ========================================================= */ + #define R_GPT0_GTCLR_CCLR_Pos (0UL) /*!< CCLR (Bit 0) */ + #define R_GPT0_GTCLR_CCLR_Msk (0x1UL) /*!< CCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSSR ========================================================= */ + #define R_GPT0_GTSSR_CSTRT_Pos (31UL) /*!< CSTRT (Bit 31) */ + #define R_GPT0_GTSSR_CSTRT_Msk (0x80000000UL) /*!< CSTRT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSELC_Pos (16UL) /*!< SSELC (Bit 16) */ + #define R_GPT0_GTSSR_SSELC_Msk (0x10000UL) /*!< SSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBFAH_Pos (15UL) /*!< SSCBFAH (Bit 15) */ + #define R_GPT0_GTSSR_SSCBFAH_Msk (0x8000UL) /*!< SSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBFAL_Pos (14UL) /*!< SSCBFAL (Bit 14) */ + #define R_GPT0_GTSSR_SSCBFAL_Msk (0x4000UL) /*!< SSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBRAH_Pos (13UL) /*!< SSCBRAH (Bit 13) */ + #define R_GPT0_GTSSR_SSCBRAH_Msk (0x2000UL) /*!< SSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCBRAL_Pos (12UL) /*!< SSCBRAL (Bit 12) */ + #define R_GPT0_GTSSR_SSCBRAL_Msk (0x1000UL) /*!< SSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCAFBH_Pos (11UL) /*!< SSCAFBH (Bit 11) */ + #define R_GPT0_GTSSR_SSCAFBH_Msk (0x800UL) /*!< SSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCAFBL_Pos (10UL) /*!< SSCAFBL (Bit 10) */ + #define R_GPT0_GTSSR_SSCAFBL_Msk (0x400UL) /*!< SSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCARBH_Pos (9UL) /*!< SSCARBH (Bit 9) */ + #define R_GPT0_GTSSR_SSCARBH_Msk (0x200UL) /*!< SSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSCARBL_Pos (8UL) /*!< SSCARBL (Bit 8) */ + #define R_GPT0_GTSSR_SSCARBL_Msk (0x100UL) /*!< SSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSGTRGF_Pos (1UL) /*!< SSGTRGF (Bit 1) */ + #define R_GPT0_GTSSR_SSGTRGF_Msk (0x2UL) /*!< SSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSSR_SSGTRGR_Pos (0UL) /*!< SSGTRGR (Bit 0) */ + #define R_GPT0_GTSSR_SSGTRGR_Msk (0x1UL) /*!< SSGTRGR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTPSR ========================================================= */ + #define R_GPT0_GTPSR_CSTOP_Pos (31UL) /*!< CSTOP (Bit 31) */ + #define R_GPT0_GTPSR_CSTOP_Msk (0x80000000UL) /*!< CSTOP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSELC_Pos (16UL) /*!< PSELC (Bit 16) */ + #define R_GPT0_GTPSR_PSELC_Msk (0x10000UL) /*!< PSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBFAH_Pos (15UL) /*!< PSCBFAH (Bit 15) */ + #define R_GPT0_GTPSR_PSCBFAH_Msk (0x8000UL) /*!< PSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBFAL_Pos (14UL) /*!< PSCBFAL (Bit 14) */ + #define R_GPT0_GTPSR_PSCBFAL_Msk (0x4000UL) /*!< PSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBRAH_Pos (13UL) /*!< PSCBRAH (Bit 13) */ + #define R_GPT0_GTPSR_PSCBRAH_Msk (0x2000UL) /*!< PSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCBRAL_Pos (12UL) /*!< PSCBRAL (Bit 12) */ + #define R_GPT0_GTPSR_PSCBRAL_Msk (0x1000UL) /*!< PSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCAFBH_Pos (11UL) /*!< PSCAFBH (Bit 11) */ + #define R_GPT0_GTPSR_PSCAFBH_Msk (0x800UL) /*!< PSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCAFBL_Pos (10UL) /*!< PSCAFBL (Bit 10) */ + #define R_GPT0_GTPSR_PSCAFBL_Msk (0x400UL) /*!< PSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCARBH_Pos (9UL) /*!< PSCARBH (Bit 9) */ + #define R_GPT0_GTPSR_PSCARBH_Msk (0x200UL) /*!< PSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSCARBL_Pos (8UL) /*!< PSCARBL (Bit 8) */ + #define R_GPT0_GTPSR_PSCARBL_Msk (0x100UL) /*!< PSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSGTRGF_Pos (1UL) /*!< PSGTRGF (Bit 1) */ + #define R_GPT0_GTPSR_PSGTRGF_Msk (0x2UL) /*!< PSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPSR_PSGTRGR_Pos (0UL) /*!< PSGTRGR (Bit 0) */ + #define R_GPT0_GTPSR_PSGTRGR_Msk (0x1UL) /*!< PSGTRGR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCSR ========================================================= */ + #define R_GPT0_GTCSR_CCLR_Pos (31UL) /*!< CCLR (Bit 31) */ + #define R_GPT0_GTCSR_CCLR_Msk (0x80000000UL) /*!< CCLR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CP1CCE_Pos (27UL) /*!< CP1CCE (Bit 27) */ + #define R_GPT0_GTCSR_CP1CCE_Msk (0x8000000UL) /*!< CP1CCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCMSC_Pos (24UL) /*!< CSCMSC (Bit 24) */ + #define R_GPT0_GTCSR_CSCMSC_Msk (0x7000000UL) /*!< CSCMSC (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTCSR_CSELC_Pos (16UL) /*!< CSELC (Bit 16) */ + #define R_GPT0_GTCSR_CSELC_Msk (0x10000UL) /*!< CSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBFAH_Pos (15UL) /*!< CSCBFAH (Bit 15) */ + #define R_GPT0_GTCSR_CSCBFAH_Msk (0x8000UL) /*!< CSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBFAL_Pos (14UL) /*!< CSCBFAL (Bit 14) */ + #define R_GPT0_GTCSR_CSCBFAL_Msk (0x4000UL) /*!< CSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBRAH_Pos (13UL) /*!< CSCBRAH (Bit 13) */ + #define R_GPT0_GTCSR_CSCBRAH_Msk (0x2000UL) /*!< CSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCBRAL_Pos (12UL) /*!< CSCBRAL (Bit 12) */ + #define R_GPT0_GTCSR_CSCBRAL_Msk (0x1000UL) /*!< CSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCAFBH_Pos (11UL) /*!< CSCAFBH (Bit 11) */ + #define R_GPT0_GTCSR_CSCAFBH_Msk (0x800UL) /*!< CSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCAFBL_Pos (10UL) /*!< CSCAFBL (Bit 10) */ + #define R_GPT0_GTCSR_CSCAFBL_Msk (0x400UL) /*!< CSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCARBH_Pos (9UL) /*!< CSCARBH (Bit 9) */ + #define R_GPT0_GTCSR_CSCARBH_Msk (0x200UL) /*!< CSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSCARBL_Pos (8UL) /*!< CSCARBL (Bit 8) */ + #define R_GPT0_GTCSR_CSCARBL_Msk (0x100UL) /*!< CSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSGTRGF_Pos (1UL) /*!< CSGTRGF (Bit 1) */ + #define R_GPT0_GTCSR_CSGTRGF_Msk (0x2UL) /*!< CSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCSR_CSGTRGR_Pos (0UL) /*!< CSGTRGR (Bit 0) */ + #define R_GPT0_GTCSR_CSGTRGR_Msk (0x1UL) /*!< CSGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTUPSR ========================================================= */ + #define R_GPT0_GTUPSR_USILVL_Pos (24UL) /*!< USILVL (Bit 24) */ + #define R_GPT0_GTUPSR_USILVL_Msk (0xf000000UL) /*!< USILVL (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTUPSR_USELC_Pos (16UL) /*!< USELC (Bit 16) */ + #define R_GPT0_GTUPSR_USELC_Msk (0x10000UL) /*!< USELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBFAH_Pos (15UL) /*!< USCBFAH (Bit 15) */ + #define R_GPT0_GTUPSR_USCBFAH_Msk (0x8000UL) /*!< USCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBFAL_Pos (14UL) /*!< USCBFAL (Bit 14) */ + #define R_GPT0_GTUPSR_USCBFAL_Msk (0x4000UL) /*!< USCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBRAH_Pos (13UL) /*!< USCBRAH (Bit 13) */ + #define R_GPT0_GTUPSR_USCBRAH_Msk (0x2000UL) /*!< USCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCBRAL_Pos (12UL) /*!< USCBRAL (Bit 12) */ + #define R_GPT0_GTUPSR_USCBRAL_Msk (0x1000UL) /*!< USCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCAFBH_Pos (11UL) /*!< USCAFBH (Bit 11) */ + #define R_GPT0_GTUPSR_USCAFBH_Msk (0x800UL) /*!< USCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCAFBL_Pos (10UL) /*!< USCAFBL (Bit 10) */ + #define R_GPT0_GTUPSR_USCAFBL_Msk (0x400UL) /*!< USCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCARBH_Pos (9UL) /*!< USCARBH (Bit 9) */ + #define R_GPT0_GTUPSR_USCARBH_Msk (0x200UL) /*!< USCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USCARBL_Pos (8UL) /*!< USCARBL (Bit 8) */ + #define R_GPT0_GTUPSR_USCARBL_Msk (0x100UL) /*!< USCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USGTRGF_Pos (1UL) /*!< USGTRGF (Bit 1) */ + #define R_GPT0_GTUPSR_USGTRGF_Msk (0x2UL) /*!< USGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUPSR_USGTRGR_Pos (0UL) /*!< USGTRGR (Bit 0) */ + #define R_GPT0_GTUPSR_USGTRGR_Msk (0x1UL) /*!< USGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTDNSR ========================================================= */ + #define R_GPT0_GTDNSR_DSILVL_Pos (24UL) /*!< DSILVL (Bit 24) */ + #define R_GPT0_GTDNSR_DSILVL_Msk (0xf000000UL) /*!< DSILVL (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTDNSR_DSELC_Pos (16UL) /*!< DSELC (Bit 16) */ + #define R_GPT0_GTDNSR_DSELC_Msk (0x10000UL) /*!< DSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBFAH_Pos (15UL) /*!< DSCBFAH (Bit 15) */ + #define R_GPT0_GTDNSR_DSCBFAH_Msk (0x8000UL) /*!< DSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBFAL_Pos (14UL) /*!< DSCBFAL (Bit 14) */ + #define R_GPT0_GTDNSR_DSCBFAL_Msk (0x4000UL) /*!< DSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBRAH_Pos (13UL) /*!< DSCBRAH (Bit 13) */ + #define R_GPT0_GTDNSR_DSCBRAH_Msk (0x2000UL) /*!< DSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCBRAL_Pos (12UL) /*!< DSCBRAL (Bit 12) */ + #define R_GPT0_GTDNSR_DSCBRAL_Msk (0x1000UL) /*!< DSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCAFBH_Pos (11UL) /*!< DSCAFBH (Bit 11) */ + #define R_GPT0_GTDNSR_DSCAFBH_Msk (0x800UL) /*!< DSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCAFBL_Pos (10UL) /*!< DSCAFBL (Bit 10) */ + #define R_GPT0_GTDNSR_DSCAFBL_Msk (0x400UL) /*!< DSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCARBH_Pos (9UL) /*!< DSCARBH (Bit 9) */ + #define R_GPT0_GTDNSR_DSCARBH_Msk (0x200UL) /*!< DSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSCARBL_Pos (8UL) /*!< DSCARBL (Bit 8) */ + #define R_GPT0_GTDNSR_DSCARBL_Msk (0x100UL) /*!< DSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSGTRGF_Pos (1UL) /*!< DSGTRGF (Bit 1) */ + #define R_GPT0_GTDNSR_DSGTRGF_Msk (0x2UL) /*!< DSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDNSR_DSGTRGR_Pos (0UL) /*!< DSGTRGR (Bit 0) */ + #define R_GPT0_GTDNSR_DSGTRGR_Msk (0x1UL) /*!< DSGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTICASR ======================================================== */ + #define R_GPT0_GTICASR_ASELC_Pos (16UL) /*!< ASELC (Bit 16) */ + #define R_GPT0_GTICASR_ASELC_Msk (0x10000UL) /*!< ASELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBFAH_Pos (15UL) /*!< ASCBFAH (Bit 15) */ + #define R_GPT0_GTICASR_ASCBFAH_Msk (0x8000UL) /*!< ASCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBFAL_Pos (14UL) /*!< ASCBFAL (Bit 14) */ + #define R_GPT0_GTICASR_ASCBFAL_Msk (0x4000UL) /*!< ASCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBRAH_Pos (13UL) /*!< ASCBRAH (Bit 13) */ + #define R_GPT0_GTICASR_ASCBRAH_Msk (0x2000UL) /*!< ASCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCBRAL_Pos (12UL) /*!< ASCBRAL (Bit 12) */ + #define R_GPT0_GTICASR_ASCBRAL_Msk (0x1000UL) /*!< ASCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCAFBH_Pos (11UL) /*!< ASCAFBH (Bit 11) */ + #define R_GPT0_GTICASR_ASCAFBH_Msk (0x800UL) /*!< ASCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCAFBL_Pos (10UL) /*!< ASCAFBL (Bit 10) */ + #define R_GPT0_GTICASR_ASCAFBL_Msk (0x400UL) /*!< ASCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCARBH_Pos (9UL) /*!< ASCARBH (Bit 9) */ + #define R_GPT0_GTICASR_ASCARBH_Msk (0x200UL) /*!< ASCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASCARBL_Pos (8UL) /*!< ASCARBL (Bit 8) */ + #define R_GPT0_GTICASR_ASCARBL_Msk (0x100UL) /*!< ASCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASGTRGF_Pos (1UL) /*!< ASGTRGF (Bit 1) */ + #define R_GPT0_GTICASR_ASGTRGF_Msk (0x2UL) /*!< ASGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICASR_ASGTRGR_Pos (0UL) /*!< ASGTRGR (Bit 0) */ + #define R_GPT0_GTICASR_ASGTRGR_Msk (0x1UL) /*!< ASGTRGR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTICBSR ======================================================== */ + #define R_GPT0_GTICBSR_BSELC_Pos (16UL) /*!< BSELC (Bit 16) */ + #define R_GPT0_GTICBSR_BSELC_Msk (0x10000UL) /*!< BSELC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBFAH_Pos (15UL) /*!< BSCBFAH (Bit 15) */ + #define R_GPT0_GTICBSR_BSCBFAH_Msk (0x8000UL) /*!< BSCBFAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBFAL_Pos (14UL) /*!< BSCBFAL (Bit 14) */ + #define R_GPT0_GTICBSR_BSCBFAL_Msk (0x4000UL) /*!< BSCBFAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBRAH_Pos (13UL) /*!< BSCBRAH (Bit 13) */ + #define R_GPT0_GTICBSR_BSCBRAH_Msk (0x2000UL) /*!< BSCBRAH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCBRAL_Pos (12UL) /*!< BSCBRAL (Bit 12) */ + #define R_GPT0_GTICBSR_BSCBRAL_Msk (0x1000UL) /*!< BSCBRAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCAFBH_Pos (11UL) /*!< BSCAFBH (Bit 11) */ + #define R_GPT0_GTICBSR_BSCAFBH_Msk (0x800UL) /*!< BSCAFBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCAFBL_Pos (10UL) /*!< BSCAFBL (Bit 10) */ + #define R_GPT0_GTICBSR_BSCAFBL_Msk (0x400UL) /*!< BSCAFBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCARBH_Pos (9UL) /*!< BSCARBH (Bit 9) */ + #define R_GPT0_GTICBSR_BSCARBH_Msk (0x200UL) /*!< BSCARBH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSCARBL_Pos (8UL) /*!< BSCARBL (Bit 8) */ + #define R_GPT0_GTICBSR_BSCARBL_Msk (0x100UL) /*!< BSCARBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSGTRGF_Pos (1UL) /*!< BSGTRGF (Bit 1) */ + #define R_GPT0_GTICBSR_BSGTRGF_Msk (0x2UL) /*!< BSGTRGF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICBSR_BSGTRGR_Pos (0UL) /*!< BSGTRGR (Bit 0) */ + #define R_GPT0_GTICBSR_BSGTRGR_Msk (0x1UL) /*!< BSGTRGR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCR ========================================================== */ + #define R_GPT0_GTCR_CKEG_Pos (27UL) /*!< CKEG (Bit 27) */ + #define R_GPT0_GTCR_CKEG_Msk (0x18000000UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTCR_TPCS_Pos (23UL) /*!< TPCS (Bit 23) */ + #define R_GPT0_GTCR_TPCS_Msk (0x7800000UL) /*!< TPCS (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTCR_MD_Pos (16UL) /*!< MD (Bit 16) */ + #define R_GPT0_GTCR_MD_Msk (0xf0000UL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTCR_SSCEN_Pos (15UL) /*!< SSCEN (Bit 15) */ + #define R_GPT0_GTCR_SSCEN_Msk (0x8000UL) /*!< SSCEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_CPSCD_Pos (12UL) /*!< CPSCD (Bit 12) */ + #define R_GPT0_GTCR_CPSCD_Msk (0x1000UL) /*!< CPSCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_SSCGRP_Pos (10UL) /*!< SSCGRP (Bit 10) */ + #define R_GPT0_GTCR_SSCGRP_Msk (0xc00UL) /*!< SSCGRP (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTCR_SCGTIOC_Pos (9UL) /*!< SCGTIOC (Bit 9) */ + #define R_GPT0_GTCR_SCGTIOC_Msk (0x200UL) /*!< SCGTIOC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_ICDS_Pos (8UL) /*!< ICDS (Bit 8) */ + #define R_GPT0_GTCR_ICDS_Msk (0x100UL) /*!< ICDS (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTCR_CST_Pos (0UL) /*!< CST (Bit 0) */ + #define R_GPT0_GTCR_CST_Msk (0x1UL) /*!< CST (Bitfield-Mask: 0x01) */ +/* ======================================================= GTUDDTYC ======================================================== */ + #define R_GPT0_GTUDDTYC_OBDTYR_Pos (27UL) /*!< OBDTYR (Bit 27) */ + #define R_GPT0_GTUDDTYC_OBDTYR_Msk (0x8000000UL) /*!< OBDTYR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OBDTYF_Pos (26UL) /*!< OBDTYF (Bit 26) */ + #define R_GPT0_GTUDDTYC_OBDTYF_Msk (0x4000000UL) /*!< OBDTYF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OBDTY_Pos (24UL) /*!< OBDTY (Bit 24) */ + #define R_GPT0_GTUDDTYC_OBDTY_Msk (0x3000000UL) /*!< OBDTY (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTUDDTYC_OADTYR_Pos (19UL) /*!< OADTYR (Bit 19) */ + #define R_GPT0_GTUDDTYC_OADTYR_Msk (0x80000UL) /*!< OADTYR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OADTYF_Pos (18UL) /*!< OADTYF (Bit 18) */ + #define R_GPT0_GTUDDTYC_OADTYF_Msk (0x40000UL) /*!< OADTYF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_OADTY_Pos (16UL) /*!< OADTY (Bit 16) */ + #define R_GPT0_GTUDDTYC_OADTY_Msk (0x30000UL) /*!< OADTY (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTUDDTYC_UDF_Pos (1UL) /*!< UDF (Bit 1) */ + #define R_GPT0_GTUDDTYC_UDF_Msk (0x2UL) /*!< UDF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTUDDTYC_UD_Pos (0UL) /*!< UD (Bit 0) */ + #define R_GPT0_GTUDDTYC_UD_Msk (0x1UL) /*!< UD (Bitfield-Mask: 0x01) */ +/* ========================================================= GTIOR ========================================================= */ + #define R_GPT0_GTIOR_NFCSB_Pos (30UL) /*!< NFCSB (Bit 30) */ + #define R_GPT0_GTIOR_NFCSB_Msk (0xc0000000UL) /*!< NFCSB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_NFBEN_Pos (29UL) /*!< NFBEN (Bit 29) */ + #define R_GPT0_GTIOR_NFBEN_Msk (0x20000000UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBEOCD_Pos (27UL) /*!< OBEOCD (Bit 27) */ + #define R_GPT0_GTIOR_OBEOCD_Msk (0x8000000UL) /*!< OBEOCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBDF_Pos (25UL) /*!< OBDF (Bit 25) */ + #define R_GPT0_GTIOR_OBDF_Msk (0x6000000UL) /*!< OBDF (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_OBE_Pos (24UL) /*!< OBE (Bit 24) */ + #define R_GPT0_GTIOR_OBE_Msk (0x1000000UL) /*!< OBE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBHLD_Pos (23UL) /*!< OBHLD (Bit 23) */ + #define R_GPT0_GTIOR_OBHLD_Msk (0x800000UL) /*!< OBHLD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OBDFLT_Pos (22UL) /*!< OBDFLT (Bit 22) */ + #define R_GPT0_GTIOR_OBDFLT_Msk (0x400000UL) /*!< OBDFLT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_GTIOB_Pos (16UL) /*!< GTIOB (Bit 16) */ + #define R_GPT0_GTIOR_GTIOB_Msk (0x1f0000UL) /*!< GTIOB (Bitfield-Mask: 0x1f) */ + #define R_GPT0_GTIOR_NFCSA_Pos (14UL) /*!< NFCSA (Bit 14) */ + #define R_GPT0_GTIOR_NFCSA_Msk (0xc000UL) /*!< NFCSA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_NFAEN_Pos (13UL) /*!< NFAEN (Bit 13) */ + #define R_GPT0_GTIOR_NFAEN_Msk (0x2000UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_PSYE_Pos (12UL) /*!< PSYE (Bit 12) */ + #define R_GPT0_GTIOR_PSYE_Msk (0x1000UL) /*!< PSYE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OAEOCD_Pos (11UL) /*!< OAEOCD (Bit 11) */ + #define R_GPT0_GTIOR_OAEOCD_Msk (0x800UL) /*!< OAEOCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OADF_Pos (9UL) /*!< OADF (Bit 9) */ + #define R_GPT0_GTIOR_OADF_Msk (0x600UL) /*!< OADF (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTIOR_OAE_Pos (8UL) /*!< OAE (Bit 8) */ + #define R_GPT0_GTIOR_OAE_Msk (0x100UL) /*!< OAE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OAHLD_Pos (7UL) /*!< OAHLD (Bit 7) */ + #define R_GPT0_GTIOR_OAHLD_Msk (0x80UL) /*!< OAHLD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_OADFLT_Pos (6UL) /*!< OADFLT (Bit 6) */ + #define R_GPT0_GTIOR_OADFLT_Msk (0x40UL) /*!< OADFLT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_CPSCIR_Pos (5UL) /*!< CPSCIR (Bit 5) */ + #define R_GPT0_GTIOR_CPSCIR_Msk (0x20UL) /*!< CPSCIR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTIOR_GTIOA_Pos (0UL) /*!< GTIOA (Bit 0) */ + #define R_GPT0_GTIOR_GTIOA_Msk (0x1fUL) /*!< GTIOA (Bitfield-Mask: 0x1f) */ +/* ======================================================== GTINTAD ======================================================== */ + #define R_GPT0_GTINTAD_GTINTPC_Pos (31UL) /*!< GTINTPC (Bit 31) */ + #define R_GPT0_GTINTAD_GTINTPC_Msk (0x80000000UL) /*!< GTINTPC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRPABL_Pos (30UL) /*!< GRPABL (Bit 30) */ + #define R_GPT0_GTINTAD_GRPABL_Msk (0x40000000UL) /*!< GRPABL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRPABH_Pos (29UL) /*!< GRPABH (Bit 29) */ + #define R_GPT0_GTINTAD_GRPABH_Msk (0x20000000UL) /*!< GRPABH (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRPDTE_Pos (28UL) /*!< GRPDTE (Bit 28) */ + #define R_GPT0_GTINTAD_GRPDTE_Msk (0x10000000UL) /*!< GRPDTE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_GRP_Pos (24UL) /*!< GRP (Bit 24) */ + #define R_GPT0_GTINTAD_GRP_Msk (0x3000000UL) /*!< GRP (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTINTAD_ADTRDEN_Pos (17UL) /*!< ADTRDEN (Bit 17) */ + #define R_GPT0_GTINTAD_ADTRDEN_Msk (0x20000UL) /*!< ADTRDEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_ADTRUEN_Pos (16UL) /*!< ADTRUEN (Bit 16) */ + #define R_GPT0_GTINTAD_ADTRUEN_Msk (0x10000UL) /*!< ADTRUEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_SCFPU_Pos (15UL) /*!< SCFPU (Bit 15) */ + #define R_GPT0_GTINTAD_SCFPU_Msk (0x8000UL) /*!< SCFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_SCFPO_Pos (14UL) /*!< SCFPO (Bit 14) */ + #define R_GPT0_GTINTAD_SCFPO_Msk (0x4000UL) /*!< SCFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTINTAD_SCF_Pos (8UL) /*!< SCF (Bit 8) */ + #define R_GPT0_GTINTAD_SCF_Msk (0x100UL) /*!< SCF (Bitfield-Mask: 0x01) */ +/* ========================================================= GTST ========================================================== */ + #define R_GPT0_GTST_OABLF_Pos (30UL) /*!< OABLF (Bit 30) */ + #define R_GPT0_GTST_OABLF_Msk (0x40000000UL) /*!< OABLF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_OABHF_Pos (29UL) /*!< OABHF (Bit 29) */ + #define R_GPT0_GTST_OABHF_Msk (0x20000000UL) /*!< OABHF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_DTEF_Pos (28UL) /*!< DTEF (Bit 28) */ + #define R_GPT0_GTST_DTEF_Msk (0x10000000UL) /*!< DTEF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ODF_Pos (24UL) /*!< ODF (Bit 24) */ + #define R_GPT0_GTST_ODF_Msk (0x1000000UL) /*!< ODF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRBDF_Pos (19UL) /*!< ADTRBDF (Bit 19) */ + #define R_GPT0_GTST_ADTRBDF_Msk (0x80000UL) /*!< ADTRBDF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRBUF_Pos (18UL) /*!< ADTRBUF (Bit 18) */ + #define R_GPT0_GTST_ADTRBUF_Msk (0x40000UL) /*!< ADTRBUF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRADF_Pos (17UL) /*!< ADTRADF (Bit 17) */ + #define R_GPT0_GTST_ADTRADF_Msk (0x20000UL) /*!< ADTRADF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ADTRAUF_Pos (16UL) /*!< ADTRAUF (Bit 16) */ + #define R_GPT0_GTST_ADTRAUF_Msk (0x10000UL) /*!< ADTRAUF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TUCF_Pos (15UL) /*!< TUCF (Bit 15) */ + #define R_GPT0_GTST_TUCF_Msk (0x8000UL) /*!< TUCF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_ITCNT_Pos (8UL) /*!< ITCNT (Bit 8) */ + #define R_GPT0_GTST_ITCNT_Msk (0x700UL) /*!< ITCNT (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTST_TCFPU_Pos (7UL) /*!< TCFPU (Bit 7) */ + #define R_GPT0_GTST_TCFPU_Msk (0x80UL) /*!< TCFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFPO_Pos (6UL) /*!< TCFPO (Bit 6) */ + #define R_GPT0_GTST_TCFPO_Msk (0x40UL) /*!< TCFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFF_Pos (5UL) /*!< TCFF (Bit 5) */ + #define R_GPT0_GTST_TCFF_Msk (0x20UL) /*!< TCFF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFE_Pos (4UL) /*!< TCFE (Bit 4) */ + #define R_GPT0_GTST_TCFE_Msk (0x10UL) /*!< TCFE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFD_Pos (3UL) /*!< TCFD (Bit 3) */ + #define R_GPT0_GTST_TCFD_Msk (0x8UL) /*!< TCFD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFC_Pos (2UL) /*!< TCFC (Bit 2) */ + #define R_GPT0_GTST_TCFC_Msk (0x4UL) /*!< TCFC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFB_Pos (1UL) /*!< TCFB (Bit 1) */ + #define R_GPT0_GTST_TCFB_Msk (0x2UL) /*!< TCFB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_TCFA_Pos (0UL) /*!< TCFA (Bit 0) */ + #define R_GPT0_GTST_TCFA_Msk (0x1UL) /*!< TCFA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTST_PCF_Pos (31UL) /*!< PCF (Bit 31) */ + #define R_GPT0_GTST_PCF_Msk (0x80000000UL) /*!< PCF (Bitfield-Mask: 0x01) */ +/* ========================================================= GTBER ========================================================= */ + #define R_GPT0_GTBER_ADTDB_Pos (30UL) /*!< ADTDB (Bit 30) */ + #define R_GPT0_GTBER_ADTDB_Msk (0x40000000UL) /*!< ADTDB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_ADTTB_Pos (28UL) /*!< ADTTB (Bit 28) */ + #define R_GPT0_GTBER_ADTTB_Msk (0x30000000UL) /*!< ADTTB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_ADTDA_Pos (26UL) /*!< ADTDA (Bit 26) */ + #define R_GPT0_GTBER_ADTDA_Msk (0x4000000UL) /*!< ADTDA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_ADTTA_Pos (24UL) /*!< ADTTA (Bit 24) */ + #define R_GPT0_GTBER_ADTTA_Msk (0x3000000UL) /*!< ADTTA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_CCRSWT_Pos (22UL) /*!< CCRSWT (Bit 22) */ + #define R_GPT0_GTBER_CCRSWT_Msk (0x400000UL) /*!< CCRSWT (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_PR_Pos (20UL) /*!< PR (Bit 20) */ + #define R_GPT0_GTBER_PR_Msk (0x300000UL) /*!< PR (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_CCRB_Pos (18UL) /*!< CCRB (Bit 18) */ + #define R_GPT0_GTBER_CCRB_Msk (0xc0000UL) /*!< CCRB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_CCRA_Pos (16UL) /*!< CCRA (Bit 16) */ + #define R_GPT0_GTBER_CCRA_Msk (0x30000UL) /*!< CCRA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER_DBRTEC_Pos (8UL) /*!< DBRTEC (Bit 8) */ + #define R_GPT0_GTBER_DBRTEC_Msk (0x100UL) /*!< DBRTEC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD3_Pos (3UL) /*!< BD3 (Bit 3) */ + #define R_GPT0_GTBER_BD3_Msk (0x8UL) /*!< BD3 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD2_Pos (2UL) /*!< BD2 (Bit 2) */ + #define R_GPT0_GTBER_BD2_Msk (0x4UL) /*!< BD2 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD1_Pos (1UL) /*!< BD1 (Bit 1) */ + #define R_GPT0_GTBER_BD1_Msk (0x2UL) /*!< BD1 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER_BD0_Pos (0UL) /*!< BD0 (Bit 0) */ + #define R_GPT0_GTBER_BD0_Msk (0x1UL) /*!< BD0 (Bitfield-Mask: 0x01) */ +/* ========================================================= GTITC ========================================================= */ + #define R_GPT0_GTITC_ADTBL_Pos (14UL) /*!< ADTBL (Bit 14) */ + #define R_GPT0_GTITC_ADTBL_Msk (0x4000UL) /*!< ADTBL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ADTAL_Pos (12UL) /*!< ADTAL (Bit 12) */ + #define R_GPT0_GTITC_ADTAL_Msk (0x1000UL) /*!< ADTAL (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_IVTT_Pos (8UL) /*!< IVTT (Bit 8) */ + #define R_GPT0_GTITC_IVTT_Msk (0x700UL) /*!< IVTT (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTITC_IVTC_Pos (6UL) /*!< IVTC (Bit 6) */ + #define R_GPT0_GTITC_IVTC_Msk (0xc0UL) /*!< IVTC (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTITC_ITLF_Pos (5UL) /*!< ITLF (Bit 5) */ + #define R_GPT0_GTITC_ITLF_Msk (0x20UL) /*!< ITLF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLE_Pos (4UL) /*!< ITLE (Bit 4) */ + #define R_GPT0_GTITC_ITLE_Msk (0x10UL) /*!< ITLE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLD_Pos (3UL) /*!< ITLD (Bit 3) */ + #define R_GPT0_GTITC_ITLD_Msk (0x8UL) /*!< ITLD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLC_Pos (2UL) /*!< ITLC (Bit 2) */ + #define R_GPT0_GTITC_ITLC_Msk (0x4UL) /*!< ITLC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLB_Pos (1UL) /*!< ITLB (Bit 1) */ + #define R_GPT0_GTITC_ITLB_Msk (0x2UL) /*!< ITLB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTITC_ITLA_Pos (0UL) /*!< ITLA (Bit 0) */ + #define R_GPT0_GTITC_ITLA_Msk (0x1UL) /*!< ITLA (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCNT ========================================================= */ + #define R_GPT0_GTCNT_GTCNT_Pos (0UL) /*!< GTCNT (Bit 0) */ + #define R_GPT0_GTCNT_GTCNT_Msk (0xffffffffUL) /*!< GTCNT (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTCCR ========================================================= */ + #define R_GPT0_GTCCR_GTCCR_Pos (0UL) /*!< GTCCR (Bit 0) */ + #define R_GPT0_GTCCR_GTCCR_Msk (0xffffffffUL) /*!< GTCCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTPR ========================================================== */ + #define R_GPT0_GTPR_GTPR_Pos (0UL) /*!< GTPR (Bit 0) */ + #define R_GPT0_GTPR_GTPR_Msk (0xffffffffUL) /*!< GTPR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTPBR ========================================================= */ + #define R_GPT0_GTPBR_GTPBR_Pos (0UL) /*!< GTPBR (Bit 0) */ + #define R_GPT0_GTPBR_GTPBR_Msk (0xffffffffUL) /*!< GTPBR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTPDBR ========================================================= */ + #define R_GPT0_GTPDBR_GTPDBR_Pos (0UL) /*!< GTPDBR (Bit 0) */ + #define R_GPT0_GTPDBR_GTPDBR_Msk (0xffffffffUL) /*!< GTPDBR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTADTRA ======================================================== */ + #define R_GPT0_GTADTRA_GTADTRA_Pos (0UL) /*!< GTADTRA (Bit 0) */ + #define R_GPT0_GTADTRA_GTADTRA_Msk (0xffffffffUL) /*!< GTADTRA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTADTRB ======================================================== */ + #define R_GPT0_GTADTRB_GTADTRB_Pos (0UL) /*!< GTADTRB (Bit 0) */ + #define R_GPT0_GTADTRB_GTADTRB_Msk (0xffffffffUL) /*!< GTADTRB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTBRA ======================================================== */ + #define R_GPT0_GTADTBRA_GTADTBRA_Pos (0UL) /*!< GTADTBRA (Bit 0) */ + #define R_GPT0_GTADTBRA_GTADTBRA_Msk (0xffffffffUL) /*!< GTADTBRA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTBRB ======================================================== */ + #define R_GPT0_GTADTBRB_GTADTBRB_Pos (0UL) /*!< GTADTBRB (Bit 0) */ + #define R_GPT0_GTADTBRB_GTADTBRB_Msk (0xffffffffUL) /*!< GTADTBRB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTDBRA ======================================================= */ + #define R_GPT0_GTADTDBRA_GTADTDBRA_Pos (0UL) /*!< GTADTDBRA (Bit 0) */ + #define R_GPT0_GTADTDBRA_GTADTDBRA_Msk (0xffffffffUL) /*!< GTADTDBRA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= GTADTDBRB ======================================================= */ + #define R_GPT0_GTADTDBRB_GTADTDBRB_Pos (0UL) /*!< GTADTDBRB (Bit 0) */ + #define R_GPT0_GTADTDBRB_GTADTDBRB_Msk (0xffffffffUL) /*!< GTADTDBRB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== GTDTCR ========================================================= */ + #define R_GPT0_GTDTCR_TDFER_Pos (8UL) /*!< TDFER (Bit 8) */ + #define R_GPT0_GTDTCR_TDFER_Msk (0x100UL) /*!< TDFER (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDTCR_TDBDE_Pos (5UL) /*!< TDBDE (Bit 5) */ + #define R_GPT0_GTDTCR_TDBDE_Msk (0x20UL) /*!< TDBDE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDTCR_TDBUE_Pos (4UL) /*!< TDBUE (Bit 4) */ + #define R_GPT0_GTDTCR_TDBUE_Msk (0x10UL) /*!< TDBUE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTDTCR_TDE_Pos (0UL) /*!< TDE (Bit 0) */ + #define R_GPT0_GTDTCR_TDE_Msk (0x1UL) /*!< TDE (Bitfield-Mask: 0x01) */ +/* ========================================================= GTDVU ========================================================= */ + #define R_GPT0_GTDVU_GTDVU_Pos (0UL) /*!< GTDVU (Bit 0) */ + #define R_GPT0_GTDVU_GTDVU_Msk (0xffffffffUL) /*!< GTDVU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTDVD ========================================================= */ + #define R_GPT0_GTDVD_GTDVD_Pos (0UL) /*!< GTDVD (Bit 0) */ + #define R_GPT0_GTDVD_GTDVD_Msk (0xffffffffUL) /*!< GTDVD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTDBU ========================================================= */ + #define R_GPT0_GTDBU_GTDVU_Pos (0UL) /*!< GTDVU (Bit 0) */ + #define R_GPT0_GTDBU_GTDVU_Msk (0xffffffffUL) /*!< GTDVU (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTDBD ========================================================= */ + #define R_GPT0_GTDBD_GTDBD_Pos (0UL) /*!< GTDBD (Bit 0) */ + #define R_GPT0_GTDBD_GTDBD_Msk (0xffffffffUL) /*!< GTDBD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= GTSOS ========================================================= */ + #define R_GPT0_GTSOS_SOS_Pos (0UL) /*!< SOS (Bit 0) */ + #define R_GPT0_GTSOS_SOS_Msk (0x3UL) /*!< SOS (Bitfield-Mask: 0x03) */ +/* ======================================================== GTSOTR ========================================================= */ + #define R_GPT0_GTSOTR_SOTR_Pos (0UL) /*!< SOTR (Bit 0) */ + #define R_GPT0_GTSOTR_SOTR_Msk (0x1UL) /*!< SOTR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTADSMR ======================================================== */ + #define R_GPT0_GTADSMR_ADSMS0_Pos (0UL) /*!< ADSMS0 (Bit 0) */ + #define R_GPT0_GTADSMR_ADSMS0_Msk (0x3UL) /*!< ADSMS0 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTADSMR_ADSMEN0_Pos (8UL) /*!< ADSMEN0 (Bit 8) */ + #define R_GPT0_GTADSMR_ADSMEN0_Msk (0x100UL) /*!< ADSMEN0 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTADSMR_ADSMS1_Pos (16UL) /*!< ADSMS1 (Bit 16) */ + #define R_GPT0_GTADSMR_ADSMS1_Msk (0x30000UL) /*!< ADSMS1 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTADSMR_ADSMEN1_Pos (24UL) /*!< ADSMEN1 (Bit 24) */ + #define R_GPT0_GTADSMR_ADSMEN1_Msk (0x1000000UL) /*!< ADSMEN1 (Bitfield-Mask: 0x01) */ +/* ======================================================== GTEITC ========================================================= */ + #define R_GPT0_GTEITC_EIVTC1_Pos (0UL) /*!< EIVTC1 (Bit 0) */ + #define R_GPT0_GTEITC_EIVTC1_Msk (0x3UL) /*!< EIVTC1 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTEITC_EIVTT1_Pos (4UL) /*!< EIVTT1 (Bit 4) */ + #define R_GPT0_GTEITC_EIVTT1_Msk (0xf0UL) /*!< EIVTT1 (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EITCNT1_Pos (12UL) /*!< EITCNT1 (Bit 12) */ + #define R_GPT0_GTEITC_EITCNT1_Msk (0xf000UL) /*!< EITCNT1 (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EIVTC2_Pos (16UL) /*!< EIVTC2 (Bit 16) */ + #define R_GPT0_GTEITC_EIVTC2_Msk (0x30000UL) /*!< EIVTC2 (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTEITC_EIVTT2_Pos (20UL) /*!< EIVTT2 (Bit 20) */ + #define R_GPT0_GTEITC_EIVTT2_Msk (0xf00000UL) /*!< EIVTT2 (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EITCNT2IV_Pos (24UL) /*!< EITCNT2IV (Bit 24) */ + #define R_GPT0_GTEITC_EITCNT2IV_Msk (0xf000000UL) /*!< EITCNT2IV (Bitfield-Mask: 0x0f) */ + #define R_GPT0_GTEITC_EITCNT2_Pos (28UL) /*!< EITCNT2 (Bit 28) */ + #define R_GPT0_GTEITC_EITCNT2_Msk (0xf0000000UL) /*!< EITCNT2 (Bitfield-Mask: 0x0f) */ +/* ======================================================= GTEITLI1 ======================================================== */ + #define R_GPT0_GTEITLI1_EITLA_Pos (0UL) /*!< EITLA (Bit 0) */ + #define R_GPT0_GTEITLI1_EITLA_Msk (0x7UL) /*!< EITLA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLB_Pos (4UL) /*!< EITLB (Bit 4) */ + #define R_GPT0_GTEITLI1_EITLB_Msk (0x70UL) /*!< EITLB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLC_Pos (8UL) /*!< EITLC (Bit 8) */ + #define R_GPT0_GTEITLI1_EITLC_Msk (0x700UL) /*!< EITLC (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLD_Pos (12UL) /*!< EITLD (Bit 12) */ + #define R_GPT0_GTEITLI1_EITLD_Msk (0x7000UL) /*!< EITLD (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLE_Pos (16UL) /*!< EITLE (Bit 16) */ + #define R_GPT0_GTEITLI1_EITLE_Msk (0x70000UL) /*!< EITLE (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLF_Pos (20UL) /*!< EITLF (Bit 20) */ + #define R_GPT0_GTEITLI1_EITLF_Msk (0x700000UL) /*!< EITLF (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLV_Pos (24UL) /*!< EITLV (Bit 24) */ + #define R_GPT0_GTEITLI1_EITLV_Msk (0x7000000UL) /*!< EITLV (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI1_EITLU_Pos (28UL) /*!< EITLU (Bit 28) */ + #define R_GPT0_GTEITLI1_EITLU_Msk (0x70000000UL) /*!< EITLU (Bitfield-Mask: 0x07) */ +/* ======================================================= GTEITLI2 ======================================================== */ + #define R_GPT0_GTEITLI2_EADTAL_Pos (0UL) /*!< EADTAL (Bit 0) */ + #define R_GPT0_GTEITLI2_EADTAL_Msk (0x7UL) /*!< EADTAL (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLI2_EADTBL_Pos (4UL) /*!< EADTBL (Bit 4) */ + #define R_GPT0_GTEITLI2_EADTBL_Msk (0x70UL) /*!< EADTBL (Bitfield-Mask: 0x07) */ +/* ======================================================== GTEITLB ======================================================== */ + #define R_GPT0_GTEITLB_EBTLCA_Pos (0UL) /*!< EBTLCA (Bit 0) */ + #define R_GPT0_GTEITLB_EBTLCA_Msk (0x7UL) /*!< EBTLCA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLCB_Pos (4UL) /*!< EBTLCB (Bit 4) */ + #define R_GPT0_GTEITLB_EBTLCB_Msk (0x70UL) /*!< EBTLCB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLPR_Pos (8UL) /*!< EBTLPR (Bit 8) */ + #define R_GPT0_GTEITLB_EBTLPR_Msk (0x700UL) /*!< EBTLPR (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLADA_Pos (16UL) /*!< EBTLADA (Bit 16) */ + #define R_GPT0_GTEITLB_EBTLADA_Msk (0x70000UL) /*!< EBTLADA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLADB_Pos (20UL) /*!< EBTLADB (Bit 20) */ + #define R_GPT0_GTEITLB_EBTLADB_Msk (0x700000UL) /*!< EBTLADB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLDVU_Pos (24UL) /*!< EBTLDVU (Bit 24) */ + #define R_GPT0_GTEITLB_EBTLDVU_Msk (0x7000000UL) /*!< EBTLDVU (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTEITLB_EBTLDVD_Pos (28UL) /*!< EBTLDVD (Bit 28) */ + #define R_GPT0_GTEITLB_EBTLDVD_Msk (0x70000000UL) /*!< EBTLDVD (Bitfield-Mask: 0x07) */ +/* ======================================================== GTICLF ========================================================= */ + #define R_GPT0_GTICLF_ICLFA_Pos (0UL) /*!< ICLFA (Bit 0) */ + #define R_GPT0_GTICLF_ICLFA_Msk (0x7UL) /*!< ICLFA (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTICLF_ICLFSELC_Pos (4UL) /*!< ICLFSELC (Bit 4) */ + #define R_GPT0_GTICLF_ICLFSELC_Msk (0x3f0UL) /*!< ICLFSELC (Bitfield-Mask: 0x3f) */ + #define R_GPT0_GTICLF_ICLFB_Pos (16UL) /*!< ICLFB (Bit 16) */ + #define R_GPT0_GTICLF_ICLFB_Msk (0x70000UL) /*!< ICLFB (Bitfield-Mask: 0x07) */ + #define R_GPT0_GTICLF_ICLFSELD_Pos (20UL) /*!< ICLFSELD (Bit 20) */ + #define R_GPT0_GTICLF_ICLFSELD_Msk (0x3f00000UL) /*!< ICLFSELD (Bitfield-Mask: 0x3f) */ +/* ========================================================= GTPC ========================================================== */ + #define R_GPT0_GTPC_PCEN_Pos (0UL) /*!< PCEN (Bit 0) */ + #define R_GPT0_GTPC_PCEN_Msk (0x1UL) /*!< PCEN (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPC_ASTP_Pos (8UL) /*!< ASTP (Bit 8) */ + #define R_GPT0_GTPC_ASTP_Msk (0x100UL) /*!< ASTP (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTPC_PCNT_Pos (16UL) /*!< PCNT (Bit 16) */ + #define R_GPT0_GTPC_PCNT_Msk (0xfff0000UL) /*!< PCNT (Bitfield-Mask: 0xfff) */ +/* ======================================================== GTSECSR ======================================================== */ + #define R_GPT0_GTSECSR_SECSEL0_Pos (0UL) /*!< SECSEL0 (Bit 0) */ + #define R_GPT0_GTSECSR_SECSEL0_Msk (0x1UL) /*!< SECSEL0 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL1_Pos (1UL) /*!< SECSEL1 (Bit 1) */ + #define R_GPT0_GTSECSR_SECSEL1_Msk (0x2UL) /*!< SECSEL1 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL2_Pos (2UL) /*!< SECSEL2 (Bit 2) */ + #define R_GPT0_GTSECSR_SECSEL2_Msk (0x4UL) /*!< SECSEL2 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL3_Pos (3UL) /*!< SECSEL3 (Bit 3) */ + #define R_GPT0_GTSECSR_SECSEL3_Msk (0x8UL) /*!< SECSEL3 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL4_Pos (4UL) /*!< SECSEL4 (Bit 4) */ + #define R_GPT0_GTSECSR_SECSEL4_Msk (0x10UL) /*!< SECSEL4 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL5_Pos (5UL) /*!< SECSEL5 (Bit 5) */ + #define R_GPT0_GTSECSR_SECSEL5_Msk (0x20UL) /*!< SECSEL5 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL6_Pos (6UL) /*!< SECSEL6 (Bit 6) */ + #define R_GPT0_GTSECSR_SECSEL6_Msk (0x40UL) /*!< SECSEL6 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL7_Pos (7UL) /*!< SECSEL7 (Bit 7) */ + #define R_GPT0_GTSECSR_SECSEL7_Msk (0x80UL) /*!< SECSEL7 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL8_Pos (8UL) /*!< SECSEL8 (Bit 8) */ + #define R_GPT0_GTSECSR_SECSEL8_Msk (0x100UL) /*!< SECSEL8 (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECSR_SECSEL9_Pos (9UL) /*!< SECSEL9 (Bit 9) */ + #define R_GPT0_GTSECSR_SECSEL9_Msk (0x200UL) /*!< SECSEL9 (Bitfield-Mask: 0x01) */ +/* ======================================================== GTSECR ========================================================= */ + #define R_GPT0_GTSECR_SBDCE_Pos (0UL) /*!< SBDCE (Bit 0) */ + #define R_GPT0_GTSECR_SBDCE_Msk (0x1UL) /*!< SBDCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDPE_Pos (1UL) /*!< SBDPE (Bit 1) */ + #define R_GPT0_GTSECR_SBDPE_Msk (0x2UL) /*!< SBDPE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDAE_Pos (2UL) /*!< SBDAE (Bit 2) */ + #define R_GPT0_GTSECR_SBDAE_Msk (0x4UL) /*!< SBDAE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDDE_Pos (3UL) /*!< SBDDE (Bit 3) */ + #define R_GPT0_GTSECR_SBDDE_Msk (0x8UL) /*!< SBDDE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDCD_Pos (8UL) /*!< SBDCD (Bit 8) */ + #define R_GPT0_GTSECR_SBDCD_Msk (0x100UL) /*!< SBDCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDPD_Pos (9UL) /*!< SBDPD (Bit 9) */ + #define R_GPT0_GTSECR_SBDPD_Msk (0x200UL) /*!< SBDPD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDAD_Pos (10UL) /*!< SBDAD (Bit 10) */ + #define R_GPT0_GTSECR_SBDAD_Msk (0x400UL) /*!< SBDAD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SBDDD_Pos (11UL) /*!< SBDDD (Bit 11) */ + #define R_GPT0_GTSECR_SBDDD_Msk (0x800UL) /*!< SBDDD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SPCE_Pos (16UL) /*!< SPCE (Bit 16) */ + #define R_GPT0_GTSECR_SPCE_Msk (0x10000UL) /*!< SPCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SSCE_Pos (17UL) /*!< SSCE (Bit 17) */ + #define R_GPT0_GTSECR_SSCE_Msk (0x20000UL) /*!< SSCE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SPCD_Pos (24UL) /*!< SPCD (Bit 24) */ + #define R_GPT0_GTSECR_SPCD_Msk (0x1000000UL) /*!< SPCD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTSECR_SSCD_Pos (25UL) /*!< SSCD (Bit 25) */ + #define R_GPT0_GTSECR_SSCD_Msk (0x2000000UL) /*!< SSCD (Bitfield-Mask: 0x01) */ +/* ======================================================== GTBER2 ========================================================= */ + #define R_GPT0_GTBER2_CCTCA_Pos (0UL) /*!< CCTCA (Bit 0) */ + #define R_GPT0_GTBER2_CCTCA_Msk (0x1UL) /*!< CCTCA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTCB_Pos (1UL) /*!< CCTCB (Bit 1) */ + #define R_GPT0_GTBER2_CCTCB_Msk (0x2UL) /*!< CCTCB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTPR_Pos (2UL) /*!< CCTPR (Bit 2) */ + #define R_GPT0_GTBER2_CCTPR_Msk (0x4UL) /*!< CCTPR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTADA_Pos (3UL) /*!< CCTADA (Bit 3) */ + #define R_GPT0_GTBER2_CCTADA_Msk (0x8UL) /*!< CCTADA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTADB_Pos (4UL) /*!< CCTADB (Bit 4) */ + #define R_GPT0_GTBER2_CCTADB_Msk (0x10UL) /*!< CCTADB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CCTDV_Pos (5UL) /*!< CCTDV (Bit 5) */ + #define R_GPT0_GTBER2_CCTDV_Msk (0x20UL) /*!< CCTDV (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CMTCA_Pos (8UL) /*!< CMTCA (Bit 8) */ + #define R_GPT0_GTBER2_CMTCA_Msk (0x300UL) /*!< CMTCA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER2_CMTCB_Pos (10UL) /*!< CMTCB (Bit 10) */ + #define R_GPT0_GTBER2_CMTCB_Msk (0xc00UL) /*!< CMTCB (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER2_CMTADA_Pos (13UL) /*!< CMTADA (Bit 13) */ + #define R_GPT0_GTBER2_CMTADA_Msk (0x2000UL) /*!< CMTADA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CMTADB_Pos (14UL) /*!< CMTADB (Bit 14) */ + #define R_GPT0_GTBER2_CMTADB_Msk (0x4000UL) /*!< CMTADB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTCA_Pos (16UL) /*!< CPTCA (Bit 16) */ + #define R_GPT0_GTBER2_CPTCA_Msk (0x10000UL) /*!< CPTCA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTCB_Pos (17UL) /*!< CPTCB (Bit 17) */ + #define R_GPT0_GTBER2_CPTCB_Msk (0x20000UL) /*!< CPTCB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTPR_Pos (18UL) /*!< CPTPR (Bit 18) */ + #define R_GPT0_GTBER2_CPTPR_Msk (0x40000UL) /*!< CPTPR (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTADA_Pos (19UL) /*!< CPTADA (Bit 19) */ + #define R_GPT0_GTBER2_CPTADA_Msk (0x80000UL) /*!< CPTADA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTADB_Pos (20UL) /*!< CPTADB (Bit 20) */ + #define R_GPT0_GTBER2_CPTADB_Msk (0x100000UL) /*!< CPTADB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPTDV_Pos (21UL) /*!< CPTDV (Bit 21) */ + #define R_GPT0_GTBER2_CPTDV_Msk (0x200000UL) /*!< CPTDV (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CP3DB_Pos (24UL) /*!< CP3DB (Bit 24) */ + #define R_GPT0_GTBER2_CP3DB_Msk (0x1000000UL) /*!< CP3DB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_CPBTD_Pos (25UL) /*!< CPBTD (Bit 25) */ + #define R_GPT0_GTBER2_CPBTD_Msk (0x2000000UL) /*!< CPBTD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTBER2_OLTTA_Pos (26UL) /*!< OLTTA (Bit 26) */ + #define R_GPT0_GTBER2_OLTTA_Msk (0xc000000UL) /*!< OLTTA (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTBER2_OLTTB_Pos (28UL) /*!< OLTTB (Bit 28) */ + #define R_GPT0_GTBER2_OLTTB_Msk (0x30000000UL) /*!< OLTTB (Bitfield-Mask: 0x03) */ +/* ======================================================== GTOLBR ========================================================= */ + #define R_GPT0_GTOLBR_GTIOAB_Pos (0UL) /*!< GTIOAB (Bit 0) */ + #define R_GPT0_GTOLBR_GTIOAB_Msk (0x1fUL) /*!< GTIOAB (Bitfield-Mask: 0x1f) */ + #define R_GPT0_GTOLBR_GTIOBB_Pos (16UL) /*!< GTIOBB (Bit 16) */ + #define R_GPT0_GTOLBR_GTIOBB_Msk (0x1f0000UL) /*!< GTIOBB (Bitfield-Mask: 0x1f) */ +/* ======================================================== GTICCR ========================================================= */ + #define R_GPT0_GTICCR_ICAFA_Pos (0UL) /*!< ICAFA (Bit 0) */ + #define R_GPT0_GTICCR_ICAFA_Msk (0x1UL) /*!< ICAFA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFB_Pos (1UL) /*!< ICAFB (Bit 1) */ + #define R_GPT0_GTICCR_ICAFB_Msk (0x2UL) /*!< ICAFB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFC_Pos (2UL) /*!< ICAFC (Bit 2) */ + #define R_GPT0_GTICCR_ICAFC_Msk (0x4UL) /*!< ICAFC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFD_Pos (3UL) /*!< ICAFD (Bit 3) */ + #define R_GPT0_GTICCR_ICAFD_Msk (0x8UL) /*!< ICAFD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFE_Pos (4UL) /*!< ICAFE (Bit 4) */ + #define R_GPT0_GTICCR_ICAFE_Msk (0x10UL) /*!< ICAFE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFF_Pos (5UL) /*!< ICAFF (Bit 5) */ + #define R_GPT0_GTICCR_ICAFF_Msk (0x20UL) /*!< ICAFF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFPO_Pos (6UL) /*!< ICAFPO (Bit 6) */ + #define R_GPT0_GTICCR_ICAFPO_Msk (0x40UL) /*!< ICAFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAFPU_Pos (7UL) /*!< ICAFPU (Bit 7) */ + #define R_GPT0_GTICCR_ICAFPU_Msk (0x80UL) /*!< ICAFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICACLK_Pos (8UL) /*!< ICACLK (Bit 8) */ + #define R_GPT0_GTICCR_ICACLK_Msk (0x100UL) /*!< ICACLK (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICAGRP_Pos (14UL) /*!< ICAGRP (Bit 14) */ + #define R_GPT0_GTICCR_ICAGRP_Msk (0xc000UL) /*!< ICAGRP (Bitfield-Mask: 0x03) */ + #define R_GPT0_GTICCR_ICBFA_Pos (16UL) /*!< ICBFA (Bit 16) */ + #define R_GPT0_GTICCR_ICBFA_Msk (0x10000UL) /*!< ICBFA (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFB_Pos (17UL) /*!< ICBFB (Bit 17) */ + #define R_GPT0_GTICCR_ICBFB_Msk (0x20000UL) /*!< ICBFB (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFC_Pos (18UL) /*!< ICBFC (Bit 18) */ + #define R_GPT0_GTICCR_ICBFC_Msk (0x40000UL) /*!< ICBFC (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFD_Pos (19UL) /*!< ICBFD (Bit 19) */ + #define R_GPT0_GTICCR_ICBFD_Msk (0x80000UL) /*!< ICBFD (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFE_Pos (20UL) /*!< ICBFE (Bit 20) */ + #define R_GPT0_GTICCR_ICBFE_Msk (0x100000UL) /*!< ICBFE (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFF_Pos (21UL) /*!< ICBFF (Bit 21) */ + #define R_GPT0_GTICCR_ICBFF_Msk (0x200000UL) /*!< ICBFF (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFPO_Pos (22UL) /*!< ICBFPO (Bit 22) */ + #define R_GPT0_GTICCR_ICBFPO_Msk (0x400000UL) /*!< ICBFPO (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBFPU_Pos (23UL) /*!< ICBFPU (Bit 23) */ + #define R_GPT0_GTICCR_ICBFPU_Msk (0x800000UL) /*!< ICBFPU (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBCLK_Pos (24UL) /*!< ICBCLK (Bit 24) */ + #define R_GPT0_GTICCR_ICBCLK_Msk (0x1000000UL) /*!< ICBCLK (Bitfield-Mask: 0x01) */ + #define R_GPT0_GTICCR_ICBGRP_Pos (30UL) /*!< ICBGRP (Bit 30) */ + #define R_GPT0_GTICCR_ICBGRP_Msk (0xc0000000UL) /*!< ICBGRP (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_OPS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= OPSCR ========================================================= */ + #define R_GPT_OPS_OPSCR_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_GPT_OPS_OPSCR_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + #define R_GPT_OPS_OPSCR_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_GPT_OPS_OPSCR_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_GODF_Pos (26UL) /*!< GODF (Bit 26) */ + #define R_GPT_OPS_OPSCR_GODF_Msk (0x4000000UL) /*!< GODF (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_GRP_Pos (24UL) /*!< GRP (Bit 24) */ + #define R_GPT_OPS_OPSCR_GRP_Msk (0x3000000UL) /*!< GRP (Bitfield-Mask: 0x03) */ + #define R_GPT_OPS_OPSCR_ALIGN_Pos (21UL) /*!< ALIGN (Bit 21) */ + #define R_GPT_OPS_OPSCR_ALIGN_Msk (0x200000UL) /*!< ALIGN (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_RV_Pos (20UL) /*!< RV (Bit 20) */ + #define R_GPT_OPS_OPSCR_RV_Msk (0x100000UL) /*!< RV (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_INV_Pos (19UL) /*!< INV (Bit 19) */ + #define R_GPT_OPS_OPSCR_INV_Msk (0x80000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_N_Pos (18UL) /*!< N (Bit 18) */ + #define R_GPT_OPS_OPSCR_N_Msk (0x40000UL) /*!< N (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_P_Pos (17UL) /*!< P (Bit 17) */ + #define R_GPT_OPS_OPSCR_P_Msk (0x20000UL) /*!< P (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_FB_Pos (16UL) /*!< FB (Bit 16) */ + #define R_GPT_OPS_OPSCR_FB_Msk (0x10000UL) /*!< FB (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_EN_Pos (8UL) /*!< EN (Bit 8) */ + #define R_GPT_OPS_OPSCR_EN_Msk (0x100UL) /*!< EN (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_W_Pos (6UL) /*!< W (Bit 6) */ + #define R_GPT_OPS_OPSCR_W_Msk (0x40UL) /*!< W (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_V_Pos (5UL) /*!< V (Bit 5) */ + #define R_GPT_OPS_OPSCR_V_Msk (0x20UL) /*!< V (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_U_Pos (4UL) /*!< U (Bit 4) */ + #define R_GPT_OPS_OPSCR_U_Msk (0x10UL) /*!< U (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_WF_Pos (2UL) /*!< WF (Bit 2) */ + #define R_GPT_OPS_OPSCR_WF_Msk (0x4UL) /*!< WF (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_VF_Pos (1UL) /*!< VF (Bit 1) */ + #define R_GPT_OPS_OPSCR_VF_Msk (0x2UL) /*!< VF (Bitfield-Mask: 0x01) */ + #define R_GPT_OPS_OPSCR_UF_Pos (0UL) /*!< UF (Bit 0) */ + #define R_GPT_OPS_OPSCR_UF_Msk (0x1UL) /*!< UF (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GPT_POEG0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= POEGG ========================================================= */ + #define R_GPT_POEG0_POEGG_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_GPT_POEG0_POEGG_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + #define R_GPT_POEG0_POEGG_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_GPT_POEG0_POEGG_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_GPT_POEG0_POEGG_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_DERRE_Pos (26UL) /*!< DERRE (Bit 26) */ + #define R_GPT_POEG0_POEGG_DERRE_Msk (0x4000000UL) /*!< DERRE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_DERRST_Pos (24UL) /*!< DERRST (Bit 24) */ + #define R_GPT_POEG0_POEGG_DERRST_Msk (0x1000000UL) /*!< DERRST (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_GPT_POEG0_POEGG_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_CDRE_Pos (8UL) /*!< CDRE (Bit 8) */ + #define R_GPT_POEG0_POEGG_CDRE_Msk (0x100UL) /*!< CDRE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_GPT_POEG0_POEGG_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_GPT_POEG0_POEGG_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_GPT_POEG0_POEGG_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_GPT_POEG0_POEGG_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_GPT_POEG0_POEGG_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_GPT_POEG0_POEGG_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_POEGG_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_GPT_POEG0_POEGG_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ +/* ======================================================== GTONCWP ======================================================== */ + #define R_GPT_POEG0_GTONCWP_WP_Pos (0UL) /*!< WP (Bit 0) */ + #define R_GPT_POEG0_GTONCWP_WP_Msk (0x1UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_GTONCWP_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_GPT_POEG0_GTONCWP_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ======================================================== GTONCCR ======================================================== */ + #define R_GPT_POEG0_GTONCCR_NE_Pos (0UL) /*!< NE (Bit 0) */ + #define R_GPT_POEG0_GTONCCR_NE_Msk (0x1UL) /*!< NE (Bitfield-Mask: 0x01) */ + #define R_GPT_POEG0_GTONCCR_NFS_Pos (4UL) /*!< NFS (Bit 4) */ + #define R_GPT_POEG0_GTONCCR_NFS_Msk (0xf0UL) /*!< NFS (Bitfield-Mask: 0x0f) */ + #define R_GPT_POEG0_GTONCCR_NFV_Pos (8UL) /*!< NFV (Bit 8) */ + #define R_GPT_POEG0_GTONCCR_NFV_Msk (0x100UL) /*!< NFV (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ICU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= IRQCR ========================================================= */ + #define R_ICU_IRQCR_FLTEN_Pos (7UL) /*!< FLTEN (Bit 7) */ + #define R_ICU_IRQCR_FLTEN_Msk (0x80UL) /*!< FLTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IRQCR_FCLKSEL_Pos (4UL) /*!< FCLKSEL (Bit 4) */ + #define R_ICU_IRQCR_FCLKSEL_Msk (0x30UL) /*!< FCLKSEL (Bitfield-Mask: 0x03) */ + #define R_ICU_IRQCR_IRQMD_Pos (0UL) /*!< IRQMD (Bit 0) */ + #define R_ICU_IRQCR_IRQMD_Msk (0x3UL) /*!< IRQMD (Bitfield-Mask: 0x03) */ +/* ========================================================= NMICR ========================================================= */ + #define R_ICU_NMICR_NMIMD_Pos (0UL) /*!< NMIMD (Bit 0) */ + #define R_ICU_NMICR_NMIMD_Msk (0x1UL) /*!< NMIMD (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICR_NFCLKSEL_Pos (4UL) /*!< NFCLKSEL (Bit 4) */ + #define R_ICU_NMICR_NFCLKSEL_Msk (0x30UL) /*!< NFCLKSEL (Bitfield-Mask: 0x03) */ + #define R_ICU_NMICR_NFLTEN_Pos (7UL) /*!< NFLTEN (Bit 7) */ + #define R_ICU_NMICR_NFLTEN_Msk (0x80UL) /*!< NFLTEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SWIRQ_S ======================================================== */ + #define R_ICU_SWIRQ_S_SWIRQS_Pos (0UL) /*!< SWIRQS (Bit 0) */ + #define R_ICU_SWIRQ_S_SWIRQS_Msk (0x1UL) /*!< SWIRQS (Bitfield-Mask: 0x01) */ +/* ======================================================= SWIRQ_NS ======================================================== */ + #define R_ICU_SWIRQ_NS_SWIRQNS_Pos (0UL) /*!< SWIRQNS (Bit 0) */ + #define R_ICU_SWIRQ_NS_SWIRQNS_Msk (0x1UL) /*!< SWIRQNS (Bitfield-Mask: 0x01) */ +/* ======================================================== IENMIER ======================================================== */ + #define R_ICU_IENMIER_CMEN_Pos (0UL) /*!< CMEN (Bit 0) */ + #define R_ICU_IENMIER_CMEN_Msk (0x1UL) /*!< CMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IENMIER_LMEN_Pos (1UL) /*!< LMEN (Bit 1) */ + #define R_ICU_IENMIER_LMEN_Msk (0x2UL) /*!< LMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_IENMIER_BUSEN_Pos (2UL) /*!< BUSEN (Bit 2) */ + #define R_ICU_IENMIER_BUSEN_Msk (0x4UL) /*!< BUSEN (Bitfield-Mask: 0x01) */ +/* ========================================================= NMIER ========================================================= */ + #define R_ICU_NMIER_IWDTEN_Pos (0UL) /*!< IWDTEN (Bit 0) */ + #define R_ICU_NMIER_IWDTEN_Msk (0x1UL) /*!< IWDTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_WDTEN_Pos (1UL) /*!< WDTEN (Bit 1) */ + #define R_ICU_NMIER_WDTEN_Msk (0x2UL) /*!< WDTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_LVD1EN_Pos (2UL) /*!< LVD1EN (Bit 2) */ + #define R_ICU_NMIER_LVD1EN_Msk (0x4UL) /*!< LVD1EN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_LVD2EN_Pos (3UL) /*!< LVD2EN (Bit 3) */ + #define R_ICU_NMIER_LVD2EN_Msk (0x8UL) /*!< LVD2EN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_OSTEN_Pos (6UL) /*!< OSTEN (Bit 6) */ + #define R_ICU_NMIER_OSTEN_Msk (0x40UL) /*!< OSTEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_NMIEN_Pos (7UL) /*!< NMIEN (Bit 7) */ + #define R_ICU_NMIER_NMIEN_Msk (0x80UL) /*!< NMIEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_BUSEN_Pos (12UL) /*!< BUSEN (Bit 12) */ + #define R_ICU_NMIER_BUSEN_Msk (0x1000UL) /*!< BUSEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_CMEN_Pos (13UL) /*!< CMEN (Bit 13) */ + #define R_ICU_NMIER_CMEN_Msk (0x2000UL) /*!< CMEN (Bitfield-Mask: 0x01) */ + #define R_ICU_NMIER_LUEN_Pos (15UL) /*!< LUEN (Bit 15) */ + #define R_ICU_NMIER_LUEN_Msk (0x8000UL) /*!< LUEN (Bitfield-Mask: 0x01) */ +/* ======================================================== NMICLR ========================================================= */ + #define R_ICU_NMICLR_IWDTCLR_Pos (0UL) /*!< IWDTCLR (Bit 0) */ + #define R_ICU_NMICLR_IWDTCLR_Msk (0x1UL) /*!< IWDTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_WDTCLR_Pos (1UL) /*!< WDTCLR (Bit 1) */ + #define R_ICU_NMICLR_WDTCLR_Msk (0x2UL) /*!< WDTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_LVD1CLR_Pos (2UL) /*!< LVD1CLR (Bit 2) */ + #define R_ICU_NMICLR_LVD1CLR_Msk (0x4UL) /*!< LVD1CLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_LVD2CLR_Pos (3UL) /*!< LVD2CLR (Bit 3) */ + #define R_ICU_NMICLR_LVD2CLR_Msk (0x8UL) /*!< LVD2CLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_OSTCLR_Pos (6UL) /*!< OSTCLR (Bit 6) */ + #define R_ICU_NMICLR_OSTCLR_Msk (0x40UL) /*!< OSTCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_NMICLR_Pos (7UL) /*!< NMICLR (Bit 7) */ + #define R_ICU_NMICLR_NMICLR_Msk (0x80UL) /*!< NMICLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_BUSCLR_Pos (12UL) /*!< BUSCLR (Bit 12) */ + #define R_ICU_NMICLR_BUSCLR_Msk (0x1000UL) /*!< BUSCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_CMCLR_Pos (13UL) /*!< CMCLR (Bit 13) */ + #define R_ICU_NMICLR_CMCLR_Msk (0x2000UL) /*!< CMCLR (Bitfield-Mask: 0x01) */ + #define R_ICU_NMICLR_LUCLR_Pos (15UL) /*!< LUCLR (Bit 15) */ + #define R_ICU_NMICLR_LUCLR_Msk (0x8000UL) /*!< LUCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= NMISR ========================================================= */ + #define R_ICU_NMISR_IWDTST_Pos (0UL) /*!< IWDTST (Bit 0) */ + #define R_ICU_NMISR_IWDTST_Msk (0x1UL) /*!< IWDTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_WDTST_Pos (1UL) /*!< WDTST (Bit 1) */ + #define R_ICU_NMISR_WDTST_Msk (0x2UL) /*!< WDTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_LVD1ST_Pos (2UL) /*!< LVD1ST (Bit 2) */ + #define R_ICU_NMISR_LVD1ST_Msk (0x4UL) /*!< LVD1ST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_LVD2ST_Pos (3UL) /*!< LVD2ST (Bit 3) */ + #define R_ICU_NMISR_LVD2ST_Msk (0x8UL) /*!< LVD2ST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_OSTST_Pos (6UL) /*!< OSTST (Bit 6) */ + #define R_ICU_NMISR_OSTST_Msk (0x40UL) /*!< OSTST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_NMIST_Pos (7UL) /*!< NMIST (Bit 7) */ + #define R_ICU_NMISR_NMIST_Msk (0x80UL) /*!< NMIST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_BUSST_Pos (12UL) /*!< BUSST (Bit 12) */ + #define R_ICU_NMISR_BUSST_Msk (0x1000UL) /*!< BUSST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_CMST_Pos (13UL) /*!< CMST (Bit 13) */ + #define R_ICU_NMISR_CMST_Msk (0x2000UL) /*!< CMST (Bitfield-Mask: 0x01) */ + #define R_ICU_NMISR_LUST_Pos (15UL) /*!< LUST (Bit 15) */ + #define R_ICU_NMISR_LUST_Msk (0x8000UL) /*!< LUST (Bitfield-Mask: 0x01) */ +/* ========================================================= WUPEN ========================================================= */ + #define R_ICU_WUPEN_IRQWUPEN0_Pos (0UL) /*!< IRQWUPEN0 (Bit 0) */ + #define R_ICU_WUPEN_IRQWUPEN0_Msk (0x1UL) /*!< IRQWUPEN0 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN1_Pos (1UL) /*!< IRQWUPEN1 (Bit 1) */ + #define R_ICU_WUPEN_IRQWUPEN1_Msk (0x2UL) /*!< IRQWUPEN1 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN2_Pos (2UL) /*!< IRQWUPEN2 (Bit 2) */ + #define R_ICU_WUPEN_IRQWUPEN2_Msk (0x4UL) /*!< IRQWUPEN2 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN3_Pos (3UL) /*!< IRQWUPEN3 (Bit 3) */ + #define R_ICU_WUPEN_IRQWUPEN3_Msk (0x8UL) /*!< IRQWUPEN3 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN4_Pos (4UL) /*!< IRQWUPEN4 (Bit 4) */ + #define R_ICU_WUPEN_IRQWUPEN4_Msk (0x10UL) /*!< IRQWUPEN4 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN5_Pos (5UL) /*!< IRQWUPEN5 (Bit 5) */ + #define R_ICU_WUPEN_IRQWUPEN5_Msk (0x20UL) /*!< IRQWUPEN5 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN6_Pos (6UL) /*!< IRQWUPEN6 (Bit 6) */ + #define R_ICU_WUPEN_IRQWUPEN6_Msk (0x40UL) /*!< IRQWUPEN6 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN7_Pos (7UL) /*!< IRQWUPEN7 (Bit 7) */ + #define R_ICU_WUPEN_IRQWUPEN7_Msk (0x80UL) /*!< IRQWUPEN7 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN8_Pos (8UL) /*!< IRQWUPEN8 (Bit 8) */ + #define R_ICU_WUPEN_IRQWUPEN8_Msk (0x100UL) /*!< IRQWUPEN8 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN9_Pos (9UL) /*!< IRQWUPEN9 (Bit 9) */ + #define R_ICU_WUPEN_IRQWUPEN9_Msk (0x200UL) /*!< IRQWUPEN9 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN10_Pos (10UL) /*!< IRQWUPEN10 (Bit 10) */ + #define R_ICU_WUPEN_IRQWUPEN10_Msk (0x400UL) /*!< IRQWUPEN10 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN11_Pos (11UL) /*!< IRQWUPEN11 (Bit 11) */ + #define R_ICU_WUPEN_IRQWUPEN11_Msk (0x800UL) /*!< IRQWUPEN11 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN12_Pos (12UL) /*!< IRQWUPEN12 (Bit 12) */ + #define R_ICU_WUPEN_IRQWUPEN12_Msk (0x1000UL) /*!< IRQWUPEN12 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN13_Pos (13UL) /*!< IRQWUPEN13 (Bit 13) */ + #define R_ICU_WUPEN_IRQWUPEN13_Msk (0x2000UL) /*!< IRQWUPEN13 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN14_Pos (14UL) /*!< IRQWUPEN14 (Bit 14) */ + #define R_ICU_WUPEN_IRQWUPEN14_Msk (0x4000UL) /*!< IRQWUPEN14 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IRQWUPEN15_Pos (15UL) /*!< IRQWUPEN15 (Bit 15) */ + #define R_ICU_WUPEN_IRQWUPEN15_Msk (0x8000UL) /*!< IRQWUPEN15 (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_IWDTWUPEN_Pos (16UL) /*!< IWDTWUPEN (Bit 16) */ + #define R_ICU_WUPEN_IWDTWUPEN_Msk (0x10000UL) /*!< IWDTWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_LVD1WUPEN_Pos (18UL) /*!< LVD1WUPEN (Bit 18) */ + #define R_ICU_WUPEN_LVD1WUPEN_Msk (0x40000UL) /*!< LVD1WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_LVD2WUPEN_Pos (19UL) /*!< LVD2WUPEN (Bit 19) */ + #define R_ICU_WUPEN_LVD2WUPEN_Msk (0x80000UL) /*!< LVD2WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_VBATTWUPEN_Pos (20UL) /*!< VBATTWUPEN (Bit 20) */ + #define R_ICU_WUPEN_VBATTWUPEN_Msk (0x100000UL) /*!< VBATTWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_RTCALMWUPEN_Pos (24UL) /*!< RTCALMWUPEN (Bit 24) */ + #define R_ICU_WUPEN_RTCALMWUPEN_Msk (0x1000000UL) /*!< RTCALMWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_RTCPRDWUPEN_Pos (25UL) /*!< RTCPRDWUPEN (Bit 25) */ + #define R_ICU_WUPEN_RTCPRDWUPEN_Msk (0x2000000UL) /*!< RTCPRDWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_USBHSWUPEN_Pos (26UL) /*!< USBHSWUPEN (Bit 26) */ + #define R_ICU_WUPEN_USBHSWUPEN_Msk (0x4000000UL) /*!< USBHSWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_USBFSWUPEN_Pos (27UL) /*!< USBFSWUPEN (Bit 27) */ + #define R_ICU_WUPEN_USBFSWUPEN_Msk (0x8000000UL) /*!< USBFSWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_AGT1UDWUPEN_Pos (28UL) /*!< AGT1UDWUPEN (Bit 28) */ + #define R_ICU_WUPEN_AGT1UDWUPEN_Msk (0x10000000UL) /*!< AGT1UDWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_AGT1CAWUPEN_Pos (29UL) /*!< AGT1CAWUPEN (Bit 29) */ + #define R_ICU_WUPEN_AGT1CAWUPEN_Msk (0x20000000UL) /*!< AGT1CAWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_AGT1CBWUPEN_Pos (30UL) /*!< AGT1CBWUPEN (Bit 30) */ + #define R_ICU_WUPEN_AGT1CBWUPEN_Msk (0x40000000UL) /*!< AGT1CBWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN_RIIC0WUPEN_Pos (31UL) /*!< RIIC0WUPEN (Bit 31) */ + #define R_ICU_WUPEN_RIIC0WUPEN_Msk (0x80000000UL) /*!< RIIC0WUPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== WUPEN1 ========================================================= */ + #define R_ICU_WUPEN1_COMPHS0WUPEN_Pos (3UL) /*!< COMPHS0WUPEN (Bit 3) */ + #define R_ICU_WUPEN1_COMPHS0WUPEN_Msk (0x8UL) /*!< COMPHS0WUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP0UWUPEN_Pos (8UL) /*!< ULP0UWUPEN (Bit 8) */ + #define R_ICU_WUPEN1_ULP0UWUPEN_Msk (0x100UL) /*!< ULP0UWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP0AWUPEN_Pos (9UL) /*!< ULP0AWUPEN (Bit 9) */ + #define R_ICU_WUPEN1_ULP0AWUPEN_Msk (0x200UL) /*!< ULP0AWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP0BWUPEN_Pos (10UL) /*!< ULP0BWUPEN (Bit 10) */ + #define R_ICU_WUPEN1_ULP0BWUPEN_Msk (0x400UL) /*!< ULP0BWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_I3CWUPEN_Pos (11UL) /*!< I3CWUPEN (Bit 11) */ + #define R_ICU_WUPEN1_I3CWUPEN_Msk (0x800UL) /*!< I3CWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP1UWUPEN_Pos (12UL) /*!< ULP1UWUPEN (Bit 12) */ + #define R_ICU_WUPEN1_ULP1UWUPEN_Msk (0x1000UL) /*!< ULP1UWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP1AWUPEN_Pos (13UL) /*!< ULP1AWUPEN (Bit 13) */ + #define R_ICU_WUPEN1_ULP1AWUPEN_Msk (0x2000UL) /*!< ULP1AWUPEN (Bitfield-Mask: 0x01) */ + #define R_ICU_WUPEN1_ULP1BWUPEN_Pos (14UL) /*!< ULP1BWUPEN (Bit 14) */ + #define R_ICU_WUPEN1_ULP1BWUPEN_Msk (0x4000UL) /*!< ULP1BWUPEN (Bitfield-Mask: 0x01) */ +/* ========================================================= IELSR ========================================================= */ + #define R_ICU_IELSR_DTCE_Pos (24UL) /*!< DTCE (Bit 24) */ + #define R_ICU_IELSR_DTCE_Msk (0x1000000UL) /*!< DTCE (Bitfield-Mask: 0x01) */ + #define R_ICU_IELSR_IR_Pos (16UL) /*!< IR (Bit 16) */ + #define R_ICU_IELSR_IR_Msk (0x10000UL) /*!< IR (Bitfield-Mask: 0x01) */ + #define R_ICU_IELSR_IELS_Pos (0UL) /*!< IELS (Bit 0) */ + #define R_ICU_IELSR_IELS_Msk (0x1ffUL) /*!< IELS (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ICCR1 ========================================================= */ + #define R_IIC0_ICCR1_ICE_Pos (7UL) /*!< ICE (Bit 7) */ + #define R_IIC0_ICCR1_ICE_Msk (0x80UL) /*!< ICE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_IICRST_Pos (6UL) /*!< IICRST (Bit 6) */ + #define R_IIC0_ICCR1_IICRST_Msk (0x40UL) /*!< IICRST (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_CLO_Pos (5UL) /*!< CLO (Bit 5) */ + #define R_IIC0_ICCR1_CLO_Msk (0x20UL) /*!< CLO (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SOWP_Pos (4UL) /*!< SOWP (Bit 4) */ + #define R_IIC0_ICCR1_SOWP_Msk (0x10UL) /*!< SOWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SCLO_Pos (3UL) /*!< SCLO (Bit 3) */ + #define R_IIC0_ICCR1_SCLO_Msk (0x8UL) /*!< SCLO (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SDAO_Pos (2UL) /*!< SDAO (Bit 2) */ + #define R_IIC0_ICCR1_SDAO_Msk (0x4UL) /*!< SDAO (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SCLI_Pos (1UL) /*!< SCLI (Bit 1) */ + #define R_IIC0_ICCR1_SCLI_Msk (0x2UL) /*!< SCLI (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_SDAI_Pos (0UL) /*!< SDAI (Bit 0) */ + #define R_IIC0_ICCR1_SDAI_Msk (0x1UL) /*!< SDAI (Bitfield-Mask: 0x01) */ +/* ========================================================= ICCR2 ========================================================= */ + #define R_IIC0_ICCR2_BBSY_Pos (7UL) /*!< BBSY (Bit 7) */ + #define R_IIC0_ICCR2_BBSY_Msk (0x80UL) /*!< BBSY (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_MST_Pos (6UL) /*!< MST (Bit 6) */ + #define R_IIC0_ICCR2_MST_Msk (0x40UL) /*!< MST (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_TRS_Pos (5UL) /*!< TRS (Bit 5) */ + #define R_IIC0_ICCR2_TRS_Msk (0x20UL) /*!< TRS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_SP_Pos (3UL) /*!< SP (Bit 3) */ + #define R_IIC0_ICCR2_SP_Msk (0x8UL) /*!< SP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_RS_Pos (2UL) /*!< RS (Bit 2) */ + #define R_IIC0_ICCR2_RS_Msk (0x4UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_ST_Pos (1UL) /*!< ST (Bit 1) */ + #define R_IIC0_ICCR2_ST_Msk (0x2UL) /*!< ST (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR1 ========================================================= */ + #define R_IIC0_ICMR1_MTWP_Pos (7UL) /*!< MTWP (Bit 7) */ + #define R_IIC0_ICMR1_MTWP_Msk (0x80UL) /*!< MTWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR1_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_IIC0_ICMR1_CKS_Msk (0x70UL) /*!< CKS (Bitfield-Mask: 0x07) */ + #define R_IIC0_ICMR1_BCWP_Pos (3UL) /*!< BCWP (Bit 3) */ + #define R_IIC0_ICMR1_BCWP_Msk (0x8UL) /*!< BCWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR1_BC_Pos (0UL) /*!< BC (Bit 0) */ + #define R_IIC0_ICMR1_BC_Msk (0x7UL) /*!< BC (Bitfield-Mask: 0x07) */ +/* ========================================================= ICMR2 ========================================================= */ + #define R_IIC0_ICMR2_DLCS_Pos (7UL) /*!< DLCS (Bit 7) */ + #define R_IIC0_ICMR2_DLCS_Msk (0x80UL) /*!< DLCS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR2_SDDL_Pos (4UL) /*!< SDDL (Bit 4) */ + #define R_IIC0_ICMR2_SDDL_Msk (0x70UL) /*!< SDDL (Bitfield-Mask: 0x07) */ + #define R_IIC0_ICMR2_TMOH_Pos (2UL) /*!< TMOH (Bit 2) */ + #define R_IIC0_ICMR2_TMOH_Msk (0x4UL) /*!< TMOH (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR2_TMOL_Pos (1UL) /*!< TMOL (Bit 1) */ + #define R_IIC0_ICMR2_TMOL_Msk (0x2UL) /*!< TMOL (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR2_TMOS_Pos (0UL) /*!< TMOS (Bit 0) */ + #define R_IIC0_ICMR2_TMOS_Msk (0x1UL) /*!< TMOS (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR3 ========================================================= */ + #define R_IIC0_ICMR3_SMBS_Pos (7UL) /*!< SMBS (Bit 7) */ + #define R_IIC0_ICMR3_SMBS_Msk (0x80UL) /*!< SMBS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_WAIT_Pos (6UL) /*!< WAIT (Bit 6) */ + #define R_IIC0_ICMR3_WAIT_Msk (0x40UL) /*!< WAIT (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_RDRFS_Pos (5UL) /*!< RDRFS (Bit 5) */ + #define R_IIC0_ICMR3_RDRFS_Msk (0x20UL) /*!< RDRFS (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_ACKWP_Pos (4UL) /*!< ACKWP (Bit 4) */ + #define R_IIC0_ICMR3_ACKWP_Msk (0x10UL) /*!< ACKWP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_ACKBT_Pos (3UL) /*!< ACKBT (Bit 3) */ + #define R_IIC0_ICMR3_ACKBT_Msk (0x8UL) /*!< ACKBT (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_ACKBR_Pos (2UL) /*!< ACKBR (Bit 2) */ + #define R_IIC0_ICMR3_ACKBR_Msk (0x4UL) /*!< ACKBR (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICMR3_NF_Pos (0UL) /*!< NF (Bit 0) */ + #define R_IIC0_ICMR3_NF_Msk (0x3UL) /*!< NF (Bitfield-Mask: 0x03) */ +/* ========================================================= ICFER ========================================================= */ + #define R_IIC0_ICFER_FMPE_Pos (7UL) /*!< FMPE (Bit 7) */ + #define R_IIC0_ICFER_FMPE_Msk (0x80UL) /*!< FMPE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_SCLE_Pos (6UL) /*!< SCLE (Bit 6) */ + #define R_IIC0_ICFER_SCLE_Msk (0x40UL) /*!< SCLE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_NFE_Pos (5UL) /*!< NFE (Bit 5) */ + #define R_IIC0_ICFER_NFE_Msk (0x20UL) /*!< NFE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_NACKE_Pos (4UL) /*!< NACKE (Bit 4) */ + #define R_IIC0_ICFER_NACKE_Msk (0x10UL) /*!< NACKE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_SALE_Pos (3UL) /*!< SALE (Bit 3) */ + #define R_IIC0_ICFER_SALE_Msk (0x8UL) /*!< SALE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_NALE_Pos (2UL) /*!< NALE (Bit 2) */ + #define R_IIC0_ICFER_NALE_Msk (0x4UL) /*!< NALE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_MALE_Pos (1UL) /*!< MALE (Bit 1) */ + #define R_IIC0_ICFER_MALE_Msk (0x2UL) /*!< MALE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICFER_TMOE_Pos (0UL) /*!< TMOE (Bit 0) */ + #define R_IIC0_ICFER_TMOE_Msk (0x1UL) /*!< TMOE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSER ========================================================= */ + #define R_IIC0_ICSER_HOAE_Pos (7UL) /*!< HOAE (Bit 7) */ + #define R_IIC0_ICSER_HOAE_Msk (0x80UL) /*!< HOAE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_DIDE_Pos (5UL) /*!< DIDE (Bit 5) */ + #define R_IIC0_ICSER_DIDE_Msk (0x20UL) /*!< DIDE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_GCAE_Pos (3UL) /*!< GCAE (Bit 3) */ + #define R_IIC0_ICSER_GCAE_Msk (0x8UL) /*!< GCAE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_SAR2E_Pos (2UL) /*!< SAR2E (Bit 2) */ + #define R_IIC0_ICSER_SAR2E_Msk (0x4UL) /*!< SAR2E (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_SAR1E_Pos (1UL) /*!< SAR1E (Bit 1) */ + #define R_IIC0_ICSER_SAR1E_Msk (0x2UL) /*!< SAR1E (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_SAR0E_Pos (0UL) /*!< SAR0E (Bit 0) */ + #define R_IIC0_ICSER_SAR0E_Msk (0x1UL) /*!< SAR0E (Bitfield-Mask: 0x01) */ +/* ========================================================= ICIER ========================================================= */ + #define R_IIC0_ICIER_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_IIC0_ICIER_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_TEIE_Pos (6UL) /*!< TEIE (Bit 6) */ + #define R_IIC0_ICIER_TEIE_Msk (0x40UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_RIE_Pos (5UL) /*!< RIE (Bit 5) */ + #define R_IIC0_ICIER_RIE_Msk (0x20UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_NAKIE_Pos (4UL) /*!< NAKIE (Bit 4) */ + #define R_IIC0_ICIER_NAKIE_Msk (0x10UL) /*!< NAKIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_SPIE_Pos (3UL) /*!< SPIE (Bit 3) */ + #define R_IIC0_ICIER_SPIE_Msk (0x8UL) /*!< SPIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_STIE_Pos (2UL) /*!< STIE (Bit 2) */ + #define R_IIC0_ICIER_STIE_Msk (0x4UL) /*!< STIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_ALIE_Pos (1UL) /*!< ALIE (Bit 1) */ + #define R_IIC0_ICIER_ALIE_Msk (0x2UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_TMOIE_Pos (0UL) /*!< TMOIE (Bit 0) */ + #define R_IIC0_ICIER_TMOIE_Msk (0x1UL) /*!< TMOIE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR1 ========================================================= */ + #define R_IIC0_ICSR1_HOA_Pos (7UL) /*!< HOA (Bit 7) */ + #define R_IIC0_ICSR1_HOA_Msk (0x80UL) /*!< HOA (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_DID_Pos (5UL) /*!< DID (Bit 5) */ + #define R_IIC0_ICSR1_DID_Msk (0x20UL) /*!< DID (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_GCA_Pos (3UL) /*!< GCA (Bit 3) */ + #define R_IIC0_ICSR1_GCA_Msk (0x8UL) /*!< GCA (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_AAS2_Pos (2UL) /*!< AAS2 (Bit 2) */ + #define R_IIC0_ICSR1_AAS2_Msk (0x4UL) /*!< AAS2 (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_AAS1_Pos (1UL) /*!< AAS1 (Bit 1) */ + #define R_IIC0_ICSR1_AAS1_Msk (0x2UL) /*!< AAS1 (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_AAS0_Pos (0UL) /*!< AAS0 (Bit 0) */ + #define R_IIC0_ICSR1_AAS0_Msk (0x1UL) /*!< AAS0 (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR2 ========================================================= */ + #define R_IIC0_ICSR2_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_IIC0_ICSR2_TDRE_Msk (0x80UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_TEND_Pos (6UL) /*!< TEND (Bit 6) */ + #define R_IIC0_ICSR2_TEND_Msk (0x40UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_RDRF_Pos (5UL) /*!< RDRF (Bit 5) */ + #define R_IIC0_ICSR2_RDRF_Msk (0x20UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_NACKF_Pos (4UL) /*!< NACKF (Bit 4) */ + #define R_IIC0_ICSR2_NACKF_Msk (0x10UL) /*!< NACKF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_STOP_Pos (3UL) /*!< STOP (Bit 3) */ + #define R_IIC0_ICSR2_STOP_Msk (0x8UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_START_Pos (2UL) /*!< START (Bit 2) */ + #define R_IIC0_ICSR2_START_Msk (0x4UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_AL_Pos (1UL) /*!< AL (Bit 1) */ + #define R_IIC0_ICSR2_AL_Msk (0x2UL) /*!< AL (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_TMOF_Pos (0UL) /*!< TMOF (Bit 0) */ + #define R_IIC0_ICSR2_TMOF_Msk (0x1UL) /*!< TMOF (Bitfield-Mask: 0x01) */ +/* ========================================================= ICBRL ========================================================= */ + #define R_IIC0_ICBRL_BRL_Pos (0UL) /*!< BRL (Bit 0) */ + #define R_IIC0_ICBRL_BRL_Msk (0x1fUL) /*!< BRL (Bitfield-Mask: 0x1f) */ +/* ========================================================= ICBRH ========================================================= */ + #define R_IIC0_ICBRH_BRH_Pos (0UL) /*!< BRH (Bit 0) */ + #define R_IIC0_ICBRH_BRH_Msk (0x1fUL) /*!< BRH (Bitfield-Mask: 0x1f) */ +/* ========================================================= ICDRT ========================================================= */ + #define R_IIC0_ICDRT_ICDRT_Pos (0UL) /*!< ICDRT (Bit 0) */ + #define R_IIC0_ICDRT_ICDRT_Msk (0xffUL) /*!< ICDRT (Bitfield-Mask: 0xff) */ +/* ========================================================= ICDRR ========================================================= */ + #define R_IIC0_ICDRR_ICDRR_Pos (0UL) /*!< ICDRR (Bit 0) */ + #define R_IIC0_ICDRR_ICDRR_Msk (0xffUL) /*!< ICDRR (Bitfield-Mask: 0xff) */ +/* ========================================================= ICWUR ========================================================= */ + #define R_IIC0_ICWUR_WUE_Pos (7UL) /*!< WUE (Bit 7) */ + #define R_IIC0_ICWUR_WUE_Msk (0x80UL) /*!< WUE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUIE_Pos (6UL) /*!< WUIE (Bit 6) */ + #define R_IIC0_ICWUR_WUIE_Msk (0x40UL) /*!< WUIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUF_Pos (5UL) /*!< WUF (Bit 5) */ + #define R_IIC0_ICWUR_WUF_Msk (0x20UL) /*!< WUF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUACK_Pos (4UL) /*!< WUACK (Bit 4) */ + #define R_IIC0_ICWUR_WUACK_Msk (0x10UL) /*!< WUACK (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR_WUAFA_Pos (0UL) /*!< WUAFA (Bit 0) */ + #define R_IIC0_ICWUR_WUAFA_Msk (0x1UL) /*!< WUAFA (Bitfield-Mask: 0x01) */ +/* ======================================================== ICWUR2 ========================================================= */ + #define R_IIC0_ICWUR2_WUSYF_Pos (2UL) /*!< WUSYF (Bit 2) */ + #define R_IIC0_ICWUR2_WUSYF_Msk (0x4UL) /*!< WUSYF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR2_WUASYF_Pos (1UL) /*!< WUASYF (Bit 1) */ + #define R_IIC0_ICWUR2_WUASYF_Msk (0x2UL) /*!< WUASYF (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICWUR2_WUSEN_Pos (0UL) /*!< WUSEN (Bit 0) */ + #define R_IIC0_ICWUR2_WUSEN_Msk (0x1UL) /*!< WUSEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_IWDT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== IWDTRR ========================================================= */ + #define R_IWDT_IWDTRR_IWDTRR_Pos (0UL) /*!< IWDTRR (Bit 0) */ + #define R_IWDT_IWDTRR_IWDTRR_Msk (0xffUL) /*!< IWDTRR (Bitfield-Mask: 0xff) */ +/* ======================================================== IWDTCR ========================================================= */ + #define R_IWDT_IWDTCR_RPSS_Pos (12UL) /*!< RPSS (Bit 12) */ + #define R_IWDT_IWDTCR_RPSS_Msk (0x3000UL) /*!< RPSS (Bitfield-Mask: 0x03) */ + #define R_IWDT_IWDTCR_RPES_Pos (8UL) /*!< RPES (Bit 8) */ + #define R_IWDT_IWDTCR_RPES_Msk (0x300UL) /*!< RPES (Bitfield-Mask: 0x03) */ + #define R_IWDT_IWDTCR_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_IWDT_IWDTCR_CKS_Msk (0xf0UL) /*!< CKS (Bitfield-Mask: 0x0f) */ + #define R_IWDT_IWDTCR_TOPS_Pos (0UL) /*!< TOPS (Bit 0) */ + #define R_IWDT_IWDTCR_TOPS_Msk (0x3UL) /*!< TOPS (Bitfield-Mask: 0x03) */ +/* ======================================================== IWDTSR ========================================================= */ + #define R_IWDT_IWDTSR_REFEF_Pos (15UL) /*!< REFEF (Bit 15) */ + #define R_IWDT_IWDTSR_REFEF_Msk (0x8000UL) /*!< REFEF (Bitfield-Mask: 0x01) */ + #define R_IWDT_IWDTSR_UNDFF_Pos (14UL) /*!< UNDFF (Bit 14) */ + #define R_IWDT_IWDTSR_UNDFF_Msk (0x4000UL) /*!< UNDFF (Bitfield-Mask: 0x01) */ + #define R_IWDT_IWDTSR_CNTVAL_Pos (0UL) /*!< CNTVAL (Bit 0) */ + #define R_IWDT_IWDTSR_CNTVAL_Msk (0x3fffUL) /*!< CNTVAL (Bitfield-Mask: 0x3fff) */ +/* ======================================================== IWDTRCR ======================================================== */ + #define R_IWDT_IWDTRCR_RSTIRQS_Pos (7UL) /*!< RSTIRQS (Bit 7) */ + #define R_IWDT_IWDTRCR_RSTIRQS_Msk (0x80UL) /*!< RSTIRQS (Bitfield-Mask: 0x01) */ +/* ======================================================= IWDTCSTPR ======================================================= */ + #define R_IWDT_IWDTCSTPR_SLCSTP_Pos (7UL) /*!< SLCSTP (Bit 7) */ + #define R_IWDT_IWDTCSTPR_SLCSTP_Msk (0x80UL) /*!< SLCSTP (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_I3C0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PRTS ========================================================== */ + #define R_I3C0_PRTS_PRTMD_Pos (0UL) /*!< PRTMD (Bit 0) */ + #define R_I3C0_PRTS_PRTMD_Msk (0x1UL) /*!< PRTMD (Bitfield-Mask: 0x01) */ +/* ========================================================= CECTL ========================================================= */ + #define R_I3C0_CECTL_CLKE_Pos (0UL) /*!< CLKE (Bit 0) */ + #define R_I3C0_CECTL_CLKE_Msk (0x1UL) /*!< CLKE (Bitfield-Mask: 0x01) */ +/* ========================================================= BCTL ========================================================== */ + #define R_I3C0_BCTL_INCBA_Pos (0UL) /*!< INCBA (Bit 0) */ + #define R_I3C0_BCTL_INCBA_Msk (0x1UL) /*!< INCBA (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_BMDS_Pos (7UL) /*!< BMDS (Bit 7) */ + #define R_I3C0_BCTL_BMDS_Msk (0x80UL) /*!< BMDS (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_HJACKCTL_Pos (8UL) /*!< HJACKCTL (Bit 8) */ + #define R_I3C0_BCTL_HJACKCTL_Msk (0x100UL) /*!< HJACKCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_ABT_Pos (29UL) /*!< ABT (Bit 29) */ + #define R_I3C0_BCTL_ABT_Msk (0x20000000UL) /*!< ABT (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_RSM_Pos (30UL) /*!< RSM (Bit 30) */ + #define R_I3C0_BCTL_RSM_Msk (0x40000000UL) /*!< RSM (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCTL_BUSE_Pos (31UL) /*!< BUSE (Bit 31) */ + #define R_I3C0_BCTL_BUSE_Msk (0x80000000UL) /*!< BUSE (Bitfield-Mask: 0x01) */ +/* ======================================================== MSDVAD ========================================================= */ + #define R_I3C0_MSDVAD_MDYAD_Pos (16UL) /*!< MDYAD (Bit 16) */ + #define R_I3C0_MSDVAD_MDYAD_Msk (0x7f0000UL) /*!< MDYAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_MSDVAD_MDYADV_Pos (31UL) /*!< MDYADV (Bit 31) */ + #define R_I3C0_MSDVAD_MDYADV_Msk (0x80000000UL) /*!< MDYADV (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTCTL ========================================================= */ + #define R_I3C0_RSTCTL_RI3CRST_Pos (0UL) /*!< RI3CRST (Bit 0) */ + #define R_I3C0_RSTCTL_RI3CRST_Msk (0x1UL) /*!< RI3CRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_CMDQRST_Pos (1UL) /*!< CMDQRST (Bit 1) */ + #define R_I3C0_RSTCTL_CMDQRST_Msk (0x2UL) /*!< CMDQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_RSPQRST_Pos (2UL) /*!< RSPQRST (Bit 2) */ + #define R_I3C0_RSTCTL_RSPQRST_Msk (0x4UL) /*!< RSPQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_TDBRST_Pos (3UL) /*!< TDBRST (Bit 3) */ + #define R_I3C0_RSTCTL_TDBRST_Msk (0x8UL) /*!< TDBRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_RDBRST_Pos (4UL) /*!< RDBRST (Bit 4) */ + #define R_I3C0_RSTCTL_RDBRST_Msk (0x10UL) /*!< RDBRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_IBIQRST_Pos (5UL) /*!< IBIQRST (Bit 5) */ + #define R_I3C0_RSTCTL_IBIQRST_Msk (0x20UL) /*!< IBIQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_RSQRST_Pos (6UL) /*!< RSQRST (Bit 6) */ + #define R_I3C0_RSTCTL_RSQRST_Msk (0x40UL) /*!< RSQRST (Bitfield-Mask: 0x01) */ + #define R_I3C0_RSTCTL_INTLRST_Pos (16UL) /*!< INTLRST (Bit 16) */ + #define R_I3C0_RSTCTL_INTLRST_Msk (0x10000UL) /*!< INTLRST (Bitfield-Mask: 0x01) */ +/* ========================================================= PRSST ========================================================= */ + #define R_I3C0_PRSST_CRMS_Pos (2UL) /*!< CRMS (Bit 2) */ + #define R_I3C0_PRSST_CRMS_Msk (0x4UL) /*!< CRMS (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSST_TRMD_Pos (4UL) /*!< TRMD (Bit 4) */ + #define R_I3C0_PRSST_TRMD_Msk (0x10UL) /*!< TRMD (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSST_PRSSTWP_Pos (7UL) /*!< PRSSTWP (Bit 7) */ + #define R_I3C0_PRSST_PRSSTWP_Msk (0x80UL) /*!< PRSSTWP (Bitfield-Mask: 0x01) */ +/* ========================================================= INST ========================================================== */ + #define R_I3C0_INST_INEF_Pos (10UL) /*!< INEF (Bit 10) */ + #define R_I3C0_INST_INEF_Msk (0x400UL) /*!< INEF (Bitfield-Mask: 0x01) */ +/* ========================================================= INSTE ========================================================= */ + #define R_I3C0_INSTE_INEE_Pos (10UL) /*!< INEE (Bit 10) */ + #define R_I3C0_INSTE_INEE_Msk (0x400UL) /*!< INEE (Bitfield-Mask: 0x01) */ +/* ========================================================= INIE ========================================================== */ + #define R_I3C0_INIE_INEIE_Pos (10UL) /*!< INEIE (Bit 10) */ + #define R_I3C0_INIE_INEIE_Msk (0x400UL) /*!< INEIE (Bitfield-Mask: 0x01) */ +/* ======================================================== INSTFC ========================================================= */ + #define R_I3C0_INSTFC_INEFC_Pos (10UL) /*!< INEFC (Bit 10) */ + #define R_I3C0_INSTFC_INEFC_Msk (0x400UL) /*!< INEFC (Bitfield-Mask: 0x01) */ +/* ========================================================= DVCT ========================================================== */ + #define R_I3C0_DVCT_IDX_Pos (19UL) /*!< IDX (Bit 19) */ + #define R_I3C0_DVCT_IDX_Msk (0xf80000UL) /*!< IDX (Bitfield-Mask: 0x1f) */ +/* ======================================================== IBINCTL ======================================================== */ + #define R_I3C0_IBINCTL_NRHJCTL_Pos (0UL) /*!< NRHJCTL (Bit 0) */ + #define R_I3C0_IBINCTL_NRHJCTL_Msk (0x1UL) /*!< NRHJCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_IBINCTL_NRMRCTL_Pos (1UL) /*!< NRMRCTL (Bit 1) */ + #define R_I3C0_IBINCTL_NRMRCTL_Msk (0x2UL) /*!< NRMRCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_IBINCTL_NRSIRCTL_Pos (3UL) /*!< NRSIRCTL (Bit 3) */ + #define R_I3C0_IBINCTL_NRSIRCTL_Msk (0x8UL) /*!< NRSIRCTL (Bitfield-Mask: 0x01) */ +/* ========================================================= BFCTL ========================================================= */ + #define R_I3C0_BFCTL_MALE_Pos (0UL) /*!< MALE (Bit 0) */ + #define R_I3C0_BFCTL_MALE_Msk (0x1UL) /*!< MALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_NALE_Pos (1UL) /*!< NALE (Bit 1) */ + #define R_I3C0_BFCTL_NALE_Msk (0x2UL) /*!< NALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_SALE_Pos (2UL) /*!< SALE (Bit 2) */ + #define R_I3C0_BFCTL_SALE_Msk (0x4UL) /*!< SALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_SCSYNE_Pos (8UL) /*!< SCSYNE (Bit 8) */ + #define R_I3C0_BFCTL_SCSYNE_Msk (0x100UL) /*!< SCSYNE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_SMBS_Pos (12UL) /*!< SMBS (Bit 12) */ + #define R_I3C0_BFCTL_SMBS_Msk (0x1000UL) /*!< SMBS (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_FMPE_Pos (14UL) /*!< FMPE (Bit 14) */ + #define R_I3C0_BFCTL_FMPE_Msk (0x4000UL) /*!< FMPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BFCTL_HSME_Pos (15UL) /*!< HSME (Bit 15) */ + #define R_I3C0_BFCTL_HSME_Msk (0x8000UL) /*!< HSME (Bitfield-Mask: 0x01) */ +/* ========================================================= SVCTL ========================================================= */ + #define R_I3C0_SVCTL_GCAE_Pos (0UL) /*!< GCAE (Bit 0) */ + #define R_I3C0_SVCTL_GCAE_Msk (0x1UL) /*!< GCAE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_HSMCE_Pos (5UL) /*!< HSMCE (Bit 5) */ + #define R_I3C0_SVCTL_HSMCE_Msk (0x20UL) /*!< HSMCE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_DVIDE_Pos (6UL) /*!< DVIDE (Bit 6) */ + #define R_I3C0_SVCTL_DVIDE_Msk (0x40UL) /*!< DVIDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_HOAE_Pos (15UL) /*!< HOAE (Bit 15) */ + #define R_I3C0_SVCTL_HOAE_Msk (0x8000UL) /*!< HOAE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVCTL_SVAEn_Pos (16UL) /*!< SVAEn (Bit 16) */ + #define R_I3C0_SVCTL_SVAEn_Msk (0x10000UL) /*!< SVAEn (Bitfield-Mask: 0x01) */ +/* ======================================================= REFCKCTL ======================================================== */ + #define R_I3C0_REFCKCTL_IREFCKS_Pos (0UL) /*!< IREFCKS (Bit 0) */ + #define R_I3C0_REFCKCTL_IREFCKS_Msk (0x7UL) /*!< IREFCKS (Bitfield-Mask: 0x07) */ +/* ========================================================= STDBR ========================================================= */ + #define R_I3C0_STDBR_SBRLO_Pos (0UL) /*!< SBRLO (Bit 0) */ + #define R_I3C0_STDBR_SBRLO_Msk (0xffUL) /*!< SBRLO (Bitfield-Mask: 0xff) */ + #define R_I3C0_STDBR_SBRHO_Pos (8UL) /*!< SBRHO (Bit 8) */ + #define R_I3C0_STDBR_SBRHO_Msk (0xff00UL) /*!< SBRHO (Bitfield-Mask: 0xff) */ + #define R_I3C0_STDBR_SBRLP_Pos (16UL) /*!< SBRLP (Bit 16) */ + #define R_I3C0_STDBR_SBRLP_Msk (0x3f0000UL) /*!< SBRLP (Bitfield-Mask: 0x3f) */ + #define R_I3C0_STDBR_SBRHP_Pos (24UL) /*!< SBRHP (Bit 24) */ + #define R_I3C0_STDBR_SBRHP_Msk (0x3f000000UL) /*!< SBRHP (Bitfield-Mask: 0x3f) */ + #define R_I3C0_STDBR_DSBRPO_Pos (31UL) /*!< DSBRPO (Bit 31) */ + #define R_I3C0_STDBR_DSBRPO_Msk (0x80000000UL) /*!< DSBRPO (Bitfield-Mask: 0x01) */ +/* ========================================================= EXTBR ========================================================= */ + #define R_I3C0_EXTBR_EBRLO_Pos (0UL) /*!< EBRLO (Bit 0) */ + #define R_I3C0_EXTBR_EBRLO_Msk (0xffUL) /*!< EBRLO (Bitfield-Mask: 0xff) */ + #define R_I3C0_EXTBR_EBRHO_Pos (8UL) /*!< EBRHO (Bit 8) */ + #define R_I3C0_EXTBR_EBRHO_Msk (0xff00UL) /*!< EBRHO (Bitfield-Mask: 0xff) */ + #define R_I3C0_EXTBR_EBRLP_Pos (16UL) /*!< EBRLP (Bit 16) */ + #define R_I3C0_EXTBR_EBRLP_Msk (0x3f0000UL) /*!< EBRLP (Bitfield-Mask: 0x3f) */ + #define R_I3C0_EXTBR_EBRHP_Pos (24UL) /*!< EBRHP (Bit 24) */ + #define R_I3C0_EXTBR_EBRHP_Msk (0x3f000000UL) /*!< EBRHP (Bitfield-Mask: 0x3f) */ +/* ======================================================== BFRECDT ======================================================== */ + #define R_I3C0_BFRECDT_FRECYC_Pos (0UL) /*!< FRECYC (Bit 0) */ + #define R_I3C0_BFRECDT_FRECYC_Msk (0x1ffUL) /*!< FRECYC (Bitfield-Mask: 0x1ff) */ +/* ======================================================== BAVLCDT ======================================================== */ + #define R_I3C0_BAVLCDT_AVLCYC_Pos (0UL) /*!< AVLCYC (Bit 0) */ + #define R_I3C0_BAVLCDT_AVLCYC_Msk (0x1ffUL) /*!< AVLCYC (Bitfield-Mask: 0x1ff) */ +/* ======================================================== BIDLCDT ======================================================== */ + #define R_I3C0_BIDLCDT_IDLCYC_Pos (0UL) /*!< IDLCYC (Bit 0) */ + #define R_I3C0_BIDLCDT_IDLCYC_Msk (0x3ffffUL) /*!< IDLCYC (Bitfield-Mask: 0x3ffff) */ +/* ======================================================== OUTCTL ========================================================= */ + #define R_I3C0_OUTCTL_SDOC_Pos (0UL) /*!< SDOC (Bit 0) */ + #define R_I3C0_OUTCTL_SDOC_Msk (0x1UL) /*!< SDOC (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_SCOC_Pos (1UL) /*!< SCOC (Bit 1) */ + #define R_I3C0_OUTCTL_SCOC_Msk (0x2UL) /*!< SCOC (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_SOCWP_Pos (2UL) /*!< SOCWP (Bit 2) */ + #define R_I3C0_OUTCTL_SOCWP_Msk (0x4UL) /*!< SOCWP (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_EXCYC_Pos (4UL) /*!< EXCYC (Bit 4) */ + #define R_I3C0_OUTCTL_EXCYC_Msk (0x10UL) /*!< EXCYC (Bitfield-Mask: 0x01) */ + #define R_I3C0_OUTCTL_SDOD_Pos (8UL) /*!< SDOD (Bit 8) */ + #define R_I3C0_OUTCTL_SDOD_Msk (0x700UL) /*!< SDOD (Bitfield-Mask: 0x07) */ + #define R_I3C0_OUTCTL_SDODCS_Pos (15UL) /*!< SDODCS (Bit 15) */ + #define R_I3C0_OUTCTL_SDODCS_Msk (0x8000UL) /*!< SDODCS (Bitfield-Mask: 0x01) */ +/* ========================================================= INCTL ========================================================= */ + #define R_I3C0_INCTL_DNFS_Pos (0UL) /*!< DNFS (Bit 0) */ + #define R_I3C0_INCTL_DNFS_Msk (0xfUL) /*!< DNFS (Bitfield-Mask: 0x0f) */ + #define R_I3C0_INCTL_DNFE_Pos (4UL) /*!< DNFE (Bit 4) */ + #define R_I3C0_INCTL_DNFE_Msk (0x10UL) /*!< DNFE (Bitfield-Mask: 0x01) */ +/* ======================================================== TMOCTL ========================================================= */ + #define R_I3C0_TMOCTL_TODTS_Pos (0UL) /*!< TODTS (Bit 0) */ + #define R_I3C0_TMOCTL_TODTS_Msk (0x3UL) /*!< TODTS (Bitfield-Mask: 0x03) */ + #define R_I3C0_TMOCTL_TOLCTL_Pos (4UL) /*!< TOLCTL (Bit 4) */ + #define R_I3C0_TMOCTL_TOLCTL_Msk (0x10UL) /*!< TOLCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_TMOCTL_TOHCTL_Pos (5UL) /*!< TOHCTL (Bit 5) */ + #define R_I3C0_TMOCTL_TOHCTL_Msk (0x20UL) /*!< TOHCTL (Bitfield-Mask: 0x01) */ + #define R_I3C0_TMOCTL_TOMDS_Pos (6UL) /*!< TOMDS (Bit 6) */ + #define R_I3C0_TMOCTL_TOMDS_Msk (0xc0UL) /*!< TOMDS (Bitfield-Mask: 0x03) */ +/* ========================================================= WUCTL ========================================================= */ + #define R_I3C0_WUCTL_WUACKS_Pos (0UL) /*!< WUACKS (Bit 0) */ + #define R_I3C0_WUCTL_WUACKS_Msk (0x1UL) /*!< WUACKS (Bitfield-Mask: 0x01) */ + #define R_I3C0_WUCTL_WUANFS_Pos (4UL) /*!< WUANFS (Bit 4) */ + #define R_I3C0_WUCTL_WUANFS_Msk (0x10UL) /*!< WUANFS (Bitfield-Mask: 0x01) */ + #define R_I3C0_WUCTL_WUFSYNE_Pos (6UL) /*!< WUFSYNE (Bit 6) */ + #define R_I3C0_WUCTL_WUFSYNE_Msk (0x40UL) /*!< WUFSYNE (Bitfield-Mask: 0x01) */ + #define R_I3C0_WUCTL_WUFE_Pos (7UL) /*!< WUFE (Bit 7) */ + #define R_I3C0_WUCTL_WUFE_Msk (0x80UL) /*!< WUFE (Bitfield-Mask: 0x01) */ +/* ======================================================== ACKCTL ========================================================= */ + #define R_I3C0_ACKCTL_ACKR_Pos (0UL) /*!< ACKR (Bit 0) */ + #define R_I3C0_ACKCTL_ACKR_Msk (0x1UL) /*!< ACKR (Bitfield-Mask: 0x01) */ + #define R_I3C0_ACKCTL_ACKT_Pos (1UL) /*!< ACKT (Bit 1) */ + #define R_I3C0_ACKCTL_ACKT_Msk (0x2UL) /*!< ACKT (Bitfield-Mask: 0x01) */ + #define R_I3C0_ACKCTL_ACKTWP_Pos (2UL) /*!< ACKTWP (Bit 2) */ + #define R_I3C0_ACKCTL_ACKTWP_Msk (0x4UL) /*!< ACKTWP (Bitfield-Mask: 0x01) */ +/* ======================================================= SCSTRCTL ======================================================== */ + #define R_I3C0_SCSTRCTL_ACKTWE_Pos (0UL) /*!< ACKTWE (Bit 0) */ + #define R_I3C0_SCSTRCTL_ACKTWE_Msk (0x1UL) /*!< ACKTWE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTRCTL_RWE_Pos (1UL) /*!< RWE (Bit 1) */ + #define R_I3C0_SCSTRCTL_RWE_Msk (0x2UL) /*!< RWE (Bitfield-Mask: 0x01) */ +/* ======================================================= SCSTLCTL ======================================================== */ + #define R_I3C0_SCSTLCTL_STLCYC_Pos (0UL) /*!< STLCYC (Bit 0) */ + #define R_I3C0_SCSTLCTL_STLCYC_Msk (0xffffUL) /*!< STLCYC (Bitfield-Mask: 0xffff) */ + #define R_I3C0_SCSTLCTL_AAPE_Pos (28UL) /*!< AAPE (Bit 28) */ + #define R_I3C0_SCSTLCTL_AAPE_Msk (0x10000000UL) /*!< AAPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTLCTL_TRAPE_Pos (29UL) /*!< TRAPE (Bit 29) */ + #define R_I3C0_SCSTLCTL_TRAPE_Msk (0x20000000UL) /*!< TRAPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTLCTL_PARPE_Pos (30UL) /*!< PARPE (Bit 30) */ + #define R_I3C0_SCSTLCTL_PARPE_Msk (0x40000000UL) /*!< PARPE (Bitfield-Mask: 0x01) */ + #define R_I3C0_SCSTLCTL_ACKPE_Pos (31UL) /*!< ACKPE (Bit 31) */ + #define R_I3C0_SCSTLCTL_ACKPE_Msk (0x80000000UL) /*!< ACKPE (Bitfield-Mask: 0x01) */ +/* ======================================================== SVTDLG0 ======================================================== */ + #define R_I3C0_SVTDLG0_STDLG_Pos (16UL) /*!< STDLG (Bit 16) */ + #define R_I3C0_SVTDLG0_STDLG_Msk (0xffff0000UL) /*!< STDLG (Bitfield-Mask: 0xffff) */ +/* ======================================================== CNDCTL ========================================================= */ + #define R_I3C0_CNDCTL_STCND_Pos (0UL) /*!< STCND (Bit 0) */ + #define R_I3C0_CNDCTL_STCND_Msk (0x1UL) /*!< STCND (Bitfield-Mask: 0x01) */ + #define R_I3C0_CNDCTL_SRCND_Pos (1UL) /*!< SRCND (Bit 1) */ + #define R_I3C0_CNDCTL_SRCND_Msk (0x2UL) /*!< SRCND (Bitfield-Mask: 0x01) */ + #define R_I3C0_CNDCTL_SPCND_Pos (2UL) /*!< SPCND (Bit 2) */ + #define R_I3C0_CNDCTL_SPCND_Msk (0x4UL) /*!< SPCND (Bitfield-Mask: 0x01) */ +/* ======================================================== NCMDQP ========================================================= */ +/* ======================================================== NRSPQP ========================================================= */ +/* ======================================================== NTDTBP0 ======================================================== */ +/* ======================================================== NIBIQP ========================================================= */ +/* ========================================================= NRSQP ========================================================= */ +/* ======================================================== NQTHCTL ======================================================== */ + #define R_I3C0_NQTHCTL_CMDQTH_Pos (0UL) /*!< CMDQTH (Bit 0) */ + #define R_I3C0_NQTHCTL_CMDQTH_Msk (0xffUL) /*!< CMDQTH (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQTHCTL_RSPQTH_Pos (8UL) /*!< RSPQTH (Bit 8) */ + #define R_I3C0_NQTHCTL_RSPQTH_Msk (0xff00UL) /*!< RSPQTH (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQTHCTL_IBIDSSZ_Pos (16UL) /*!< IBIDSSZ (Bit 16) */ + #define R_I3C0_NQTHCTL_IBIDSSZ_Msk (0xff0000UL) /*!< IBIDSSZ (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQTHCTL_IBIQTH_Pos (24UL) /*!< IBIQTH (Bit 24) */ + #define R_I3C0_NQTHCTL_IBIQTH_Msk (0xff000000UL) /*!< IBIQTH (Bitfield-Mask: 0xff) */ +/* ======================================================= NTBTHCTL0 ======================================================= */ + #define R_I3C0_NTBTHCTL0_TXDBTH_Pos (0UL) /*!< TXDBTH (Bit 0) */ + #define R_I3C0_NTBTHCTL0_TXDBTH_Msk (0x7UL) /*!< TXDBTH (Bitfield-Mask: 0x07) */ + #define R_I3C0_NTBTHCTL0_RXDBTH_Pos (8UL) /*!< RXDBTH (Bit 8) */ + #define R_I3C0_NTBTHCTL0_RXDBTH_Msk (0x700UL) /*!< RXDBTH (Bitfield-Mask: 0x07) */ + #define R_I3C0_NTBTHCTL0_TXSTTH_Pos (16UL) /*!< TXSTTH (Bit 16) */ + #define R_I3C0_NTBTHCTL0_TXSTTH_Msk (0x70000UL) /*!< TXSTTH (Bitfield-Mask: 0x07) */ + #define R_I3C0_NTBTHCTL0_RXSTTH_Pos (24UL) /*!< RXSTTH (Bit 24) */ + #define R_I3C0_NTBTHCTL0_RXSTTH_Msk (0x7000000UL) /*!< RXSTTH (Bitfield-Mask: 0x07) */ +/* ======================================================= NRQTHCTL ======================================================== */ + #define R_I3C0_NRQTHCTL_RSQTH_Pos (0UL) /*!< RSQTH (Bit 0) */ + #define R_I3C0_NRQTHCTL_RSQTH_Msk (0xffUL) /*!< RSQTH (Bitfield-Mask: 0xff) */ +/* ========================================================== BST ========================================================== */ + #define R_I3C0_BST_STCNDDF_Pos (0UL) /*!< STCNDDF (Bit 0) */ + #define R_I3C0_BST_STCNDDF_Msk (0x1UL) /*!< STCNDDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_SPCNDDF_Pos (1UL) /*!< SPCNDDF (Bit 1) */ + #define R_I3C0_BST_SPCNDDF_Msk (0x2UL) /*!< SPCNDDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_HDREXDF_Pos (2UL) /*!< HDREXDF (Bit 2) */ + #define R_I3C0_BST_HDREXDF_Msk (0x4UL) /*!< HDREXDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_NACKDF_Pos (4UL) /*!< NACKDF (Bit 4) */ + #define R_I3C0_BST_NACKDF_Msk (0x10UL) /*!< NACKDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_TENDF_Pos (8UL) /*!< TENDF (Bit 8) */ + #define R_I3C0_BST_TENDF_Msk (0x100UL) /*!< TENDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_ALF_Pos (16UL) /*!< ALF (Bit 16) */ + #define R_I3C0_BST_ALF_Msk (0x10000UL) /*!< ALF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BST_TODF_Pos (20UL) /*!< TODF (Bit 20) */ + #define R_I3C0_BST_TODF_Msk (0x100000UL) /*!< TODF (Bitfield-Mask: 0x01) */ +/* ========================================================= BSTE ========================================================== */ + #define R_I3C0_BSTE_STCNDDE_Pos (0UL) /*!< STCNDDE (Bit 0) */ + #define R_I3C0_BSTE_STCNDDE_Msk (0x1UL) /*!< STCNDDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_SPCNDDE_Pos (1UL) /*!< SPCNDDE (Bit 1) */ + #define R_I3C0_BSTE_SPCNDDE_Msk (0x2UL) /*!< SPCNDDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_HDREXDE_Pos (2UL) /*!< HDREXDE (Bit 2) */ + #define R_I3C0_BSTE_HDREXDE_Msk (0x4UL) /*!< HDREXDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_NACKDE_Pos (4UL) /*!< NACKDE (Bit 4) */ + #define R_I3C0_BSTE_NACKDE_Msk (0x10UL) /*!< NACKDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_TENDE_Pos (8UL) /*!< TENDE (Bit 8) */ + #define R_I3C0_BSTE_TENDE_Msk (0x100UL) /*!< TENDE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_ALE_Pos (16UL) /*!< ALE (Bit 16) */ + #define R_I3C0_BSTE_ALE_Msk (0x10000UL) /*!< ALE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTE_TODE_Pos (20UL) /*!< TODE (Bit 20) */ + #define R_I3C0_BSTE_TODE_Msk (0x100000UL) /*!< TODE (Bitfield-Mask: 0x01) */ +/* ========================================================== BIE ========================================================== */ + #define R_I3C0_BIE_STCNDDIE_Pos (0UL) /*!< STCNDDIE (Bit 0) */ + #define R_I3C0_BIE_STCNDDIE_Msk (0x1UL) /*!< STCNDDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_SPCNDDIE_Pos (1UL) /*!< SPCNDDIE (Bit 1) */ + #define R_I3C0_BIE_SPCNDDIE_Msk (0x2UL) /*!< SPCNDDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_HDREXDIE_Pos (2UL) /*!< HDREXDIE (Bit 2) */ + #define R_I3C0_BIE_HDREXDIE_Msk (0x4UL) /*!< HDREXDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_NACKDIE_Pos (4UL) /*!< NACKDIE (Bit 4) */ + #define R_I3C0_BIE_NACKDIE_Msk (0x10UL) /*!< NACKDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_TENDIE_Pos (8UL) /*!< TENDIE (Bit 8) */ + #define R_I3C0_BIE_TENDIE_Msk (0x100UL) /*!< TENDIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_ALIE_Pos (16UL) /*!< ALIE (Bit 16) */ + #define R_I3C0_BIE_ALIE_Msk (0x10000UL) /*!< ALIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_BIE_TODIE_Pos (20UL) /*!< TODIE (Bit 20) */ + #define R_I3C0_BIE_TODIE_Msk (0x100000UL) /*!< TODIE (Bitfield-Mask: 0x01) */ +/* ========================================================= BSTFC ========================================================= */ + #define R_I3C0_BSTFC_STCNDDFC_Pos (0UL) /*!< STCNDDFC (Bit 0) */ + #define R_I3C0_BSTFC_STCNDDFC_Msk (0x1UL) /*!< STCNDDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_SPCNDDFC_Pos (1UL) /*!< SPCNDDFC (Bit 1) */ + #define R_I3C0_BSTFC_SPCNDDFC_Msk (0x2UL) /*!< SPCNDDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_HDREXDFC_Pos (2UL) /*!< HDREXDFC (Bit 2) */ + #define R_I3C0_BSTFC_HDREXDFC_Msk (0x4UL) /*!< HDREXDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_NACKDFC_Pos (4UL) /*!< NACKDFC (Bit 4) */ + #define R_I3C0_BSTFC_NACKDFC_Msk (0x10UL) /*!< NACKDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_TENDFC_Pos (8UL) /*!< TENDFC (Bit 8) */ + #define R_I3C0_BSTFC_TENDFC_Msk (0x100UL) /*!< TENDFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_ALFC_Pos (16UL) /*!< ALFC (Bit 16) */ + #define R_I3C0_BSTFC_ALFC_Msk (0x10000UL) /*!< ALFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_BSTFC_TODFC_Pos (20UL) /*!< TODFC (Bit 20) */ + #define R_I3C0_BSTFC_TODFC_Msk (0x100000UL) /*!< TODFC (Bitfield-Mask: 0x01) */ +/* ========================================================= NTST ========================================================== */ + #define R_I3C0_NTST_TDBEF0_Pos (0UL) /*!< TDBEF0 (Bit 0) */ + #define R_I3C0_NTST_TDBEF0_Msk (0x1UL) /*!< TDBEF0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_RDBFF0_Pos (1UL) /*!< RDBFF0 (Bit 1) */ + #define R_I3C0_NTST_RDBFF0_Msk (0x2UL) /*!< RDBFF0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_IBIQEFF_Pos (2UL) /*!< IBIQEFF (Bit 2) */ + #define R_I3C0_NTST_IBIQEFF_Msk (0x4UL) /*!< IBIQEFF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_CMDQEF_Pos (3UL) /*!< CMDQEF (Bit 3) */ + #define R_I3C0_NTST_CMDQEF_Msk (0x8UL) /*!< CMDQEF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_RSPQFF_Pos (4UL) /*!< RSPQFF (Bit 4) */ + #define R_I3C0_NTST_RSPQFF_Msk (0x10UL) /*!< RSPQFF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_TABTF_Pos (5UL) /*!< TABTF (Bit 5) */ + #define R_I3C0_NTST_TABTF_Msk (0x20UL) /*!< TABTF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_TEF_Pos (9UL) /*!< TEF (Bit 9) */ + #define R_I3C0_NTST_TEF_Msk (0x200UL) /*!< TEF (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTST_RSQFF_Pos (20UL) /*!< RSQFF (Bit 20) */ + #define R_I3C0_NTST_RSQFF_Msk (0x100000UL) /*!< RSQFF (Bitfield-Mask: 0x01) */ +/* ========================================================= NTSTE ========================================================= */ + #define R_I3C0_NTSTE_TDBEE0_Pos (0UL) /*!< TDBEE0 (Bit 0) */ + #define R_I3C0_NTSTE_TDBEE0_Msk (0x1UL) /*!< TDBEE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_RDBFE0_Pos (1UL) /*!< RDBFE0 (Bit 1) */ + #define R_I3C0_NTSTE_RDBFE0_Msk (0x2UL) /*!< RDBFE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_IBIQEFE_Pos (2UL) /*!< IBIQEFE (Bit 2) */ + #define R_I3C0_NTSTE_IBIQEFE_Msk (0x4UL) /*!< IBIQEFE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_CMDQEE_Pos (3UL) /*!< CMDQEE (Bit 3) */ + #define R_I3C0_NTSTE_CMDQEE_Msk (0x8UL) /*!< CMDQEE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_RSPQFE_Pos (4UL) /*!< RSPQFE (Bit 4) */ + #define R_I3C0_NTSTE_RSPQFE_Msk (0x10UL) /*!< RSPQFE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_TABTE_Pos (5UL) /*!< TABTE (Bit 5) */ + #define R_I3C0_NTSTE_TABTE_Msk (0x20UL) /*!< TABTE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_TEE_Pos (9UL) /*!< TEE (Bit 9) */ + #define R_I3C0_NTSTE_TEE_Msk (0x200UL) /*!< TEE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTE_RSQFE_Pos (20UL) /*!< RSQFE (Bit 20) */ + #define R_I3C0_NTSTE_RSQFE_Msk (0x100000UL) /*!< RSQFE (Bitfield-Mask: 0x01) */ +/* ========================================================= NTIE ========================================================== */ + #define R_I3C0_NTIE_TDBEIE0_Pos (0UL) /*!< TDBEIE0 (Bit 0) */ + #define R_I3C0_NTIE_TDBEIE0_Msk (0x1UL) /*!< TDBEIE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_RDBFIE0_Pos (1UL) /*!< RDBFIE0 (Bit 1) */ + #define R_I3C0_NTIE_RDBFIE0_Msk (0x2UL) /*!< RDBFIE0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_IBIQEFIE_Pos (2UL) /*!< IBIQEFIE (Bit 2) */ + #define R_I3C0_NTIE_IBIQEFIE_Msk (0x4UL) /*!< IBIQEFIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_CMDQEIE_Pos (3UL) /*!< CMDQEIE (Bit 3) */ + #define R_I3C0_NTIE_CMDQEIE_Msk (0x8UL) /*!< CMDQEIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_RSPQFIE_Pos (4UL) /*!< RSPQFIE (Bit 4) */ + #define R_I3C0_NTIE_RSPQFIE_Msk (0x10UL) /*!< RSPQFIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_TABTIE_Pos (5UL) /*!< TABTIE (Bit 5) */ + #define R_I3C0_NTIE_TABTIE_Msk (0x20UL) /*!< TABTIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_TEIE_Pos (9UL) /*!< TEIE (Bit 9) */ + #define R_I3C0_NTIE_TEIE_Msk (0x200UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTIE_RSQFIE_Pos (20UL) /*!< RSQFIE (Bit 20) */ + #define R_I3C0_NTIE_RSQFIE_Msk (0x100000UL) /*!< RSQFIE (Bitfield-Mask: 0x01) */ +/* ======================================================== NTSTFC ========================================================= */ + #define R_I3C0_NTSTFC_TDBEFC0_Pos (0UL) /*!< TDBEFC0 (Bit 0) */ + #define R_I3C0_NTSTFC_TDBEFC0_Msk (0x1UL) /*!< TDBEFC0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_RDBFFC0_Pos (1UL) /*!< RDBFFC0 (Bit 1) */ + #define R_I3C0_NTSTFC_RDBFFC0_Msk (0x2UL) /*!< RDBFFC0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_IBIQEFFC_Pos (2UL) /*!< IBIQEFFC (Bit 2) */ + #define R_I3C0_NTSTFC_IBIQEFFC_Msk (0x4UL) /*!< IBIQEFFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_CMDQEFC_Pos (3UL) /*!< CMDQEFC (Bit 3) */ + #define R_I3C0_NTSTFC_CMDQEFC_Msk (0x8UL) /*!< CMDQEFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_RSPQFFC_Pos (4UL) /*!< RSPQFFC (Bit 4) */ + #define R_I3C0_NTSTFC_RSPQFFC_Msk (0x10UL) /*!< RSPQFFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_TABTFC_Pos (5UL) /*!< TABTFC (Bit 5) */ + #define R_I3C0_NTSTFC_TABTFC_Msk (0x20UL) /*!< TABTFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_TEFC_Pos (9UL) /*!< TEFC (Bit 9) */ + #define R_I3C0_NTSTFC_TEFC_Msk (0x200UL) /*!< TEFC (Bitfield-Mask: 0x01) */ + #define R_I3C0_NTSTFC_RSQFFC_Pos (20UL) /*!< RSQFFC (Bit 20) */ + #define R_I3C0_NTSTFC_RSQFFC_Msk (0x100000UL) /*!< RSQFFC (Bitfield-Mask: 0x01) */ +/* ========================================================= BCST ========================================================== */ + #define R_I3C0_BCST_BFREF_Pos (0UL) /*!< BFREF (Bit 0) */ + #define R_I3C0_BCST_BFREF_Msk (0x1UL) /*!< BFREF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCST_BAVLF_Pos (1UL) /*!< BAVLF (Bit 1) */ + #define R_I3C0_BCST_BAVLF_Msk (0x2UL) /*!< BAVLF (Bitfield-Mask: 0x01) */ + #define R_I3C0_BCST_BIDLF_Pos (2UL) /*!< BIDLF (Bit 2) */ + #define R_I3C0_BCST_BIDLF_Msk (0x4UL) /*!< BIDLF (Bitfield-Mask: 0x01) */ +/* ========================================================= SVST ========================================================== */ + #define R_I3C0_SVST_GCAF_Pos (0UL) /*!< GCAF (Bit 0) */ + #define R_I3C0_SVST_GCAF_Msk (0x1UL) /*!< GCAF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_HSMCF_Pos (5UL) /*!< HSMCF (Bit 5) */ + #define R_I3C0_SVST_HSMCF_Msk (0x20UL) /*!< HSMCF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_DVIDF_Pos (6UL) /*!< DVIDF (Bit 6) */ + #define R_I3C0_SVST_DVIDF_Msk (0x40UL) /*!< DVIDF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_HOAF_Pos (15UL) /*!< HOAF (Bit 15) */ + #define R_I3C0_SVST_HOAF_Msk (0x8000UL) /*!< HOAF (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVST_SVAFn_Pos (16UL) /*!< SVAFn (Bit 16) */ + #define R_I3C0_SVST_SVAFn_Msk (0x10000UL) /*!< SVAFn (Bitfield-Mask: 0x01) */ +/* ========================================================= WUST ========================================================== */ + #define R_I3C0_WUST_WUASYNF_Pos (0UL) /*!< WUASYNF (Bit 0) */ + #define R_I3C0_WUST_WUASYNF_Msk (0x1UL) /*!< WUASYNF (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS0 ======================================================== */ + #define R_I3C0_DATBAS0_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS0_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS0_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS0_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS0_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS0_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS0_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS0_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS0_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS0_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS0_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS0_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS0_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS1 ======================================================== */ + #define R_I3C0_DATBAS1_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS1_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS1_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS1_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS1_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS1_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS1_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS1_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS1_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS1_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS1_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS1_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS1_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS2 ======================================================== */ + #define R_I3C0_DATBAS2_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS2_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS2_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS2_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS2_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS2_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS2_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS2_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS2_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS2_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS2_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS2_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS2_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================== DATBAS3 ======================================================== */ + #define R_I3C0_DATBAS3_DVSTAD_Pos (0UL) /*!< DVSTAD (Bit 0) */ + #define R_I3C0_DATBAS3_DVSTAD_Msk (0x7fUL) /*!< DVSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_DATBAS3_DVIBIPL_Pos (12UL) /*!< DVIBIPL (Bit 12) */ + #define R_I3C0_DATBAS3_DVIBIPL_Msk (0x1000UL) /*!< DVIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVSIRRJ_Pos (13UL) /*!< DVSIRRJ (Bit 13) */ + #define R_I3C0_DATBAS3_DVSIRRJ_Msk (0x2000UL) /*!< DVSIRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVMRRJ_Pos (14UL) /*!< DVMRRJ (Bit 14) */ + #define R_I3C0_DATBAS3_DVMRRJ_Msk (0x4000UL) /*!< DVMRRJ (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVIBITS_Pos (15UL) /*!< DVIBITS (Bit 15) */ + #define R_I3C0_DATBAS3_DVIBITS_Msk (0x8000UL) /*!< DVIBITS (Bitfield-Mask: 0x01) */ + #define R_I3C0_DATBAS3_DVDYAD_Pos (16UL) /*!< DVDYAD (Bit 16) */ + #define R_I3C0_DATBAS3_DVDYAD_Msk (0xff0000UL) /*!< DVDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_DATBAS3_DVNACK_Pos (29UL) /*!< DVNACK (Bit 29) */ + #define R_I3C0_DATBAS3_DVNACK_Msk (0x60000000UL) /*!< DVNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_DATBAS3_DVTYP_Pos (31UL) /*!< DVTYP (Bit 31) */ + #define R_I3C0_DATBAS3_DVTYP_Msk (0x80000000UL) /*!< DVTYP (Bitfield-Mask: 0x01) */ +/* ======================================================= EXDATBAS ======================================================== */ + #define R_I3C0_EXDATBAS_EDSTAD_Pos (0UL) /*!< EDSTAD (Bit 0) */ + #define R_I3C0_EXDATBAS_EDSTAD_Msk (0x7fUL) /*!< EDSTAD (Bitfield-Mask: 0x7f) */ + #define R_I3C0_EXDATBAS_EDDYAD_Pos (16UL) /*!< EDDYAD (Bit 16) */ + #define R_I3C0_EXDATBAS_EDDYAD_Msk (0xff0000UL) /*!< EDDYAD (Bitfield-Mask: 0xff) */ + #define R_I3C0_EXDATBAS_EDNACK_Pos (29UL) /*!< EDNACK (Bit 29) */ + #define R_I3C0_EXDATBAS_EDNACK_Msk (0x60000000UL) /*!< EDNACK (Bitfield-Mask: 0x03) */ + #define R_I3C0_EXDATBAS_EDTYP_Pos (31UL) /*!< EDTYP (Bit 31) */ + #define R_I3C0_EXDATBAS_EDTYP_Msk (0x80000000UL) /*!< EDTYP (Bitfield-Mask: 0x01) */ +/* ======================================================= SDATBAS0 ======================================================== */ + #define R_I3C0_SDATBAS0_SDSTAD_Pos (0UL) /*!< SDSTAD (Bit 0) */ + #define R_I3C0_SDATBAS0_SDSTAD_Msk (0x3ffUL) /*!< SDSTAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SDATBAS0_SDADLS_Pos (10UL) /*!< SDADLS (Bit 10) */ + #define R_I3C0_SDATBAS0_SDADLS_Msk (0x400UL) /*!< SDADLS (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS0_SDIBIPL_Pos (12UL) /*!< SDIBIPL (Bit 12) */ + #define R_I3C0_SDATBAS0_SDIBIPL_Msk (0x1000UL) /*!< SDIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS0_SDDYAD_Pos (16UL) /*!< SDDYAD (Bit 16) */ + #define R_I3C0_SDATBAS0_SDDYAD_Msk (0x7f0000UL) /*!< SDDYAD (Bitfield-Mask: 0x7f) */ +/* ======================================================= SDATBAS1 ======================================================== */ + #define R_I3C0_SDATBAS1_SDSTAD_Pos (0UL) /*!< SDSTAD (Bit 0) */ + #define R_I3C0_SDATBAS1_SDSTAD_Msk (0x3ffUL) /*!< SDSTAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SDATBAS1_SDADLS_Pos (10UL) /*!< SDADLS (Bit 10) */ + #define R_I3C0_SDATBAS1_SDADLS_Msk (0x400UL) /*!< SDADLS (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS1_SDIBIPL_Pos (12UL) /*!< SDIBIPL (Bit 12) */ + #define R_I3C0_SDATBAS1_SDIBIPL_Msk (0x1000UL) /*!< SDIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS1_SDDYAD_Pos (16UL) /*!< SDDYAD (Bit 16) */ + #define R_I3C0_SDATBAS1_SDDYAD_Msk (0x7f0000UL) /*!< SDDYAD (Bitfield-Mask: 0x7f) */ +/* ======================================================= SDATBAS2 ======================================================== */ + #define R_I3C0_SDATBAS2_SDSTAD_Pos (0UL) /*!< SDSTAD (Bit 0) */ + #define R_I3C0_SDATBAS2_SDSTAD_Msk (0x3ffUL) /*!< SDSTAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SDATBAS2_SDADLS_Pos (10UL) /*!< SDADLS (Bit 10) */ + #define R_I3C0_SDATBAS2_SDADLS_Msk (0x400UL) /*!< SDADLS (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS2_SDIBIPL_Pos (12UL) /*!< SDIBIPL (Bit 12) */ + #define R_I3C0_SDATBAS2_SDIBIPL_Msk (0x1000UL) /*!< SDIBIPL (Bitfield-Mask: 0x01) */ + #define R_I3C0_SDATBAS2_SDDYAD_Pos (16UL) /*!< SDDYAD (Bit 16) */ + #define R_I3C0_SDATBAS2_SDDYAD_Msk (0x7f0000UL) /*!< SDDYAD (Bitfield-Mask: 0x7f) */ +/* ======================================================== MSDCT0 ========================================================= */ + #define R_I3C0_MSDCT0_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT0_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT0_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT0_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT0_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT0_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT0_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================== MSDCT1 ========================================================= */ + #define R_I3C0_MSDCT1_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT1_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT1_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT1_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT1_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT1_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT1_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================== MSDCT2 ========================================================= */ + #define R_I3C0_MSDCT2_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT2_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT2_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT2_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT2_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT2_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT2_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================== MSDCT3 ========================================================= */ + #define R_I3C0_MSDCT3_RBCR0_Pos (8UL) /*!< RBCR0 (Bit 8) */ + #define R_I3C0_MSDCT3_RBCR0_Msk (0x100UL) /*!< RBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR1_Pos (9UL) /*!< RBCR1 (Bit 9) */ + #define R_I3C0_MSDCT3_RBCR1_Msk (0x200UL) /*!< RBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR2_Pos (10UL) /*!< RBCR2 (Bit 10) */ + #define R_I3C0_MSDCT3_RBCR2_Msk (0x400UL) /*!< RBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR3_Pos (11UL) /*!< RBCR3 (Bit 11) */ + #define R_I3C0_MSDCT3_RBCR3_Msk (0x800UL) /*!< RBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_MSDCT3_RBCR76_Pos (14UL) /*!< RBCR76 (Bit 14) */ + #define R_I3C0_MSDCT3_RBCR76_Msk (0xc000UL) /*!< RBCR76 (Bitfield-Mask: 0x03) */ +/* ========================================================= SVDCT ========================================================= */ + #define R_I3C0_SVDCT_TDCR_Pos (0UL) /*!< TDCR (Bit 0) */ + #define R_I3C0_SVDCT_TDCR_Msk (0xffUL) /*!< TDCR (Bitfield-Mask: 0xff) */ + #define R_I3C0_SVDCT_TBCR0_Pos (8UL) /*!< TBCR0 (Bit 8) */ + #define R_I3C0_SVDCT_TBCR0_Msk (0x100UL) /*!< TBCR0 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR1_Pos (9UL) /*!< TBCR1 (Bit 9) */ + #define R_I3C0_SVDCT_TBCR1_Msk (0x200UL) /*!< TBCR1 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR2_Pos (10UL) /*!< TBCR2 (Bit 10) */ + #define R_I3C0_SVDCT_TBCR2_Msk (0x400UL) /*!< TBCR2 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR3_Pos (11UL) /*!< TBCR3 (Bit 11) */ + #define R_I3C0_SVDCT_TBCR3_Msk (0x800UL) /*!< TBCR3 (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDCT_TBCR76_Pos (14UL) /*!< TBCR76 (Bit 14) */ + #define R_I3C0_SVDCT_TBCR76_Msk (0xc000UL) /*!< TBCR76 (Bitfield-Mask: 0x03) */ +/* ======================================================= SDCTPIDL ======================================================== */ +/* ======================================================= SDCTPIDH ======================================================== */ +/* ======================================================== SVDVAD0 ======================================================== */ + #define R_I3C0_SVDVAD0_SVAD_Pos (16UL) /*!< SVAD (Bit 16) */ + #define R_I3C0_SVDVAD0_SVAD_Msk (0x3ff0000UL) /*!< SVAD (Bitfield-Mask: 0x3ff) */ + #define R_I3C0_SVDVAD0_SADLG_Pos (27UL) /*!< SADLG (Bit 27) */ + #define R_I3C0_SVDVAD0_SADLG_Msk (0x8000000UL) /*!< SADLG (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDVAD0_SSTADV_Pos (30UL) /*!< SSTADV (Bit 30) */ + #define R_I3C0_SVDVAD0_SSTADV_Msk (0x40000000UL) /*!< SSTADV (Bitfield-Mask: 0x01) */ + #define R_I3C0_SVDVAD0_SDYADV_Pos (31UL) /*!< SDYADV (Bit 31) */ + #define R_I3C0_SVDVAD0_SDYADV_Msk (0x80000000UL) /*!< SDYADV (Bitfield-Mask: 0x01) */ +/* ======================================================== CSECMD ========================================================= */ + #define R_I3C0_CSECMD_SVIRQE_Pos (0UL) /*!< SVIRQE (Bit 0) */ + #define R_I3C0_CSECMD_SVIRQE_Msk (0x1UL) /*!< SVIRQE (Bitfield-Mask: 0x01) */ + #define R_I3C0_CSECMD_MSRQE_Pos (1UL) /*!< MSRQE (Bit 1) */ + #define R_I3C0_CSECMD_MSRQE_Msk (0x2UL) /*!< MSRQE (Bitfield-Mask: 0x01) */ + #define R_I3C0_CSECMD_HJEVE_Pos (3UL) /*!< HJEVE (Bit 3) */ + #define R_I3C0_CSECMD_HJEVE_Msk (0x8UL) /*!< HJEVE (Bitfield-Mask: 0x01) */ +/* ======================================================== CEACTST ======================================================== */ + #define R_I3C0_CEACTST_ACTST_Pos (0UL) /*!< ACTST (Bit 0) */ + #define R_I3C0_CEACTST_ACTST_Msk (0xfUL) /*!< ACTST (Bitfield-Mask: 0x0f) */ +/* ========================================================= CMWLG ========================================================= */ + #define R_I3C0_CMWLG_MWLG_Pos (0UL) /*!< MWLG (Bit 0) */ + #define R_I3C0_CMWLG_MWLG_Msk (0xffffUL) /*!< MWLG (Bitfield-Mask: 0xffff) */ +/* ========================================================= CMRLG ========================================================= */ + #define R_I3C0_CMRLG_MRLG_Pos (0UL) /*!< MRLG (Bit 0) */ + #define R_I3C0_CMRLG_MRLG_Msk (0xffffUL) /*!< MRLG (Bitfield-Mask: 0xffff) */ + #define R_I3C0_CMRLG_IBIPSZ_Pos (16UL) /*!< IBIPSZ (Bit 16) */ + #define R_I3C0_CMRLG_IBIPSZ_Msk (0xff0000UL) /*!< IBIPSZ (Bitfield-Mask: 0xff) */ +/* ======================================================== CETSTMD ======================================================== */ + #define R_I3C0_CETSTMD_TSTMD_Pos (0UL) /*!< TSTMD (Bit 0) */ + #define R_I3C0_CETSTMD_TSTMD_Msk (0xffUL) /*!< TSTMD (Bitfield-Mask: 0xff) */ +/* ======================================================== CGDVST ========================================================= */ + #define R_I3C0_CGDVST_PNDINT_Pos (0UL) /*!< PNDINT (Bit 0) */ + #define R_I3C0_CGDVST_PNDINT_Msk (0xfUL) /*!< PNDINT (Bitfield-Mask: 0x0f) */ + #define R_I3C0_CGDVST_PRTE_Pos (5UL) /*!< PRTE (Bit 5) */ + #define R_I3C0_CGDVST_PRTE_Msk (0x20UL) /*!< PRTE (Bitfield-Mask: 0x01) */ + #define R_I3C0_CGDVST_ACTMD_Pos (6UL) /*!< ACTMD (Bit 6) */ + #define R_I3C0_CGDVST_ACTMD_Msk (0xc0UL) /*!< ACTMD (Bitfield-Mask: 0x03) */ + #define R_I3C0_CGDVST_VDRSV_Pos (8UL) /*!< VDRSV (Bit 8) */ + #define R_I3C0_CGDVST_VDRSV_Msk (0xff00UL) /*!< VDRSV (Bitfield-Mask: 0xff) */ +/* ======================================================== CMDSPW ========================================================= */ + #define R_I3C0_CMDSPW_MSWDR_Pos (0UL) /*!< MSWDR (Bit 0) */ + #define R_I3C0_CMDSPW_MSWDR_Msk (0x7UL) /*!< MSWDR (Bitfield-Mask: 0x07) */ +/* ======================================================== CMDSPR ========================================================= */ + #define R_I3C0_CMDSPR_MSRDR_Pos (0UL) /*!< MSRDR (Bit 0) */ + #define R_I3C0_CMDSPR_MSRDR_Msk (0x7UL) /*!< MSRDR (Bitfield-Mask: 0x07) */ + #define R_I3C0_CMDSPR_CDTTIM_Pos (3UL) /*!< CDTTIM (Bit 3) */ + #define R_I3C0_CMDSPR_CDTTIM_Msk (0x38UL) /*!< CDTTIM (Bitfield-Mask: 0x07) */ +/* ======================================================== CMDSPT ========================================================= */ + #define R_I3C0_CMDSPT_MRTTIM_Pos (0UL) /*!< MRTTIM (Bit 0) */ + #define R_I3C0_CMDSPT_MRTTIM_Msk (0xffffffUL) /*!< MRTTIM (Bitfield-Mask: 0xffffff) */ + #define R_I3C0_CMDSPT_MRTE_Pos (31UL) /*!< MRTE (Bit 31) */ + #define R_I3C0_CMDSPT_MRTE_Msk (0x80000000UL) /*!< MRTE (Bitfield-Mask: 0x01) */ +/* ========================================================= CETSM ========================================================= */ + #define R_I3C0_CETSM_FREQ_Pos (8UL) /*!< FREQ (Bit 8) */ + #define R_I3C0_CETSM_FREQ_Msk (0xff00UL) /*!< FREQ (Bitfield-Mask: 0xff) */ + #define R_I3C0_CETSM_INAC_Pos (16UL) /*!< INAC (Bit 16) */ + #define R_I3C0_CETSM_INAC_Msk (0xff0000UL) /*!< INAC (Bitfield-Mask: 0xff) */ +/* ======================================================== BITCNT ========================================================= */ + #define R_I3C0_BITCNT_BCNT_Pos (0UL) /*!< BCNT (Bit 0) */ + #define R_I3C0_BITCNT_BCNT_Msk (0x1fUL) /*!< BCNT (Bitfield-Mask: 0x1f) */ + #define R_I3C0_BITCNT_BCNTWP_Pos (7UL) /*!< BCNTWP (Bit 7) */ + #define R_I3C0_BITCNT_BCNTWP_Msk (0x80UL) /*!< BCNTWP (Bitfield-Mask: 0x01) */ +/* ======================================================== NQSTLV ========================================================= */ + #define R_I3C0_NQSTLV_CMDQFLV_Pos (0UL) /*!< CMDQFLV (Bit 0) */ + #define R_I3C0_NQSTLV_CMDQFLV_Msk (0xffUL) /*!< CMDQFLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQSTLV_RSPQLV_Pos (8UL) /*!< RSPQLV (Bit 8) */ + #define R_I3C0_NQSTLV_RSPQLV_Msk (0xff00UL) /*!< RSPQLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQSTLV_IBIQLV_Pos (16UL) /*!< IBIQLV (Bit 16) */ + #define R_I3C0_NQSTLV_IBIQLV_Msk (0xff0000UL) /*!< IBIQLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NQSTLV_IBISCNT_Pos (24UL) /*!< IBISCNT (Bit 24) */ + #define R_I3C0_NQSTLV_IBISCNT_Msk (0x1f000000UL) /*!< IBISCNT (Bitfield-Mask: 0x1f) */ +/* ======================================================= NDBSTLV0 ======================================================== */ + #define R_I3C0_NDBSTLV0_TDBFLV_Pos (0UL) /*!< TDBFLV (Bit 0) */ + #define R_I3C0_NDBSTLV0_TDBFLV_Msk (0xffUL) /*!< TDBFLV (Bitfield-Mask: 0xff) */ + #define R_I3C0_NDBSTLV0_RDBLV_Pos (8UL) /*!< RDBLV (Bit 8) */ + #define R_I3C0_NDBSTLV0_RDBLV_Msk (0xff00UL) /*!< RDBLV (Bitfield-Mask: 0xff) */ +/* ======================================================= NRSQSTLV ======================================================== */ + #define R_I3C0_NRSQSTLV_RSQLV_Pos (0UL) /*!< RSQLV (Bit 0) */ + #define R_I3C0_NRSQSTLV_RSQLV_Msk (0xffUL) /*!< RSQLV (Bitfield-Mask: 0xff) */ +/* ======================================================== PRSTDBG ======================================================== */ + #define R_I3C0_PRSTDBG_SCILV_Pos (0UL) /*!< SCILV (Bit 0) */ + #define R_I3C0_PRSTDBG_SCILV_Msk (0x1UL) /*!< SCILV (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSTDBG_SDILV_Pos (1UL) /*!< SDILV (Bit 1) */ + #define R_I3C0_PRSTDBG_SDILV_Msk (0x2UL) /*!< SDILV (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSTDBG_SCOLV_Pos (2UL) /*!< SCOLV (Bit 2) */ + #define R_I3C0_PRSTDBG_SCOLV_Msk (0x4UL) /*!< SCOLV (Bitfield-Mask: 0x01) */ + #define R_I3C0_PRSTDBG_SDOLV_Pos (3UL) /*!< SDOLV (Bit 3) */ + #define R_I3C0_PRSTDBG_SDOLV_Msk (0x8UL) /*!< SDOLV (Bitfield-Mask: 0x01) */ +/* ======================================================= MSERRCNT ======================================================== */ + #define R_I3C0_MSERRCNT_M2ECNT_Pos (0UL) /*!< M2ECNT (Bit 0) */ + #define R_I3C0_MSERRCNT_M2ECNT_Msk (0xffUL) /*!< M2ECNT (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_MMPU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== OAD ========================================================== */ + #define R_MPU_MMPU_OAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_OAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_OAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_MPU_MMPU_OAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ========================================================= OADPT ========================================================= */ + #define R_MPU_MMPU_OADPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_MPU_MMPU_OADPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + #define R_MPU_MMPU_OADPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_MPU_MMPU_OADPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU_SPMON ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MSTP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== MSTPCRA ======================================================== */ + #define R_MSTP_MSTPCRA_MSTPA_Pos (0UL) /*!< MSTPA (Bit 0) */ + #define R_MSTP_MSTPCRA_MSTPA_Msk (0x1UL) /*!< MSTPA (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRB ======================================================== */ + #define R_MSTP_MSTPCRB_MSTPB_Pos (0UL) /*!< MSTPB (Bit 0) */ + #define R_MSTP_MSTPCRB_MSTPB_Msk (0x1UL) /*!< MSTPB (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRC ======================================================== */ + #define R_MSTP_MSTPCRC_MSTPC_Pos (0UL) /*!< MSTPC (Bit 0) */ + #define R_MSTP_MSTPCRC_MSTPC_Msk (0x1UL) /*!< MSTPC (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRD ======================================================== */ + #define R_MSTP_MSTPCRD_MSTPD_Pos (0UL) /*!< MSTPD (Bit 0) */ + #define R_MSTP_MSTPCRD_MSTPD_Msk (0x1UL) /*!< MSTPD (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRE ======================================================== */ + #define R_MSTP_MSTPCRE_MSTPE_Pos (0UL) /*!< MSTPE (Bit 0) */ + #define R_MSTP_MSTPCRE_MSTPE_Msk (0x1UL) /*!< MSTPE (Bitfield-Mask: 0x01) */ +/* ======================================================= LSMRWDIS ======================================================== */ + #define R_MSTP_LSMRWDIS_RTCRWDIS_Pos (0UL) /*!< RTCRWDIS (Bit 0) */ + #define R_MSTP_LSMRWDIS_RTCRWDIS_Msk (0x1UL) /*!< RTCRWDIS (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_WDTDIS_Pos (1UL) /*!< WDTDIS (Bit 1) */ + #define R_MSTP_LSMRWDIS_WDTDIS_Msk (0x2UL) /*!< WDTDIS (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_IWDTIDS_Pos (2UL) /*!< IWDTIDS (Bit 2) */ + #define R_MSTP_LSMRWDIS_IWDTIDS_Msk (0x4UL) /*!< IWDTIDS (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_WREN_Pos (7UL) /*!< WREN (Bit 7) */ + #define R_MSTP_LSMRWDIS_WREN_Msk (0x80UL) /*!< WREN (Bitfield-Mask: 0x01) */ + #define R_MSTP_LSMRWDIS_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_MSTP_LSMRWDIS_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PCNTR1 ========================================================= */ + #define R_PORT0_PCNTR1_PODR_Pos (16UL) /*!< PODR (Bit 16) */ + #define R_PORT0_PCNTR1_PODR_Msk (0xffff0000UL) /*!< PODR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR1_PDR_Pos (0UL) /*!< PDR (Bit 0) */ + #define R_PORT0_PCNTR1_PDR_Msk (0xffffUL) /*!< PDR (Bitfield-Mask: 0xffff) */ +/* ========================================================== PDR ========================================================== */ + #define R_PORT0_PDR_PDR_Pos (0UL) /*!< PDR (Bit 0) */ + #define R_PORT0_PDR_PDR_Msk (0x1UL) /*!< PDR (Bitfield-Mask: 0x01) */ +/* ========================================================= PODR ========================================================== */ + #define R_PORT0_PODR_PODR_Pos (0UL) /*!< PODR (Bit 0) */ + #define R_PORT0_PODR_PODR_Msk (0x1UL) /*!< PODR (Bitfield-Mask: 0x01) */ +/* ======================================================== PCNTR2 ========================================================= */ + #define R_PORT0_PCNTR2_EIDR_Pos (16UL) /*!< EIDR (Bit 16) */ + #define R_PORT0_PCNTR2_EIDR_Msk (0xffff0000UL) /*!< EIDR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR2_PIDR_Pos (0UL) /*!< PIDR (Bit 0) */ + #define R_PORT0_PCNTR2_PIDR_Msk (0xffffUL) /*!< PIDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= PIDR ========================================================== */ + #define R_PORT0_PIDR_PIDR_Pos (0UL) /*!< PIDR (Bit 0) */ + #define R_PORT0_PIDR_PIDR_Msk (0x1UL) /*!< PIDR (Bitfield-Mask: 0x01) */ +/* ========================================================= EIDR ========================================================== */ + #define R_PORT0_EIDR_EIDR_Pos (0UL) /*!< EIDR (Bit 0) */ + #define R_PORT0_EIDR_EIDR_Msk (0x1UL) /*!< EIDR (Bitfield-Mask: 0x01) */ +/* ======================================================== PCNTR3 ========================================================= */ + #define R_PORT0_PCNTR3_PORR_Pos (16UL) /*!< PORR (Bit 16) */ + #define R_PORT0_PCNTR3_PORR_Msk (0xffff0000UL) /*!< PORR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR3_POSR_Pos (0UL) /*!< POSR (Bit 0) */ + #define R_PORT0_PCNTR3_POSR_Msk (0xffffUL) /*!< POSR (Bitfield-Mask: 0xffff) */ +/* ========================================================= POSR ========================================================== */ + #define R_PORT0_POSR_POSR_Pos (0UL) /*!< POSR (Bit 0) */ + #define R_PORT0_POSR_POSR_Msk (0x1UL) /*!< POSR (Bitfield-Mask: 0x01) */ +/* ========================================================= PORR ========================================================== */ + #define R_PORT0_PORR_PORR_Pos (0UL) /*!< PORR (Bit 0) */ + #define R_PORT0_PORR_PORR_Msk (0x1UL) /*!< PORR (Bitfield-Mask: 0x01) */ +/* ======================================================== PCNTR4 ========================================================= */ + #define R_PORT0_PCNTR4_EORR_Pos (16UL) /*!< EORR (Bit 16) */ + #define R_PORT0_PCNTR4_EORR_Msk (0xffff0000UL) /*!< EORR (Bitfield-Mask: 0xffff) */ + #define R_PORT0_PCNTR4_EOSR_Pos (0UL) /*!< EOSR (Bit 0) */ + #define R_PORT0_PCNTR4_EOSR_Msk (0xffffUL) /*!< EOSR (Bitfield-Mask: 0xffff) */ +/* ========================================================= EOSR ========================================================== */ + #define R_PORT0_EOSR_EOSR_Pos (0UL) /*!< EOSR (Bit 0) */ + #define R_PORT0_EOSR_EOSR_Msk (0x1UL) /*!< EOSR (Bitfield-Mask: 0x01) */ +/* ========================================================= EORR ========================================================== */ + #define R_PORT0_EORR_EORR_Pos (0UL) /*!< EORR (Bit 0) */ + #define R_PORT0_EORR_EORR_Msk (0x1UL) /*!< EORR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_PFS ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_PMISC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== PFENET ========================================================= */ + #define R_PMISC_PFENET_PHYMODE0_Pos (4UL) /*!< PHYMODE0 (Bit 4) */ + #define R_PMISC_PFENET_PHYMODE0_Msk (0x10UL) /*!< PHYMODE0 (Bitfield-Mask: 0x01) */ +/* ========================================================= PWPR ========================================================== */ + #define R_PMISC_PWPR_PFSWE_Pos (6UL) /*!< PFSWE (Bit 6) */ + #define R_PMISC_PWPR_PFSWE_Msk (0x40UL) /*!< PFSWE (Bitfield-Mask: 0x01) */ + #define R_PMISC_PWPR_B0WI_Pos (7UL) /*!< B0WI (Bit 7) */ + #define R_PMISC_PWPR_B0WI_Msk (0x80UL) /*!< B0WI (Bitfield-Mask: 0x01) */ +/* ========================================================= PWPRS ========================================================= */ + #define R_PMISC_PWPRS_PFSWE_Pos (6UL) /*!< PFSWE (Bit 6) */ + #define R_PMISC_PWPRS_PFSWE_Msk (0x40UL) /*!< PFSWE (Bitfield-Mask: 0x01) */ + #define R_PMISC_PWPRS_B0WI_Pos (7UL) /*!< B0WI (Bit 7) */ + #define R_PMISC_PWPRS_B0WI_Msk (0x80UL) /*!< B0WI (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== R64CNT ========================================================= */ + #define R_RTC_R64CNT_F1HZ_Pos (6UL) /*!< F1HZ (Bit 6) */ + #define R_RTC_R64CNT_F1HZ_Msk (0x40UL) /*!< F1HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F2HZ_Pos (5UL) /*!< F2HZ (Bit 5) */ + #define R_RTC_R64CNT_F2HZ_Msk (0x20UL) /*!< F2HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F4HZ_Pos (4UL) /*!< F4HZ (Bit 4) */ + #define R_RTC_R64CNT_F4HZ_Msk (0x10UL) /*!< F4HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F8HZ_Pos (3UL) /*!< F8HZ (Bit 3) */ + #define R_RTC_R64CNT_F8HZ_Msk (0x8UL) /*!< F8HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F16HZ_Pos (2UL) /*!< F16HZ (Bit 2) */ + #define R_RTC_R64CNT_F16HZ_Msk (0x4UL) /*!< F16HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F32HZ_Pos (1UL) /*!< F32HZ (Bit 1) */ + #define R_RTC_R64CNT_F32HZ_Msk (0x2UL) /*!< F32HZ (Bitfield-Mask: 0x01) */ + #define R_RTC_R64CNT_F64HZ_Pos (0UL) /*!< F64HZ (Bit 0) */ + #define R_RTC_R64CNT_F64HZ_Msk (0x1UL) /*!< F64HZ (Bitfield-Mask: 0x01) */ +/* ========================================================= BCNT0 ========================================================= */ + #define R_RTC_BCNT0_BCNT0_Pos (0UL) /*!< BCNT0 (Bit 0) */ + #define R_RTC_BCNT0_BCNT0_Msk (0xffUL) /*!< BCNT0 (Bitfield-Mask: 0xff) */ +/* ======================================================== RSECCNT ======================================================== */ + #define R_RTC_RSECCNT_SEC10_Pos (4UL) /*!< SEC10 (Bit 4) */ + #define R_RTC_RSECCNT_SEC10_Msk (0x70UL) /*!< SEC10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RSECCNT_SEC1_Pos (0UL) /*!< SEC1 (Bit 0) */ + #define R_RTC_RSECCNT_SEC1_Msk (0xfUL) /*!< SEC1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT1 ========================================================= */ + #define R_RTC_BCNT1_BCNT1_Pos (0UL) /*!< BCNT1 (Bit 0) */ + #define R_RTC_BCNT1_BCNT1_Msk (0xffUL) /*!< BCNT1 (Bitfield-Mask: 0xff) */ +/* ======================================================== RMINCNT ======================================================== */ + #define R_RTC_RMINCNT_MIN10_Pos (4UL) /*!< MIN10 (Bit 4) */ + #define R_RTC_RMINCNT_MIN10_Msk (0x70UL) /*!< MIN10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RMINCNT_MIN1_Pos (0UL) /*!< MIN1 (Bit 0) */ + #define R_RTC_RMINCNT_MIN1_Msk (0xfUL) /*!< MIN1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT2 ========================================================= */ + #define R_RTC_BCNT2_BCNT2_Pos (0UL) /*!< BCNT2 (Bit 0) */ + #define R_RTC_BCNT2_BCNT2_Msk (0xffUL) /*!< BCNT2 (Bitfield-Mask: 0xff) */ +/* ======================================================== RHRCNT ========================================================= */ + #define R_RTC_RHRCNT_PM_Pos (6UL) /*!< PM (Bit 6) */ + #define R_RTC_RHRCNT_PM_Msk (0x40UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_RTC_RHRCNT_HR10_Pos (4UL) /*!< HR10 (Bit 4) */ + #define R_RTC_RHRCNT_HR10_Msk (0x30UL) /*!< HR10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RHRCNT_HR1_Pos (0UL) /*!< HR1 (Bit 0) */ + #define R_RTC_RHRCNT_HR1_Msk (0xfUL) /*!< HR1 (Bitfield-Mask: 0x0f) */ +/* ========================================================= BCNT3 ========================================================= */ + #define R_RTC_BCNT3_BCNT3_Pos (0UL) /*!< BCNT3 (Bit 0) */ + #define R_RTC_BCNT3_BCNT3_Msk (0xffUL) /*!< BCNT3 (Bitfield-Mask: 0xff) */ +/* ======================================================== RWKCNT ========================================================= */ + #define R_RTC_RWKCNT_DAYW_Pos (0UL) /*!< DAYW (Bit 0) */ + #define R_RTC_RWKCNT_DAYW_Msk (0x7UL) /*!< DAYW (Bitfield-Mask: 0x07) */ +/* ======================================================== RDAYCNT ======================================================== */ + #define R_RTC_RDAYCNT_DATE10_Pos (4UL) /*!< DATE10 (Bit 4) */ + #define R_RTC_RDAYCNT_DATE10_Msk (0x30UL) /*!< DATE10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RDAYCNT_DATE1_Pos (0UL) /*!< DATE1 (Bit 0) */ + #define R_RTC_RDAYCNT_DATE1_Msk (0xfUL) /*!< DATE1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== RMONCNT ======================================================== */ + #define R_RTC_RMONCNT_MON10_Pos (4UL) /*!< MON10 (Bit 4) */ + #define R_RTC_RMONCNT_MON10_Msk (0x10UL) /*!< MON10 (Bitfield-Mask: 0x01) */ + #define R_RTC_RMONCNT_MON1_Pos (0UL) /*!< MON1 (Bit 0) */ + #define R_RTC_RMONCNT_MON1_Msk (0xfUL) /*!< MON1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== RYRCNT ========================================================= */ + #define R_RTC_RYRCNT_YR10_Pos (4UL) /*!< YR10 (Bit 4) */ + #define R_RTC_RYRCNT_YR10_Msk (0xf0UL) /*!< YR10 (Bitfield-Mask: 0x0f) */ + #define R_RTC_RYRCNT_YR1_Pos (0UL) /*!< YR1 (Bit 0) */ + #define R_RTC_RYRCNT_YR1_Msk (0xfUL) /*!< YR1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT0AR ======================================================== */ + #define R_RTC_BCNT0AR_BCNT0AR_Pos (0UL) /*!< BCNT0AR (Bit 0) */ + #define R_RTC_BCNT0AR_BCNT0AR_Msk (0xffUL) /*!< BCNT0AR (Bitfield-Mask: 0xff) */ +/* ======================================================== RSECAR ========================================================= */ + #define R_RTC_RSECAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RSECAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RSECAR_SEC10_Pos (4UL) /*!< SEC10 (Bit 4) */ + #define R_RTC_RSECAR_SEC10_Msk (0x70UL) /*!< SEC10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RSECAR_SEC1_Pos (0UL) /*!< SEC1 (Bit 0) */ + #define R_RTC_RSECAR_SEC1_Msk (0xfUL) /*!< SEC1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT1AR ======================================================== */ + #define R_RTC_BCNT1AR_BCNT1AR_Pos (0UL) /*!< BCNT1AR (Bit 0) */ + #define R_RTC_BCNT1AR_BCNT1AR_Msk (0xffUL) /*!< BCNT1AR (Bitfield-Mask: 0xff) */ +/* ======================================================== RMINAR ========================================================= */ + #define R_RTC_RMINAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RMINAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RMINAR_MIN10_Pos (4UL) /*!< MIN10 (Bit 4) */ + #define R_RTC_RMINAR_MIN10_Msk (0x70UL) /*!< MIN10 (Bitfield-Mask: 0x07) */ + #define R_RTC_RMINAR_MIN1_Pos (0UL) /*!< MIN1 (Bit 0) */ + #define R_RTC_RMINAR_MIN1_Msk (0xfUL) /*!< MIN1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT2AR ======================================================== */ + #define R_RTC_BCNT2AR_BCNT2AR_Pos (0UL) /*!< BCNT2AR (Bit 0) */ + #define R_RTC_BCNT2AR_BCNT2AR_Msk (0xffUL) /*!< BCNT2AR (Bitfield-Mask: 0xff) */ +/* ========================================================= RHRAR ========================================================= */ + #define R_RTC_RHRAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RHRAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RHRAR_PM_Pos (6UL) /*!< PM (Bit 6) */ + #define R_RTC_RHRAR_PM_Msk (0x40UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_RTC_RHRAR_HR10_Pos (4UL) /*!< HR10 (Bit 4) */ + #define R_RTC_RHRAR_HR10_Msk (0x30UL) /*!< HR10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RHRAR_HR1_Pos (0UL) /*!< HR1 (Bit 0) */ + #define R_RTC_RHRAR_HR1_Msk (0xfUL) /*!< HR1 (Bitfield-Mask: 0x0f) */ +/* ======================================================== BCNT3AR ======================================================== */ + #define R_RTC_BCNT3AR_BCNT3AR_Pos (0UL) /*!< BCNT3AR (Bit 0) */ + #define R_RTC_BCNT3AR_BCNT3AR_Msk (0xffUL) /*!< BCNT3AR (Bitfield-Mask: 0xff) */ +/* ========================================================= RWKAR ========================================================= */ + #define R_RTC_RWKAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RWKAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RWKAR_DAYW_Pos (0UL) /*!< DAYW (Bit 0) */ + #define R_RTC_RWKAR_DAYW_Msk (0x7UL) /*!< DAYW (Bitfield-Mask: 0x07) */ +/* ======================================================= BCNT0AER ======================================================== */ + #define R_RTC_BCNT0AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT0AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ======================================================== RDAYAR ========================================================= */ + #define R_RTC_RDAYAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RDAYAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RDAYAR_DATE10_Pos (4UL) /*!< DATE10 (Bit 4) */ + #define R_RTC_RDAYAR_DATE10_Msk (0x30UL) /*!< DATE10 (Bitfield-Mask: 0x03) */ + #define R_RTC_RDAYAR_DATE1_Pos (0UL) /*!< DATE1 (Bit 0) */ + #define R_RTC_RDAYAR_DATE1_Msk (0xfUL) /*!< DATE1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= BCNT1AER ======================================================== */ + #define R_RTC_BCNT1AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT1AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ======================================================== RMONAR ========================================================= */ + #define R_RTC_RMONAR_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RMONAR_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ + #define R_RTC_RMONAR_MON10_Pos (4UL) /*!< MON10 (Bit 4) */ + #define R_RTC_RMONAR_MON10_Msk (0x10UL) /*!< MON10 (Bitfield-Mask: 0x01) */ + #define R_RTC_RMONAR_MON1_Pos (0UL) /*!< MON1 (Bit 0) */ + #define R_RTC_RMONAR_MON1_Msk (0xfUL) /*!< MON1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= BCNT2AER ======================================================== */ + #define R_RTC_BCNT2AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT2AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ========================================================= RYRAR ========================================================= */ + #define R_RTC_RYRAR_YR10_Pos (4UL) /*!< YR10 (Bit 4) */ + #define R_RTC_RYRAR_YR10_Msk (0xf0UL) /*!< YR10 (Bitfield-Mask: 0x0f) */ + #define R_RTC_RYRAR_YR1_Pos (0UL) /*!< YR1 (Bit 0) */ + #define R_RTC_RYRAR_YR1_Msk (0xfUL) /*!< YR1 (Bitfield-Mask: 0x0f) */ +/* ======================================================= BCNT3AER ======================================================== */ + #define R_RTC_BCNT3AER_ENB_Pos (0UL) /*!< ENB (Bit 0) */ + #define R_RTC_BCNT3AER_ENB_Msk (0xffUL) /*!< ENB (Bitfield-Mask: 0xff) */ +/* ======================================================== RYRAREN ======================================================== */ + #define R_RTC_RYRAREN_ENB_Pos (7UL) /*!< ENB (Bit 7) */ + #define R_RTC_RYRAREN_ENB_Msk (0x80UL) /*!< ENB (Bitfield-Mask: 0x01) */ +/* ========================================================= RCR1 ========================================================== */ + #define R_RTC_RCR1_PES_Pos (4UL) /*!< PES (Bit 4) */ + #define R_RTC_RCR1_PES_Msk (0xf0UL) /*!< PES (Bitfield-Mask: 0x0f) */ + #define R_RTC_RCR1_RTCOS_Pos (3UL) /*!< RTCOS (Bit 3) */ + #define R_RTC_RCR1_RTCOS_Msk (0x8UL) /*!< RTCOS (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR1_PIE_Pos (2UL) /*!< PIE (Bit 2) */ + #define R_RTC_RCR1_PIE_Msk (0x4UL) /*!< PIE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR1_CIE_Pos (1UL) /*!< CIE (Bit 1) */ + #define R_RTC_RCR1_CIE_Msk (0x2UL) /*!< CIE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR1_AIE_Pos (0UL) /*!< AIE (Bit 0) */ + #define R_RTC_RCR1_AIE_Msk (0x1UL) /*!< AIE (Bitfield-Mask: 0x01) */ +/* ========================================================= RCR2 ========================================================== */ + #define R_RTC_RCR2_CNTMD_Pos (7UL) /*!< CNTMD (Bit 7) */ + #define R_RTC_RCR2_CNTMD_Msk (0x80UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_HR24_Pos (6UL) /*!< HR24 (Bit 6) */ + #define R_RTC_RCR2_HR24_Msk (0x40UL) /*!< HR24 (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_AADJP_Pos (5UL) /*!< AADJP (Bit 5) */ + #define R_RTC_RCR2_AADJP_Msk (0x20UL) /*!< AADJP (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_AADJE_Pos (4UL) /*!< AADJE (Bit 4) */ + #define R_RTC_RCR2_AADJE_Msk (0x10UL) /*!< AADJE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_RTCOE_Pos (3UL) /*!< RTCOE (Bit 3) */ + #define R_RTC_RCR2_RTCOE_Msk (0x8UL) /*!< RTCOE (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_ADJ30_Pos (2UL) /*!< ADJ30 (Bit 2) */ + #define R_RTC_RCR2_ADJ30_Msk (0x4UL) /*!< ADJ30 (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_RESET_Pos (1UL) /*!< RESET (Bit 1) */ + #define R_RTC_RCR2_RESET_Msk (0x2UL) /*!< RESET (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR2_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_RTC_RCR2_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ========================================================= RCR4 ========================================================== */ + #define R_RTC_RCR4_RCKSEL_Pos (0UL) /*!< RCKSEL (Bit 0) */ + #define R_RTC_RCR4_RCKSEL_Msk (0x1UL) /*!< RCKSEL (Bitfield-Mask: 0x01) */ + #define R_RTC_RCR4_ROPSEL_Pos (7UL) /*!< ROPSEL (Bit 7) */ + #define R_RTC_RCR4_ROPSEL_Msk (0x80UL) /*!< ROPSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= RFRH ========================================================== */ + #define R_RTC_RFRH_RFC16_Pos (0UL) /*!< RFC16 (Bit 0) */ + #define R_RTC_RFRH_RFC16_Msk (0x1UL) /*!< RFC16 (Bitfield-Mask: 0x01) */ +/* ========================================================= RFRL ========================================================== */ + #define R_RTC_RFRL_RFC_Pos (0UL) /*!< RFC (Bit 0) */ + #define R_RTC_RFRL_RFC_Msk (0xffffUL) /*!< RFC (Bitfield-Mask: 0xffff) */ +/* ========================================================= RADJ ========================================================== */ + #define R_RTC_RADJ_PMADJ_Pos (6UL) /*!< PMADJ (Bit 6) */ + #define R_RTC_RADJ_PMADJ_Msk (0xc0UL) /*!< PMADJ (Bitfield-Mask: 0x03) */ + #define R_RTC_RADJ_ADJ_Pos (0UL) /*!< ADJ (Bit 0) */ + #define R_RTC_RADJ_ADJ_Msk (0x3fUL) /*!< ADJ (Bitfield-Mask: 0x3f) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== SMR ========================================================== */ + #define R_SCI0_SMR_CM_Pos (7UL) /*!< CM (Bit 7) */ + #define R_SCI0_SMR_CM_Msk (0x80UL) /*!< CM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_CHR_Pos (6UL) /*!< CHR (Bit 6) */ + #define R_SCI0_SMR_CHR_Msk (0x40UL) /*!< CHR (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_PE_Pos (5UL) /*!< PE (Bit 5) */ + #define R_SCI0_SMR_PE_Msk (0x20UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_PM_Pos (4UL) /*!< PM (Bit 4) */ + #define R_SCI0_SMR_PM_Msk (0x10UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_STOP_Pos (3UL) /*!< STOP (Bit 3) */ + #define R_SCI0_SMR_STOP_Msk (0x8UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_MP_Pos (2UL) /*!< MP (Bit 2) */ + #define R_SCI0_SMR_MP_Msk (0x4UL) /*!< MP (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_SCI0_SMR_CKS_Msk (0x3UL) /*!< CKS (Bitfield-Mask: 0x03) */ +/* ======================================================= SMR_SMCI ======================================================== */ + #define R_SCI0_SMR_SMCI_GM_Pos (7UL) /*!< GM (Bit 7) */ + #define R_SCI0_SMR_SMCI_GM_Msk (0x80UL) /*!< GM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_BLK_Pos (6UL) /*!< BLK (Bit 6) */ + #define R_SCI0_SMR_SMCI_BLK_Msk (0x40UL) /*!< BLK (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_PE_Pos (5UL) /*!< PE (Bit 5) */ + #define R_SCI0_SMR_SMCI_PE_Msk (0x20UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_PM_Pos (4UL) /*!< PM (Bit 4) */ + #define R_SCI0_SMR_SMCI_PM_Msk (0x10UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SMR_SMCI_BCP_Pos (2UL) /*!< BCP (Bit 2) */ + #define R_SCI0_SMR_SMCI_BCP_Msk (0xcUL) /*!< BCP (Bitfield-Mask: 0x03) */ + #define R_SCI0_SMR_SMCI_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_SCI0_SMR_SMCI_CKS_Msk (0x3UL) /*!< CKS (Bitfield-Mask: 0x03) */ +/* ========================================================== BRR ========================================================== */ + #define R_SCI0_BRR_BRR_Pos (0UL) /*!< BRR (Bit 0) */ + #define R_SCI0_BRR_BRR_Msk (0xffUL) /*!< BRR (Bitfield-Mask: 0xff) */ +/* ========================================================== SCR ========================================================== */ + #define R_SCI0_SCR_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_SCI0_SCR_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_RIE_Pos (6UL) /*!< RIE (Bit 6) */ + #define R_SCI0_SCR_RIE_Msk (0x40UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_TE_Pos (5UL) /*!< TE (Bit 5) */ + #define R_SCI0_SCR_TE_Msk (0x20UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_RE_Pos (4UL) /*!< RE (Bit 4) */ + #define R_SCI0_SCR_RE_Msk (0x10UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_MPIE_Pos (3UL) /*!< MPIE (Bit 3) */ + #define R_SCI0_SCR_MPIE_Msk (0x8UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_TEIE_Pos (2UL) /*!< TEIE (Bit 2) */ + #define R_SCI0_SCR_TEIE_Msk (0x4UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_CKE_Pos (0UL) /*!< CKE (Bit 0) */ + #define R_SCI0_SCR_CKE_Msk (0x3UL) /*!< CKE (Bitfield-Mask: 0x03) */ +/* ======================================================= SCR_SMCI ======================================================== */ + #define R_SCI0_SCR_SMCI_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_SCI0_SCR_SMCI_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_RIE_Pos (6UL) /*!< RIE (Bit 6) */ + #define R_SCI0_SCR_SMCI_RIE_Msk (0x40UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_TE_Pos (5UL) /*!< TE (Bit 5) */ + #define R_SCI0_SCR_SMCI_TE_Msk (0x20UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_RE_Pos (4UL) /*!< RE (Bit 4) */ + #define R_SCI0_SCR_SMCI_RE_Msk (0x10UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_MPIE_Pos (3UL) /*!< MPIE (Bit 3) */ + #define R_SCI0_SCR_SMCI_MPIE_Msk (0x8UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_TEIE_Pos (2UL) /*!< TEIE (Bit 2) */ + #define R_SCI0_SCR_SMCI_TEIE_Msk (0x4UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCR_SMCI_CKE_Pos (0UL) /*!< CKE (Bit 0) */ + #define R_SCI0_SCR_SMCI_CKE_Msk (0x3UL) /*!< CKE (Bitfield-Mask: 0x03) */ +/* ========================================================== TDR ========================================================== */ + #define R_SCI0_TDR_TDR_Pos (0UL) /*!< TDR (Bit 0) */ + #define R_SCI0_TDR_TDR_Msk (0xffUL) /*!< TDR (Bitfield-Mask: 0xff) */ +/* ========================================================== SSR ========================================================== */ + #define R_SCI0_SSR_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_SCI0_SSR_TDRE_Msk (0x80UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_RDRF_Pos (6UL) /*!< RDRF (Bit 6) */ + #define R_SCI0_SSR_RDRF_Msk (0x40UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_SSR_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FER_Pos (4UL) /*!< FER (Bit 4) */ + #define R_SCI0_SSR_FER_Msk (0x10UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_SSR_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_TEND_Pos (2UL) /*!< TEND (Bit 2) */ + #define R_SCI0_SSR_TEND_Msk (0x4UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_MPB_Pos (1UL) /*!< MPB (Bit 1) */ + #define R_SCI0_SSR_MPB_Msk (0x2UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_MPBT_Pos (0UL) /*!< MPBT (Bit 0) */ + #define R_SCI0_SSR_MPBT_Msk (0x1UL) /*!< MPBT (Bitfield-Mask: 0x01) */ +/* ======================================================= SSR_FIFO ======================================================== */ + #define R_SCI0_SSR_FIFO_TDFE_Pos (7UL) /*!< TDFE (Bit 7) */ + #define R_SCI0_SSR_FIFO_TDFE_Msk (0x80UL) /*!< TDFE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_RDF_Pos (6UL) /*!< RDF (Bit 6) */ + #define R_SCI0_SSR_FIFO_RDF_Msk (0x40UL) /*!< RDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_SSR_FIFO_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_FER_Pos (4UL) /*!< FER (Bit 4) */ + #define R_SCI0_SSR_FIFO_FER_Msk (0x10UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_SSR_FIFO_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_TEND_Pos (2UL) /*!< TEND (Bit 2) */ + #define R_SCI0_SSR_FIFO_TEND_Msk (0x4UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_FIFO_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_SCI0_SSR_FIFO_DR_Msk (0x1UL) /*!< DR (Bitfield-Mask: 0x01) */ +/* ======================================================= SSR_SMCI ======================================================== */ + #define R_SCI0_SSR_SMCI_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_SCI0_SSR_SMCI_TDRE_Msk (0x80UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_RDRF_Pos (6UL) /*!< RDRF (Bit 6) */ + #define R_SCI0_SSR_SMCI_RDRF_Msk (0x40UL) /*!< RDRF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_SSR_SMCI_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_ERS_Pos (4UL) /*!< ERS (Bit 4) */ + #define R_SCI0_SSR_SMCI_ERS_Msk (0x10UL) /*!< ERS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_SSR_SMCI_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_TEND_Pos (2UL) /*!< TEND (Bit 2) */ + #define R_SCI0_SSR_SMCI_TEND_Msk (0x4UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_MPB_Pos (1UL) /*!< MPB (Bit 1) */ + #define R_SCI0_SSR_SMCI_MPB_Msk (0x2UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_SSR_SMCI_MPBT_Pos (0UL) /*!< MPBT (Bit 0) */ + #define R_SCI0_SSR_SMCI_MPBT_Msk (0x1UL) /*!< MPBT (Bitfield-Mask: 0x01) */ +/* ========================================================== RDR ========================================================== */ + #define R_SCI0_RDR_RDR_Pos (0UL) /*!< RDR (Bit 0) */ + #define R_SCI0_RDR_RDR_Msk (0xffUL) /*!< RDR (Bitfield-Mask: 0xff) */ +/* ========================================================= SCMR ========================================================== */ + #define R_SCI0_SCMR_BCP2_Pos (7UL) /*!< BCP2 (Bit 7) */ + #define R_SCI0_SCMR_BCP2_Msk (0x80UL) /*!< BCP2 (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_CHR1_Pos (4UL) /*!< CHR1 (Bit 4) */ + #define R_SCI0_SCMR_CHR1_Msk (0x10UL) /*!< CHR1 (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_SDIR_Pos (3UL) /*!< SDIR (Bit 3) */ + #define R_SCI0_SCMR_SDIR_Msk (0x8UL) /*!< SDIR (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_SINV_Pos (2UL) /*!< SINV (Bit 2) */ + #define R_SCI0_SCMR_SINV_Msk (0x4UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_SCMR_SMIF_Pos (0UL) /*!< SMIF (Bit 0) */ + #define R_SCI0_SCMR_SMIF_Msk (0x1UL) /*!< SMIF (Bitfield-Mask: 0x01) */ +/* ========================================================= SEMR ========================================================== */ + #define R_SCI0_SEMR_RXDESEL_Pos (7UL) /*!< RXDESEL (Bit 7) */ + #define R_SCI0_SEMR_RXDESEL_Msk (0x80UL) /*!< RXDESEL (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_BGDM_Pos (6UL) /*!< BGDM (Bit 6) */ + #define R_SCI0_SEMR_BGDM_Msk (0x40UL) /*!< BGDM (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_NFEN_Pos (5UL) /*!< NFEN (Bit 5) */ + #define R_SCI0_SEMR_NFEN_Msk (0x20UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_ABCS_Pos (4UL) /*!< ABCS (Bit 4) */ + #define R_SCI0_SEMR_ABCS_Msk (0x10UL) /*!< ABCS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_ABCSE_Pos (3UL) /*!< ABCSE (Bit 3) */ + #define R_SCI0_SEMR_ABCSE_Msk (0x8UL) /*!< ABCSE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_BRME_Pos (2UL) /*!< BRME (Bit 2) */ + #define R_SCI0_SEMR_BRME_Msk (0x4UL) /*!< BRME (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_PADIS_Pos (1UL) /*!< PADIS (Bit 1) */ + #define R_SCI0_SEMR_PADIS_Msk (0x2UL) /*!< PADIS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SEMR_ACS0_Pos (0UL) /*!< ACS0 (Bit 0) */ + #define R_SCI0_SEMR_ACS0_Msk (0x1UL) /*!< ACS0 (Bitfield-Mask: 0x01) */ +/* ========================================================= SNFR ========================================================== */ + #define R_SCI0_SNFR_NFCS_Pos (0UL) /*!< NFCS (Bit 0) */ + #define R_SCI0_SNFR_NFCS_Msk (0x7UL) /*!< NFCS (Bitfield-Mask: 0x07) */ +/* ========================================================= SIMR1 ========================================================= */ + #define R_SCI0_SIMR1_IICDL_Pos (3UL) /*!< IICDL (Bit 3) */ + #define R_SCI0_SIMR1_IICDL_Msk (0xf8UL) /*!< IICDL (Bitfield-Mask: 0x1f) */ + #define R_SCI0_SIMR1_IICM_Pos (0UL) /*!< IICM (Bit 0) */ + #define R_SCI0_SIMR1_IICM_Msk (0x1UL) /*!< IICM (Bitfield-Mask: 0x01) */ +/* ========================================================= SIMR2 ========================================================= */ + #define R_SCI0_SIMR2_IICACKT_Pos (5UL) /*!< IICACKT (Bit 5) */ + #define R_SCI0_SIMR2_IICACKT_Msk (0x20UL) /*!< IICACKT (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR2_IICCSC_Pos (1UL) /*!< IICCSC (Bit 1) */ + #define R_SCI0_SIMR2_IICCSC_Msk (0x2UL) /*!< IICCSC (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR2_IICINTM_Pos (0UL) /*!< IICINTM (Bit 0) */ + #define R_SCI0_SIMR2_IICINTM_Msk (0x1UL) /*!< IICINTM (Bitfield-Mask: 0x01) */ +/* ========================================================= SIMR3 ========================================================= */ + #define R_SCI0_SIMR3_IICSCLS_Pos (6UL) /*!< IICSCLS (Bit 6) */ + #define R_SCI0_SIMR3_IICSCLS_Msk (0xc0UL) /*!< IICSCLS (Bitfield-Mask: 0x03) */ + #define R_SCI0_SIMR3_IICSDAS_Pos (4UL) /*!< IICSDAS (Bit 4) */ + #define R_SCI0_SIMR3_IICSDAS_Msk (0x30UL) /*!< IICSDAS (Bitfield-Mask: 0x03) */ + #define R_SCI0_SIMR3_IICSTIF_Pos (3UL) /*!< IICSTIF (Bit 3) */ + #define R_SCI0_SIMR3_IICSTIF_Msk (0x8UL) /*!< IICSTIF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR3_IICSTPREQ_Pos (2UL) /*!< IICSTPREQ (Bit 2) */ + #define R_SCI0_SIMR3_IICSTPREQ_Msk (0x4UL) /*!< IICSTPREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR3_IICRSTAREQ_Pos (1UL) /*!< IICRSTAREQ (Bit 1) */ + #define R_SCI0_SIMR3_IICRSTAREQ_Msk (0x2UL) /*!< IICRSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_SIMR3_IICSTAREQ_Pos (0UL) /*!< IICSTAREQ (Bit 0) */ + #define R_SCI0_SIMR3_IICSTAREQ_Msk (0x1UL) /*!< IICSTAREQ (Bitfield-Mask: 0x01) */ +/* ========================================================= SISR ========================================================== */ + #define R_SCI0_SISR_IICACKR_Pos (0UL) /*!< IICACKR (Bit 0) */ + #define R_SCI0_SISR_IICACKR_Msk (0x1UL) /*!< IICACKR (Bitfield-Mask: 0x01) */ +/* ========================================================= SPMR ========================================================== */ + #define R_SCI0_SPMR_CKPH_Pos (7UL) /*!< CKPH (Bit 7) */ + #define R_SCI0_SPMR_CKPH_Msk (0x80UL) /*!< CKPH (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_CKPOL_Pos (6UL) /*!< CKPOL (Bit 6) */ + #define R_SCI0_SPMR_CKPOL_Msk (0x40UL) /*!< CKPOL (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_MFF_Pos (4UL) /*!< MFF (Bit 4) */ + #define R_SCI0_SPMR_MFF_Msk (0x10UL) /*!< MFF (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_CSTPEN_Pos (3UL) /*!< CSTPEN (Bit 3) */ + #define R_SCI0_SPMR_CSTPEN_Msk (0x8UL) /*!< CSTPEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_MSS_Pos (2UL) /*!< MSS (Bit 2) */ + #define R_SCI0_SPMR_MSS_Msk (0x4UL) /*!< MSS (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_CTSE_Pos (1UL) /*!< CTSE (Bit 1) */ + #define R_SCI0_SPMR_CTSE_Msk (0x2UL) /*!< CTSE (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPMR_SSE_Pos (0UL) /*!< SSE (Bit 0) */ + #define R_SCI0_SPMR_SSE_Msk (0x1UL) /*!< SSE (Bitfield-Mask: 0x01) */ +/* ========================================================= TDRHL ========================================================= */ + #define R_SCI0_TDRHL_TDRHL_Pos (0UL) /*!< TDRHL (Bit 0) */ + #define R_SCI0_TDRHL_TDRHL_Msk (0xffffUL) /*!< TDRHL (Bitfield-Mask: 0xffff) */ +/* ======================================================== FTDRHL ========================================================= */ + #define R_SCI0_FTDRHL_MPBT_Pos (9UL) /*!< MPBT (Bit 9) */ + #define R_SCI0_FTDRHL_MPBT_Msk (0x200UL) /*!< MPBT (Bitfield-Mask: 0x01) */ + #define R_SCI0_FTDRHL_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI0_FTDRHL_TDAT_Msk (0x1ffUL) /*!< TDAT (Bitfield-Mask: 0x1ff) */ +/* ========================================================= FTDRH ========================================================= */ + #define R_SCI0_FTDRH_MPBT_Pos (1UL) /*!< MPBT (Bit 1) */ + #define R_SCI0_FTDRH_MPBT_Msk (0x2UL) /*!< MPBT (Bitfield-Mask: 0x01) */ + #define R_SCI0_FTDRH_TDATH_Pos (0UL) /*!< TDATH (Bit 0) */ + #define R_SCI0_FTDRH_TDATH_Msk (0x1UL) /*!< TDATH (Bitfield-Mask: 0x01) */ +/* ========================================================= FTDRL ========================================================= */ + #define R_SCI0_FTDRL_TDATL_Pos (0UL) /*!< TDATL (Bit 0) */ + #define R_SCI0_FTDRL_TDATL_Msk (0xffUL) /*!< TDATL (Bitfield-Mask: 0xff) */ +/* ========================================================= RDRHL ========================================================= */ + #define R_SCI0_RDRHL_RDRHL_Pos (0UL) /*!< RDRHL (Bit 0) */ + #define R_SCI0_RDRHL_RDRHL_Msk (0xffffUL) /*!< RDRHL (Bitfield-Mask: 0xffff) */ +/* ======================================================== FRDRHL ========================================================= */ + #define R_SCI0_FRDRHL_RDF_Pos (14UL) /*!< RDF (Bit 14) */ + #define R_SCI0_FRDRHL_RDF_Msk (0x4000UL) /*!< RDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_ORER_Pos (13UL) /*!< ORER (Bit 13) */ + #define R_SCI0_FRDRHL_ORER_Msk (0x2000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_FER_Pos (12UL) /*!< FER (Bit 12) */ + #define R_SCI0_FRDRHL_FER_Msk (0x1000UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_PER_Pos (11UL) /*!< PER (Bit 11) */ + #define R_SCI0_FRDRHL_PER_Msk (0x800UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_DR_Pos (10UL) /*!< DR (Bit 10) */ + #define R_SCI0_FRDRHL_DR_Msk (0x400UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_MPB_Pos (9UL) /*!< MPB (Bit 9) */ + #define R_SCI0_FRDRHL_MPB_Msk (0x200UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRHL_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI0_FRDRHL_RDAT_Msk (0x1ffUL) /*!< RDAT (Bitfield-Mask: 0x1ff) */ +/* ========================================================= FRDRH ========================================================= */ + #define R_SCI0_FRDRH_RDF_Pos (6UL) /*!< RDF (Bit 6) */ + #define R_SCI0_FRDRH_RDF_Msk (0x40UL) /*!< RDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_ORER_Pos (5UL) /*!< ORER (Bit 5) */ + #define R_SCI0_FRDRH_ORER_Msk (0x20UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_FER_Pos (4UL) /*!< FER (Bit 4) */ + #define R_SCI0_FRDRH_FER_Msk (0x10UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_PER_Pos (3UL) /*!< PER (Bit 3) */ + #define R_SCI0_FRDRH_PER_Msk (0x8UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_DR_Pos (2UL) /*!< DR (Bit 2) */ + #define R_SCI0_FRDRH_DR_Msk (0x4UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_MPB_Pos (1UL) /*!< MPB (Bit 1) */ + #define R_SCI0_FRDRH_MPB_Msk (0x2UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRDRH_RDATH_Pos (0UL) /*!< RDATH (Bit 0) */ + #define R_SCI0_FRDRH_RDATH_Msk (0x1UL) /*!< RDATH (Bitfield-Mask: 0x01) */ +/* ========================================================= FRDRL ========================================================= */ + #define R_SCI0_FRDRL_RDATL_Pos (0UL) /*!< RDATL (Bit 0) */ + #define R_SCI0_FRDRL_RDATL_Msk (0xffUL) /*!< RDATL (Bitfield-Mask: 0xff) */ +/* ========================================================= MDDR ========================================================== */ + #define R_SCI0_MDDR_MDDR_Pos (0UL) /*!< MDDR (Bit 0) */ + #define R_SCI0_MDDR_MDDR_Msk (0xffUL) /*!< MDDR (Bitfield-Mask: 0xff) */ +/* ========================================================= DCCR ========================================================== */ + #define R_SCI0_DCCR_DCME_Pos (7UL) /*!< DCME (Bit 7) */ + #define R_SCI0_DCCR_DCME_Msk (0x80UL) /*!< DCME (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_IDSEL_Pos (6UL) /*!< IDSEL (Bit 6) */ + #define R_SCI0_DCCR_IDSEL_Msk (0x40UL) /*!< IDSEL (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_DFER_Pos (4UL) /*!< DFER (Bit 4) */ + #define R_SCI0_DCCR_DFER_Msk (0x10UL) /*!< DFER (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_DPER_Pos (3UL) /*!< DPER (Bit 3) */ + #define R_SCI0_DCCR_DPER_Msk (0x8UL) /*!< DPER (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCCR_DCMF_Pos (0UL) /*!< DCMF (Bit 0) */ + #define R_SCI0_DCCR_DCMF_Msk (0x1UL) /*!< DCMF (Bitfield-Mask: 0x01) */ +/* ========================================================== FCR ========================================================== */ + #define R_SCI0_FCR_RSTRG_Pos (12UL) /*!< RSTRG (Bit 12) */ + #define R_SCI0_FCR_RSTRG_Msk (0xf000UL) /*!< RSTRG (Bitfield-Mask: 0x0f) */ + #define R_SCI0_FCR_RTRG_Pos (8UL) /*!< RTRG (Bit 8) */ + #define R_SCI0_FCR_RTRG_Msk (0xf00UL) /*!< RTRG (Bitfield-Mask: 0x0f) */ + #define R_SCI0_FCR_TTRG_Pos (4UL) /*!< TTRG (Bit 4) */ + #define R_SCI0_FCR_TTRG_Msk (0xf0UL) /*!< TTRG (Bitfield-Mask: 0x0f) */ + #define R_SCI0_FCR_DRES_Pos (3UL) /*!< DRES (Bit 3) */ + #define R_SCI0_FCR_DRES_Msk (0x8UL) /*!< DRES (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_TFRST_Pos (2UL) /*!< TFRST (Bit 2) */ + #define R_SCI0_FCR_TFRST_Msk (0x4UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_RFRST_Pos (1UL) /*!< RFRST (Bit 1) */ + #define R_SCI0_FCR_RFRST_Msk (0x2UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_FM_Pos (0UL) /*!< FM (Bit 0) */ + #define R_SCI0_FCR_FM_Msk (0x1UL) /*!< FM (Bitfield-Mask: 0x01) */ +/* ========================================================== FDR ========================================================== */ + #define R_SCI0_FDR_T_Pos (8UL) /*!< T (Bit 8) */ + #define R_SCI0_FDR_T_Msk (0x1f00UL) /*!< T (Bitfield-Mask: 0x1f) */ + #define R_SCI0_FDR_R_Pos (0UL) /*!< R (Bit 0) */ + #define R_SCI0_FDR_R_Msk (0x1fUL) /*!< R (Bitfield-Mask: 0x1f) */ +/* ========================================================== LSR ========================================================== */ + #define R_SCI0_LSR_PNUM_Pos (8UL) /*!< PNUM (Bit 8) */ + #define R_SCI0_LSR_PNUM_Msk (0x1f00UL) /*!< PNUM (Bitfield-Mask: 0x1f) */ + #define R_SCI0_LSR_FNUM_Pos (2UL) /*!< FNUM (Bit 2) */ + #define R_SCI0_LSR_FNUM_Msk (0x7cUL) /*!< FNUM (Bitfield-Mask: 0x1f) */ + #define R_SCI0_LSR_ORER_Pos (0UL) /*!< ORER (Bit 0) */ + #define R_SCI0_LSR_ORER_Msk (0x1UL) /*!< ORER (Bitfield-Mask: 0x01) */ +/* ========================================================== CDR ========================================================== */ + #define R_SCI0_CDR_CMPD_Pos (0UL) /*!< CMPD (Bit 0) */ + #define R_SCI0_CDR_CMPD_Msk (0x1ffUL) /*!< CMPD (Bitfield-Mask: 0x1ff) */ +/* ========================================================= SPTR ========================================================== */ + #define R_SCI0_SPTR_SPB2IO_Pos (2UL) /*!< SPB2IO (Bit 2) */ + #define R_SCI0_SPTR_SPB2IO_Msk (0x4UL) /*!< SPB2IO (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_SPB2DT_Pos (1UL) /*!< SPB2DT (Bit 1) */ + #define R_SCI0_SPTR_SPB2DT_Msk (0x2UL) /*!< SPB2DT (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_RXDMON_Pos (0UL) /*!< RXDMON (Bit 0) */ + #define R_SCI0_SPTR_RXDMON_Msk (0x1UL) /*!< RXDMON (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_RINV_Pos (4UL) /*!< RINV (Bit 4) */ + #define R_SCI0_SPTR_RINV_Msk (0x10UL) /*!< RINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_TINV_Pos (5UL) /*!< TINV (Bit 5) */ + #define R_SCI0_SPTR_TINV_Msk (0x20UL) /*!< TINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_ASEN_Pos (6UL) /*!< ASEN (Bit 6) */ + #define R_SCI0_SPTR_ASEN_Msk (0x40UL) /*!< ASEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_SPTR_ATEN_Pos (7UL) /*!< ATEN (Bit 7) */ + #define R_SCI0_SPTR_ATEN_Msk (0x80UL) /*!< ATEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ACTR ========================================================== */ + #define R_SCI0_ACTR_AST_Pos (0UL) /*!< AST (Bit 0) */ + #define R_SCI0_ACTR_AST_Msk (0x7UL) /*!< AST (Bitfield-Mask: 0x07) */ + #define R_SCI0_ACTR_AJD_Pos (3UL) /*!< AJD (Bit 3) */ + #define R_SCI0_ACTR_AJD_Msk (0x8UL) /*!< AJD (Bitfield-Mask: 0x01) */ + #define R_SCI0_ACTR_ATT_Pos (4UL) /*!< ATT (Bit 4) */ + #define R_SCI0_ACTR_ATT_Msk (0x70UL) /*!< ATT (Bitfield-Mask: 0x07) */ + #define R_SCI0_ACTR_AET_Pos (7UL) /*!< AET (Bit 7) */ + #define R_SCI0_ACTR_AET_Msk (0x80UL) /*!< AET (Bitfield-Mask: 0x01) */ +/* ========================================================= ESMER ========================================================= */ + #define R_SCI0_ESMER_ESME_Pos (0UL) /*!< ESME (Bit 0) */ + #define R_SCI0_ESMER_ESME_Msk (0x1UL) /*!< ESME (Bitfield-Mask: 0x01) */ +/* ========================================================== CR0 ========================================================== */ + #define R_SCI0_CR0_SFSF_Pos (1UL) /*!< SFSF (Bit 1) */ + #define R_SCI0_CR0_SFSF_Msk (0x2UL) /*!< SFSF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR0_RXDSF_Pos (2UL) /*!< RXDSF (Bit 2) */ + #define R_SCI0_CR0_RXDSF_Msk (0x4UL) /*!< RXDSF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR0_BRME_Pos (3UL) /*!< BRME (Bit 3) */ + #define R_SCI0_CR0_BRME_Msk (0x8UL) /*!< BRME (Bitfield-Mask: 0x01) */ +/* ========================================================== CR1 ========================================================== */ + #define R_SCI0_CR1_BFE_Pos (0UL) /*!< BFE (Bit 0) */ + #define R_SCI0_CR1_BFE_Msk (0x1UL) /*!< BFE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR1_CF0RE_Pos (1UL) /*!< CF0RE (Bit 1) */ + #define R_SCI0_CR1_CF0RE_Msk (0x2UL) /*!< CF0RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR1_CF1DS_Pos (2UL) /*!< CF1DS (Bit 2) */ + #define R_SCI0_CR1_CF1DS_Msk (0xcUL) /*!< CF1DS (Bitfield-Mask: 0x03) */ + #define R_SCI0_CR1_PIBE_Pos (4UL) /*!< PIBE (Bit 4) */ + #define R_SCI0_CR1_PIBE_Msk (0x10UL) /*!< PIBE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CR1_PIBS_Pos (5UL) /*!< PIBS (Bit 5) */ + #define R_SCI0_CR1_PIBS_Msk (0xe0UL) /*!< PIBS (Bitfield-Mask: 0x07) */ +/* ========================================================== CR2 ========================================================== */ + #define R_SCI0_CR2_DFCS_Pos (0UL) /*!< DFCS (Bit 0) */ + #define R_SCI0_CR2_DFCS_Msk (0x7UL) /*!< DFCS (Bitfield-Mask: 0x07) */ + #define R_SCI0_CR2_BCCS_Pos (4UL) /*!< BCCS (Bit 4) */ + #define R_SCI0_CR2_BCCS_Msk (0x30UL) /*!< BCCS (Bitfield-Mask: 0x03) */ + #define R_SCI0_CR2_RTS_Pos (6UL) /*!< RTS (Bit 6) */ + #define R_SCI0_CR2_RTS_Msk (0xc0UL) /*!< RTS (Bitfield-Mask: 0x03) */ +/* ========================================================== CR3 ========================================================== */ + #define R_SCI0_CR3_SDST_Pos (0UL) /*!< SDST (Bit 0) */ + #define R_SCI0_CR3_SDST_Msk (0x1UL) /*!< SDST (Bitfield-Mask: 0x01) */ +/* ========================================================== PCR ========================================================== */ + #define R_SCI0_PCR_TXDXPS_Pos (0UL) /*!< TXDXPS (Bit 0) */ + #define R_SCI0_PCR_TXDXPS_Msk (0x1UL) /*!< TXDXPS (Bitfield-Mask: 0x01) */ + #define R_SCI0_PCR_RXDXPS_Pos (1UL) /*!< RXDXPS (Bit 1) */ + #define R_SCI0_PCR_RXDXPS_Msk (0x2UL) /*!< RXDXPS (Bitfield-Mask: 0x01) */ + #define R_SCI0_PCR_SHARPS_Pos (4UL) /*!< SHARPS (Bit 4) */ + #define R_SCI0_PCR_SHARPS_Msk (0x10UL) /*!< SHARPS (Bitfield-Mask: 0x01) */ +/* ========================================================== ICR ========================================================== */ + #define R_SCI0_ICR_BFDIE_Pos (0UL) /*!< BFDIE (Bit 0) */ + #define R_SCI0_ICR_BFDIE_Msk (0x1UL) /*!< BFDIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_CF0MIE_Pos (1UL) /*!< CF0MIE (Bit 1) */ + #define R_SCI0_ICR_CF0MIE_Msk (0x2UL) /*!< CF0MIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_CF1MIE_Pos (2UL) /*!< CF1MIE (Bit 2) */ + #define R_SCI0_ICR_CF1MIE_Msk (0x4UL) /*!< CF1MIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_PIBDIE_Pos (3UL) /*!< PIBDIE (Bit 3) */ + #define R_SCI0_ICR_PIBDIE_Msk (0x8UL) /*!< PIBDIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_BCDIE_Pos (4UL) /*!< BCDIE (Bit 4) */ + #define R_SCI0_ICR_BCDIE_Msk (0x10UL) /*!< BCDIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_AEDIE_Pos (5UL) /*!< AEDIE (Bit 5) */ + #define R_SCI0_ICR_AEDIE_Msk (0x20UL) /*!< AEDIE (Bitfield-Mask: 0x01) */ +/* ========================================================== STR ========================================================== */ + #define R_SCI0_STR_BFDF_Pos (0UL) /*!< BFDF (Bit 0) */ + #define R_SCI0_STR_BFDF_Msk (0x1UL) /*!< BFDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_CF0MF_Pos (1UL) /*!< CF0MF (Bit 1) */ + #define R_SCI0_STR_CF0MF_Msk (0x2UL) /*!< CF0MF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_CF1MF_Pos (2UL) /*!< CF1MF (Bit 2) */ + #define R_SCI0_STR_CF1MF_Msk (0x4UL) /*!< CF1MF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_PIBDF_Pos (3UL) /*!< PIBDF (Bit 3) */ + #define R_SCI0_STR_PIBDF_Msk (0x8UL) /*!< PIBDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_BCDF_Pos (4UL) /*!< BCDF (Bit 4) */ + #define R_SCI0_STR_BCDF_Msk (0x10UL) /*!< BCDF (Bitfield-Mask: 0x01) */ + #define R_SCI0_STR_AEDF_Pos (5UL) /*!< AEDF (Bit 5) */ + #define R_SCI0_STR_AEDF_Msk (0x20UL) /*!< AEDF (Bitfield-Mask: 0x01) */ +/* ========================================================= STCR ========================================================== */ + #define R_SCI0_STCR_BFDCL_Pos (0UL) /*!< BFDCL (Bit 0) */ + #define R_SCI0_STCR_BFDCL_Msk (0x1UL) /*!< BFDCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_CF0MCL_Pos (1UL) /*!< CF0MCL (Bit 1) */ + #define R_SCI0_STCR_CF0MCL_Msk (0x2UL) /*!< CF0MCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_CF1MCL_Pos (2UL) /*!< CF1MCL (Bit 2) */ + #define R_SCI0_STCR_CF1MCL_Msk (0x4UL) /*!< CF1MCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_PIBDCL_Pos (3UL) /*!< PIBDCL (Bit 3) */ + #define R_SCI0_STCR_PIBDCL_Msk (0x8UL) /*!< PIBDCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_BCDCL_Pos (4UL) /*!< BCDCL (Bit 4) */ + #define R_SCI0_STCR_BCDCL_Msk (0x10UL) /*!< BCDCL (Bitfield-Mask: 0x01) */ + #define R_SCI0_STCR_AEDCL_Pos (5UL) /*!< AEDCL (Bit 5) */ + #define R_SCI0_STCR_AEDCL_Msk (0x20UL) /*!< AEDCL (Bitfield-Mask: 0x01) */ +/* ========================================================= CF0DR ========================================================= */ +/* ========================================================= CF0CR ========================================================= */ + #define R_SCI0_CF0CR_CF0CE0_Pos (0UL) /*!< CF0CE0 (Bit 0) */ + #define R_SCI0_CF0CR_CF0CE0_Msk (0x1UL) /*!< CF0CE0 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE1_Pos (1UL) /*!< CF0CE1 (Bit 1) */ + #define R_SCI0_CF0CR_CF0CE1_Msk (0x2UL) /*!< CF0CE1 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE2_Pos (2UL) /*!< CF0CE2 (Bit 2) */ + #define R_SCI0_CF0CR_CF0CE2_Msk (0x4UL) /*!< CF0CE2 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE3_Pos (3UL) /*!< CF0CE3 (Bit 3) */ + #define R_SCI0_CF0CR_CF0CE3_Msk (0x8UL) /*!< CF0CE3 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE4_Pos (4UL) /*!< CF0CE4 (Bit 4) */ + #define R_SCI0_CF0CR_CF0CE4_Msk (0x10UL) /*!< CF0CE4 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE5_Pos (5UL) /*!< CF0CE5 (Bit 5) */ + #define R_SCI0_CF0CR_CF0CE5_Msk (0x20UL) /*!< CF0CE5 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE6_Pos (6UL) /*!< CF0CE6 (Bit 6) */ + #define R_SCI0_CF0CR_CF0CE6_Msk (0x40UL) /*!< CF0CE6 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF0CR_CF0CE7_Pos (7UL) /*!< CF0CE7 (Bit 7) */ + #define R_SCI0_CF0CR_CF0CE7_Msk (0x80UL) /*!< CF0CE7 (Bitfield-Mask: 0x01) */ +/* ========================================================= CF0RR ========================================================= */ +/* ======================================================== PCF1DR ========================================================= */ +/* ======================================================== SCF1DR ========================================================= */ +/* ========================================================= CF1CR ========================================================= */ + #define R_SCI0_CF1CR_CF1CE0_Pos (0UL) /*!< CF1CE0 (Bit 0) */ + #define R_SCI0_CF1CR_CF1CE0_Msk (0x1UL) /*!< CF1CE0 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE1_Pos (1UL) /*!< CF1CE1 (Bit 1) */ + #define R_SCI0_CF1CR_CF1CE1_Msk (0x2UL) /*!< CF1CE1 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE2_Pos (2UL) /*!< CF1CE2 (Bit 2) */ + #define R_SCI0_CF1CR_CF1CE2_Msk (0x4UL) /*!< CF1CE2 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE3_Pos (3UL) /*!< CF1CE3 (Bit 3) */ + #define R_SCI0_CF1CR_CF1CE3_Msk (0x8UL) /*!< CF1CE3 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE4_Pos (4UL) /*!< CF1CE4 (Bit 4) */ + #define R_SCI0_CF1CR_CF1CE4_Msk (0x10UL) /*!< CF1CE4 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE5_Pos (5UL) /*!< CF1CE5 (Bit 5) */ + #define R_SCI0_CF1CR_CF1CE5_Msk (0x20UL) /*!< CF1CE5 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE6_Pos (6UL) /*!< CF1CE6 (Bit 6) */ + #define R_SCI0_CF1CR_CF1CE6_Msk (0x40UL) /*!< CF1CE6 (Bitfield-Mask: 0x01) */ + #define R_SCI0_CF1CR_CF1CE7_Pos (7UL) /*!< CF1CE7 (Bit 7) */ + #define R_SCI0_CF1CR_CF1CE7_Msk (0x80UL) /*!< CF1CE7 (Bitfield-Mask: 0x01) */ +/* ========================================================= CF1RR ========================================================= */ +/* ========================================================== TCR ========================================================== */ + #define R_SCI0_TCR_TCST_Pos (0UL) /*!< TCST (Bit 0) */ + #define R_SCI0_TCR_TCST_Msk (0x1UL) /*!< TCST (Bitfield-Mask: 0x01) */ +/* ========================================================== TMR ========================================================== */ + #define R_SCI0_TMR_TOMS_Pos (0UL) /*!< TOMS (Bit 0) */ + #define R_SCI0_TMR_TOMS_Msk (0x3UL) /*!< TOMS (Bitfield-Mask: 0x03) */ + #define R_SCI0_TMR_TWRC_Pos (3UL) /*!< TWRC (Bit 3) */ + #define R_SCI0_TMR_TWRC_Msk (0x8UL) /*!< TWRC (Bitfield-Mask: 0x01) */ + #define R_SCI0_TMR_TCSS_Pos (4UL) /*!< TCSS (Bit 4) */ + #define R_SCI0_TMR_TCSS_Msk (0x70UL) /*!< TCSS (Bitfield-Mask: 0x07) */ +/* ========================================================= TPRE ========================================================== */ +/* ========================================================= TCNT ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_SDHI0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SD_CMD ========================================================= */ + #define R_SDHI0_SD_CMD_CMD12AT_Pos (14UL) /*!< CMD12AT (Bit 14) */ + #define R_SDHI0_SD_CMD_CMD12AT_Msk (0xc000UL) /*!< CMD12AT (Bitfield-Mask: 0x03) */ + #define R_SDHI0_SD_CMD_TRSTP_Pos (13UL) /*!< TRSTP (Bit 13) */ + #define R_SDHI0_SD_CMD_TRSTP_Msk (0x2000UL) /*!< TRSTP (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CMD_CMDRW_Pos (12UL) /*!< CMDRW (Bit 12) */ + #define R_SDHI0_SD_CMD_CMDRW_Msk (0x1000UL) /*!< CMDRW (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CMD_CMDTP_Pos (11UL) /*!< CMDTP (Bit 11) */ + #define R_SDHI0_SD_CMD_CMDTP_Msk (0x800UL) /*!< CMDTP (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CMD_RSPTP_Pos (8UL) /*!< RSPTP (Bit 8) */ + #define R_SDHI0_SD_CMD_RSPTP_Msk (0x700UL) /*!< RSPTP (Bitfield-Mask: 0x07) */ + #define R_SDHI0_SD_CMD_ACMD_Pos (6UL) /*!< ACMD (Bit 6) */ + #define R_SDHI0_SD_CMD_ACMD_Msk (0xc0UL) /*!< ACMD (Bitfield-Mask: 0x03) */ + #define R_SDHI0_SD_CMD_CMDIDX_Pos (0UL) /*!< CMDIDX (Bit 0) */ + #define R_SDHI0_SD_CMD_CMDIDX_Msk (0x3fUL) /*!< CMDIDX (Bitfield-Mask: 0x3f) */ +/* ======================================================== SD_ARG ========================================================= */ + #define R_SDHI0_SD_ARG_SD_ARG_Pos (0UL) /*!< SD_ARG (Bit 0) */ + #define R_SDHI0_SD_ARG_SD_ARG_Msk (0xffffffffUL) /*!< SD_ARG (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_ARG1 ======================================================== */ + #define R_SDHI0_SD_ARG1_SD_ARG1_Pos (0UL) /*!< SD_ARG1 (Bit 0) */ + #define R_SDHI0_SD_ARG1_SD_ARG1_Msk (0xffffUL) /*!< SD_ARG1 (Bitfield-Mask: 0xffff) */ +/* ======================================================== SD_STOP ======================================================== */ + #define R_SDHI0_SD_STOP_SEC_Pos (8UL) /*!< SEC (Bit 8) */ + #define R_SDHI0_SD_STOP_SEC_Msk (0x100UL) /*!< SEC (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_STOP_STP_Pos (0UL) /*!< STP (Bit 0) */ + #define R_SDHI0_SD_STOP_STP_Msk (0x1UL) /*!< STP (Bitfield-Mask: 0x01) */ +/* ======================================================= SD_SECCNT ======================================================= */ + #define R_SDHI0_SD_SECCNT_SD_SECCNT_Pos (0UL) /*!< SD_SECCNT (Bit 0) */ + #define R_SDHI0_SD_SECCNT_SD_SECCNT_Msk (0xffffffffUL) /*!< SD_SECCNT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SD_RSP10 ======================================================== */ + #define R_SDHI0_SD_RSP10_SD_RSP10_Pos (0UL) /*!< SD_RSP10 (Bit 0) */ + #define R_SDHI0_SD_RSP10_SD_RSP10_Msk (0xffffffffUL) /*!< SD_RSP10 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_RSP1 ======================================================== */ + #define R_SDHI0_SD_RSP1_SD_RSP1_Pos (0UL) /*!< SD_RSP1 (Bit 0) */ + #define R_SDHI0_SD_RSP1_SD_RSP1_Msk (0xffffUL) /*!< SD_RSP1 (Bitfield-Mask: 0xffff) */ +/* ======================================================= SD_RSP32 ======================================================== */ + #define R_SDHI0_SD_RSP32_SD_RSP32_Pos (0UL) /*!< SD_RSP32 (Bit 0) */ + #define R_SDHI0_SD_RSP32_SD_RSP32_Msk (0xffffffffUL) /*!< SD_RSP32 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_RSP3 ======================================================== */ + #define R_SDHI0_SD_RSP3_SD_RSP3_Pos (0UL) /*!< SD_RSP3 (Bit 0) */ + #define R_SDHI0_SD_RSP3_SD_RSP3_Msk (0xffffUL) /*!< SD_RSP3 (Bitfield-Mask: 0xffff) */ +/* ======================================================= SD_RSP54 ======================================================== */ + #define R_SDHI0_SD_RSP54_SD_RSP54_Pos (0UL) /*!< SD_RSP54 (Bit 0) */ + #define R_SDHI0_SD_RSP54_SD_RSP54_Msk (0xffffffffUL) /*!< SD_RSP54 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SD_RSP5 ======================================================== */ + #define R_SDHI0_SD_RSP5_SD_RSP5_Pos (0UL) /*!< SD_RSP5 (Bit 0) */ + #define R_SDHI0_SD_RSP5_SD_RSP5_Msk (0xffffUL) /*!< SD_RSP5 (Bitfield-Mask: 0xffff) */ +/* ======================================================= SD_RSP76 ======================================================== */ + #define R_SDHI0_SD_RSP76_SD_RSP76_Pos (0UL) /*!< SD_RSP76 (Bit 0) */ + #define R_SDHI0_SD_RSP76_SD_RSP76_Msk (0xffffffUL) /*!< SD_RSP76 (Bitfield-Mask: 0xffffff) */ +/* ======================================================== SD_RSP7 ======================================================== */ + #define R_SDHI0_SD_RSP7_SD_RSP7_Pos (0UL) /*!< SD_RSP7 (Bit 0) */ + #define R_SDHI0_SD_RSP7_SD_RSP7_Msk (0xffUL) /*!< SD_RSP7 (Bitfield-Mask: 0xff) */ +/* ======================================================= SD_INFO1 ======================================================== */ + #define R_SDHI0_SD_INFO1_SDD3MON_Pos (10UL) /*!< SDD3MON (Bit 10) */ + #define R_SDHI0_SD_INFO1_SDD3MON_Msk (0x400UL) /*!< SDD3MON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDD3IN_Pos (9UL) /*!< SDD3IN (Bit 9) */ + #define R_SDHI0_SD_INFO1_SDD3IN_Msk (0x200UL) /*!< SDD3IN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDD3RM_Pos (8UL) /*!< SDD3RM (Bit 8) */ + #define R_SDHI0_SD_INFO1_SDD3RM_Msk (0x100UL) /*!< SDD3RM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDWPMON_Pos (7UL) /*!< SDWPMON (Bit 7) */ + #define R_SDHI0_SD_INFO1_SDWPMON_Msk (0x80UL) /*!< SDWPMON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDCDMON_Pos (5UL) /*!< SDCDMON (Bit 5) */ + #define R_SDHI0_SD_INFO1_SDCDMON_Msk (0x20UL) /*!< SDCDMON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDCDIN_Pos (4UL) /*!< SDCDIN (Bit 4) */ + #define R_SDHI0_SD_INFO1_SDCDIN_Msk (0x10UL) /*!< SDCDIN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_SDCDRM_Pos (3UL) /*!< SDCDRM (Bit 3) */ + #define R_SDHI0_SD_INFO1_SDCDRM_Msk (0x8UL) /*!< SDCDRM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_ACEND_Pos (2UL) /*!< ACEND (Bit 2) */ + #define R_SDHI0_SD_INFO1_ACEND_Msk (0x4UL) /*!< ACEND (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_RSPEND_Pos (0UL) /*!< RSPEND (Bit 0) */ + #define R_SDHI0_SD_INFO1_RSPEND_Msk (0x1UL) /*!< RSPEND (Bitfield-Mask: 0x01) */ +/* ======================================================= SD_INFO2 ======================================================== */ + #define R_SDHI0_SD_INFO2_ILA_Pos (15UL) /*!< ILA (Bit 15) */ + #define R_SDHI0_SD_INFO2_ILA_Msk (0x8000UL) /*!< ILA (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_CBSY_Pos (14UL) /*!< CBSY (Bit 14) */ + #define R_SDHI0_SD_INFO2_CBSY_Msk (0x4000UL) /*!< CBSY (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_SD_CLK_CTRLEN_Pos (13UL) /*!< SD_CLK_CTRLEN (Bit 13) */ + #define R_SDHI0_SD_INFO2_SD_CLK_CTRLEN_Msk (0x2000UL) /*!< SD_CLK_CTRLEN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_BWE_Pos (9UL) /*!< BWE (Bit 9) */ + #define R_SDHI0_SD_INFO2_BWE_Msk (0x200UL) /*!< BWE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_BRE_Pos (8UL) /*!< BRE (Bit 8) */ + #define R_SDHI0_SD_INFO2_BRE_Msk (0x100UL) /*!< BRE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_SDD0MON_Pos (7UL) /*!< SDD0MON (Bit 7) */ + #define R_SDHI0_SD_INFO2_SDD0MON_Msk (0x80UL) /*!< SDD0MON (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_RSPTO_Pos (6UL) /*!< RSPTO (Bit 6) */ + #define R_SDHI0_SD_INFO2_RSPTO_Msk (0x40UL) /*!< RSPTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_ILR_Pos (5UL) /*!< ILR (Bit 5) */ + #define R_SDHI0_SD_INFO2_ILR_Msk (0x20UL) /*!< ILR (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_ILW_Pos (4UL) /*!< ILW (Bit 4) */ + #define R_SDHI0_SD_INFO2_ILW_Msk (0x10UL) /*!< ILW (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_DTO_Pos (3UL) /*!< DTO (Bit 3) */ + #define R_SDHI0_SD_INFO2_DTO_Msk (0x8UL) /*!< DTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_ENDE_Pos (2UL) /*!< ENDE (Bit 2) */ + #define R_SDHI0_SD_INFO2_ENDE_Msk (0x4UL) /*!< ENDE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_CRCE_Pos (1UL) /*!< CRCE (Bit 1) */ + #define R_SDHI0_SD_INFO2_CRCE_Msk (0x2UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_CMDE_Pos (0UL) /*!< CMDE (Bit 0) */ + #define R_SDHI0_SD_INFO2_CMDE_Msk (0x1UL) /*!< CMDE (Bitfield-Mask: 0x01) */ +/* ===================================================== SD_INFO1_MASK ===================================================== */ + #define R_SDHI0_SD_INFO1_MASK_SDD3INM_Pos (9UL) /*!< SDD3INM (Bit 9) */ + #define R_SDHI0_SD_INFO1_MASK_SDD3INM_Msk (0x200UL) /*!< SDD3INM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_SDD3RMM_Pos (8UL) /*!< SDD3RMM (Bit 8) */ + #define R_SDHI0_SD_INFO1_MASK_SDD3RMM_Msk (0x100UL) /*!< SDD3RMM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDINM_Pos (4UL) /*!< SDCDINM (Bit 4) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDINM_Msk (0x10UL) /*!< SDCDINM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDRMM_Pos (3UL) /*!< SDCDRMM (Bit 3) */ + #define R_SDHI0_SD_INFO1_MASK_SDCDRMM_Msk (0x8UL) /*!< SDCDRMM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_ACENDM_Pos (2UL) /*!< ACENDM (Bit 2) */ + #define R_SDHI0_SD_INFO1_MASK_ACENDM_Msk (0x4UL) /*!< ACENDM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO1_MASK_RSPENDM_Pos (0UL) /*!< RSPENDM (Bit 0) */ + #define R_SDHI0_SD_INFO1_MASK_RSPENDM_Msk (0x1UL) /*!< RSPENDM (Bitfield-Mask: 0x01) */ +/* ===================================================== SD_INFO2_MASK ===================================================== */ + #define R_SDHI0_SD_INFO2_MASK_ILAM_Pos (15UL) /*!< ILAM (Bit 15) */ + #define R_SDHI0_SD_INFO2_MASK_ILAM_Msk (0x8000UL) /*!< ILAM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_BWEM_Pos (9UL) /*!< BWEM (Bit 9) */ + #define R_SDHI0_SD_INFO2_MASK_BWEM_Msk (0x200UL) /*!< BWEM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_BREM_Pos (8UL) /*!< BREM (Bit 8) */ + #define R_SDHI0_SD_INFO2_MASK_BREM_Msk (0x100UL) /*!< BREM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_RSPTOM_Pos (6UL) /*!< RSPTOM (Bit 6) */ + #define R_SDHI0_SD_INFO2_MASK_RSPTOM_Msk (0x40UL) /*!< RSPTOM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_ILRM_Pos (5UL) /*!< ILRM (Bit 5) */ + #define R_SDHI0_SD_INFO2_MASK_ILRM_Msk (0x20UL) /*!< ILRM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_ILWM_Pos (4UL) /*!< ILWM (Bit 4) */ + #define R_SDHI0_SD_INFO2_MASK_ILWM_Msk (0x10UL) /*!< ILWM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_DTOM_Pos (3UL) /*!< DTOM (Bit 3) */ + #define R_SDHI0_SD_INFO2_MASK_DTOM_Msk (0x8UL) /*!< DTOM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_ENDEM_Pos (2UL) /*!< ENDEM (Bit 2) */ + #define R_SDHI0_SD_INFO2_MASK_ENDEM_Msk (0x4UL) /*!< ENDEM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_CRCEM_Pos (1UL) /*!< CRCEM (Bit 1) */ + #define R_SDHI0_SD_INFO2_MASK_CRCEM_Msk (0x2UL) /*!< CRCEM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_INFO2_MASK_CMDEM_Pos (0UL) /*!< CMDEM (Bit 0) */ + #define R_SDHI0_SD_INFO2_MASK_CMDEM_Msk (0x1UL) /*!< CMDEM (Bitfield-Mask: 0x01) */ +/* ====================================================== SD_CLK_CTRL ====================================================== */ + #define R_SDHI0_SD_CLK_CTRL_CLKCTRLEN_Pos (9UL) /*!< CLKCTRLEN (Bit 9) */ + #define R_SDHI0_SD_CLK_CTRL_CLKCTRLEN_Msk (0x200UL) /*!< CLKCTRLEN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CLK_CTRL_CLKEN_Pos (8UL) /*!< CLKEN (Bit 8) */ + #define R_SDHI0_SD_CLK_CTRL_CLKEN_Msk (0x100UL) /*!< CLKEN (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_CLK_CTRL_CLKSEL_Pos (0UL) /*!< CLKSEL (Bit 0) */ + #define R_SDHI0_SD_CLK_CTRL_CLKSEL_Msk (0xffUL) /*!< CLKSEL (Bitfield-Mask: 0xff) */ +/* ======================================================== SD_SIZE ======================================================== */ + #define R_SDHI0_SD_SIZE_LEN_Pos (0UL) /*!< LEN (Bit 0) */ + #define R_SDHI0_SD_SIZE_LEN_Msk (0x3ffUL) /*!< LEN (Bitfield-Mask: 0x3ff) */ +/* ======================================================= SD_OPTION ======================================================= */ + #define R_SDHI0_SD_OPTION_WIDTH_Pos (15UL) /*!< WIDTH (Bit 15) */ + #define R_SDHI0_SD_OPTION_WIDTH_Msk (0x8000UL) /*!< WIDTH (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_OPTION_WIDTH8_Pos (13UL) /*!< WIDTH8 (Bit 13) */ + #define R_SDHI0_SD_OPTION_WIDTH8_Msk (0x2000UL) /*!< WIDTH8 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_OPTION_TOUTMASK_Pos (8UL) /*!< TOUTMASK (Bit 8) */ + #define R_SDHI0_SD_OPTION_TOUTMASK_Msk (0x100UL) /*!< TOUTMASK (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_OPTION_TOP_Pos (4UL) /*!< TOP (Bit 4) */ + #define R_SDHI0_SD_OPTION_TOP_Msk (0xf0UL) /*!< TOP (Bitfield-Mask: 0x0f) */ + #define R_SDHI0_SD_OPTION_CTOP_Pos (0UL) /*!< CTOP (Bit 0) */ + #define R_SDHI0_SD_OPTION_CTOP_Msk (0xfUL) /*!< CTOP (Bitfield-Mask: 0x0f) */ +/* ====================================================== SD_ERR_STS1 ====================================================== */ + #define R_SDHI0_SD_ERR_STS1_CRCTK_Pos (12UL) /*!< CRCTK (Bit 12) */ + #define R_SDHI0_SD_ERR_STS1_CRCTK_Msk (0x7000UL) /*!< CRCTK (Bitfield-Mask: 0x07) */ + #define R_SDHI0_SD_ERR_STS1_CRCTKE_Pos (11UL) /*!< CRCTKE (Bit 11) */ + #define R_SDHI0_SD_ERR_STS1_CRCTKE_Msk (0x800UL) /*!< CRCTKE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RDCRCE_Pos (10UL) /*!< RDCRCE (Bit 10) */ + #define R_SDHI0_SD_ERR_STS1_RDCRCE_Msk (0x400UL) /*!< RDCRCE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE1_Pos (9UL) /*!< RSPCRCE1 (Bit 9) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE1_Msk (0x200UL) /*!< RSPCRCE1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE0_Pos (8UL) /*!< RSPCRCE0 (Bit 8) */ + #define R_SDHI0_SD_ERR_STS1_RSPCRCE0_Msk (0x100UL) /*!< RSPCRCE0 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_CRCLENE_Pos (5UL) /*!< CRCLENE (Bit 5) */ + #define R_SDHI0_SD_ERR_STS1_CRCLENE_Msk (0x20UL) /*!< CRCLENE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RDLENE_Pos (4UL) /*!< RDLENE (Bit 4) */ + #define R_SDHI0_SD_ERR_STS1_RDLENE_Msk (0x10UL) /*!< RDLENE (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE1_Pos (3UL) /*!< RSPLENE1 (Bit 3) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE1_Msk (0x8UL) /*!< RSPLENE1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE0_Pos (2UL) /*!< RSPLENE0 (Bit 2) */ + #define R_SDHI0_SD_ERR_STS1_RSPLENE0_Msk (0x4UL) /*!< RSPLENE0 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_CMDE1_Pos (1UL) /*!< CMDE1 (Bit 1) */ + #define R_SDHI0_SD_ERR_STS1_CMDE1_Msk (0x2UL) /*!< CMDE1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS1_CMDE0_Pos (0UL) /*!< CMDE0 (Bit 0) */ + #define R_SDHI0_SD_ERR_STS1_CMDE0_Msk (0x1UL) /*!< CMDE0 (Bitfield-Mask: 0x01) */ +/* ====================================================== SD_ERR_STS2 ====================================================== */ + #define R_SDHI0_SD_ERR_STS2_CRCBSYTO_Pos (6UL) /*!< CRCBSYTO (Bit 6) */ + #define R_SDHI0_SD_ERR_STS2_CRCBSYTO_Msk (0x40UL) /*!< CRCBSYTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_CRCTO_Pos (5UL) /*!< CRCTO (Bit 5) */ + #define R_SDHI0_SD_ERR_STS2_CRCTO_Msk (0x20UL) /*!< CRCTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_RDTO_Pos (4UL) /*!< RDTO (Bit 4) */ + #define R_SDHI0_SD_ERR_STS2_RDTO_Msk (0x10UL) /*!< RDTO (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO1_Pos (3UL) /*!< BSYTO1 (Bit 3) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO1_Msk (0x8UL) /*!< BSYTO1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO0_Pos (2UL) /*!< BSYTO0 (Bit 2) */ + #define R_SDHI0_SD_ERR_STS2_BSYTO0_Msk (0x4UL) /*!< BSYTO0 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO1_Pos (1UL) /*!< RSPTO1 (Bit 1) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO1_Msk (0x2UL) /*!< RSPTO1 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO0_Pos (0UL) /*!< RSPTO0 (Bit 0) */ + #define R_SDHI0_SD_ERR_STS2_RSPTO0_Msk (0x1UL) /*!< RSPTO0 (Bitfield-Mask: 0x01) */ +/* ======================================================== SD_BUF0 ======================================================== */ + #define R_SDHI0_SD_BUF0_SD_BUF_Pos (0UL) /*!< SD_BUF (Bit 0) */ + #define R_SDHI0_SD_BUF0_SD_BUF_Msk (0xffffffffUL) /*!< SD_BUF (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SDIO_MODE ======================================================= */ + #define R_SDHI0_SDIO_MODE_C52PUB_Pos (9UL) /*!< C52PUB (Bit 9) */ + #define R_SDHI0_SDIO_MODE_C52PUB_Msk (0x200UL) /*!< C52PUB (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_MODE_IOABT_Pos (8UL) /*!< IOABT (Bit 8) */ + #define R_SDHI0_SDIO_MODE_IOABT_Msk (0x100UL) /*!< IOABT (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_MODE_RWREQ_Pos (2UL) /*!< RWREQ (Bit 2) */ + #define R_SDHI0_SDIO_MODE_RWREQ_Msk (0x4UL) /*!< RWREQ (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_MODE_INTEN_Pos (0UL) /*!< INTEN (Bit 0) */ + #define R_SDHI0_SDIO_MODE_INTEN_Msk (0x1UL) /*!< INTEN (Bitfield-Mask: 0x01) */ +/* ====================================================== SDIO_INFO1 ======================================================= */ + #define R_SDHI0_SDIO_INFO1_EXWT_Pos (15UL) /*!< EXWT (Bit 15) */ + #define R_SDHI0_SDIO_INFO1_EXWT_Msk (0x8000UL) /*!< EXWT (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_EXPUB52_Pos (14UL) /*!< EXPUB52 (Bit 14) */ + #define R_SDHI0_SDIO_INFO1_EXPUB52_Msk (0x4000UL) /*!< EXPUB52 (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_IOIRQ_Pos (0UL) /*!< IOIRQ (Bit 0) */ + #define R_SDHI0_SDIO_INFO1_IOIRQ_Msk (0x1UL) /*!< IOIRQ (Bitfield-Mask: 0x01) */ +/* ==================================================== SDIO_INFO1_MASK ==================================================== */ + #define R_SDHI0_SDIO_INFO1_MASK_EXWTM_Pos (15UL) /*!< EXWTM (Bit 15) */ + #define R_SDHI0_SDIO_INFO1_MASK_EXWTM_Msk (0x8000UL) /*!< EXWTM (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_MASK_EXPUB52M_Pos (14UL) /*!< EXPUB52M (Bit 14) */ + #define R_SDHI0_SDIO_INFO1_MASK_EXPUB52M_Msk (0x4000UL) /*!< EXPUB52M (Bitfield-Mask: 0x01) */ + #define R_SDHI0_SDIO_INFO1_MASK_IOIRQM_Pos (0UL) /*!< IOIRQM (Bit 0) */ + #define R_SDHI0_SDIO_INFO1_MASK_IOIRQM_Msk (0x1UL) /*!< IOIRQM (Bitfield-Mask: 0x01) */ +/* ======================================================= SD_DMAEN ======================================================== */ + #define R_SDHI0_SD_DMAEN_DMAEN_Pos (1UL) /*!< DMAEN (Bit 1) */ + #define R_SDHI0_SD_DMAEN_DMAEN_Msk (0x2UL) /*!< DMAEN (Bitfield-Mask: 0x01) */ +/* ======================================================= SOFT_RST ======================================================== */ + #define R_SDHI0_SOFT_RST_SDRST_Pos (0UL) /*!< SDRST (Bit 0) */ + #define R_SDHI0_SOFT_RST_SDRST_Msk (0x1UL) /*!< SDRST (Bitfield-Mask: 0x01) */ +/* ======================================================= SDIF_MODE ======================================================= */ + #define R_SDHI0_SDIF_MODE_NOCHKCR_Pos (8UL) /*!< NOCHKCR (Bit 8) */ + #define R_SDHI0_SDIF_MODE_NOCHKCR_Msk (0x100UL) /*!< NOCHKCR (Bitfield-Mask: 0x01) */ +/* ======================================================= EXT_SWAP ======================================================== */ + #define R_SDHI0_EXT_SWAP_BRSWP_Pos (7UL) /*!< BRSWP (Bit 7) */ + #define R_SDHI0_EXT_SWAP_BRSWP_Msk (0x80UL) /*!< BRSWP (Bitfield-Mask: 0x01) */ + #define R_SDHI0_EXT_SWAP_BWSWP_Pos (6UL) /*!< BWSWP (Bit 6) */ + #define R_SDHI0_EXT_SWAP_BWSWP_Msk (0x40UL) /*!< BWSWP (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SPCR ========================================================== */ + #define R_SPI0_SPCR_SPRIE_Pos (7UL) /*!< SPRIE (Bit 7) */ + #define R_SPI0_SPCR_SPRIE_Msk (0x80UL) /*!< SPRIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPE_Pos (6UL) /*!< SPE (Bit 6) */ + #define R_SPI0_SPCR_SPE_Msk (0x40UL) /*!< SPE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPTIE_Pos (5UL) /*!< SPTIE (Bit 5) */ + #define R_SPI0_SPCR_SPTIE_Msk (0x20UL) /*!< SPTIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPEIE_Pos (4UL) /*!< SPEIE (Bit 4) */ + #define R_SPI0_SPCR_SPEIE_Msk (0x10UL) /*!< SPEIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_MSTR_Pos (3UL) /*!< MSTR (Bit 3) */ + #define R_SPI0_SPCR_MSTR_Msk (0x8UL) /*!< MSTR (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_MODFEN_Pos (2UL) /*!< MODFEN (Bit 2) */ + #define R_SPI0_SPCR_MODFEN_Msk (0x4UL) /*!< MODFEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_TXMD_Pos (1UL) /*!< TXMD (Bit 1) */ + #define R_SPI0_SPCR_TXMD_Msk (0x2UL) /*!< TXMD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPMS_Pos (0UL) /*!< SPMS (Bit 0) */ + #define R_SPI0_SPCR_SPMS_Msk (0x1UL) /*!< SPMS (Bitfield-Mask: 0x01) */ +/* ========================================================= SSLP ========================================================== */ + #define R_SPI0_SSLP_SSL3P_Pos (3UL) /*!< SSL3P (Bit 3) */ + #define R_SPI0_SSLP_SSL3P_Msk (0x8UL) /*!< SSL3P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL2P_Pos (2UL) /*!< SSL2P (Bit 2) */ + #define R_SPI0_SSLP_SSL2P_Msk (0x4UL) /*!< SSL2P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL1P_Pos (1UL) /*!< SSL1P (Bit 1) */ + #define R_SPI0_SSLP_SSL1P_Msk (0x2UL) /*!< SSL1P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL0P_Pos (0UL) /*!< SSL0P (Bit 0) */ + #define R_SPI0_SSLP_SSL0P_Msk (0x1UL) /*!< SSL0P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL4P_Pos (4UL) /*!< SSL4P (Bit 4) */ + #define R_SPI0_SSLP_SSL4P_Msk (0x10UL) /*!< SSL4P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL5P_Pos (5UL) /*!< SSL5P (Bit 5) */ + #define R_SPI0_SSLP_SSL5P_Msk (0x20UL) /*!< SSL5P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL6P_Pos (6UL) /*!< SSL6P (Bit 6) */ + #define R_SPI0_SSLP_SSL6P_Msk (0x40UL) /*!< SSL6P (Bitfield-Mask: 0x01) */ + #define R_SPI0_SSLP_SSL7P_Pos (7UL) /*!< SSL7P (Bit 7) */ + #define R_SPI0_SSLP_SSL7P_Msk (0x80UL) /*!< SSL7P (Bitfield-Mask: 0x01) */ +/* ========================================================= SPPCR ========================================================= */ + #define R_SPI0_SPPCR_MOIFE_Pos (5UL) /*!< MOIFE (Bit 5) */ + #define R_SPI0_SPPCR_MOIFE_Msk (0x20UL) /*!< MOIFE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPCR_MOIFV_Pos (4UL) /*!< MOIFV (Bit 4) */ + #define R_SPI0_SPPCR_MOIFV_Msk (0x10UL) /*!< MOIFV (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPCR_SPLP2_Pos (1UL) /*!< SPLP2 (Bit 1) */ + #define R_SPI0_SPPCR_SPLP2_Msk (0x2UL) /*!< SPLP2 (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPCR_SPLP_Pos (0UL) /*!< SPLP (Bit 0) */ + #define R_SPI0_SPPCR_SPLP_Msk (0x1UL) /*!< SPLP (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSR ========================================================== */ + #define R_SPI0_SPSR_SPRF_Pos (7UL) /*!< SPRF (Bit 7) */ + #define R_SPI0_SPSR_SPRF_Msk (0x80UL) /*!< SPRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_SPTEF_Pos (5UL) /*!< SPTEF (Bit 5) */ + #define R_SPI0_SPSR_SPTEF_Msk (0x20UL) /*!< SPTEF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_UDRF_Pos (4UL) /*!< UDRF (Bit 4) */ + #define R_SPI0_SPSR_UDRF_Msk (0x10UL) /*!< UDRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_PERF_Pos (3UL) /*!< PERF (Bit 3) */ + #define R_SPI0_SPSR_PERF_Msk (0x8UL) /*!< PERF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_MODF_Pos (2UL) /*!< MODF (Bit 2) */ + #define R_SPI0_SPSR_MODF_Msk (0x4UL) /*!< MODF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_IDLNF_Pos (1UL) /*!< IDLNF (Bit 1) */ + #define R_SPI0_SPSR_IDLNF_Msk (0x2UL) /*!< IDLNF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_OVRF_Pos (0UL) /*!< OVRF (Bit 0) */ + #define R_SPI0_SPSR_OVRF_Msk (0x1UL) /*!< OVRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_CENDF_Pos (6UL) /*!< CENDF (Bit 6) */ + #define R_SPI0_SPSR_CENDF_Msk (0x40UL) /*!< CENDF (Bitfield-Mask: 0x01) */ +/* ========================================================= SPDR ========================================================== */ +/* ======================================================== SPDR_HA ======================================================== */ +/* ======================================================== SPDR_BY ======================================================== */ +/* ========================================================= SPSCR ========================================================= */ + #define R_SPI0_SPSCR_SPSLN_Pos (0UL) /*!< SPSLN (Bit 0) */ + #define R_SPI0_SPSCR_SPSLN_Msk (0x7UL) /*!< SPSLN (Bitfield-Mask: 0x07) */ +/* ========================================================= SPBR ========================================================== */ + #define R_SPI0_SPBR_SPR_Pos (0UL) /*!< SPR (Bit 0) */ + #define R_SPI0_SPBR_SPR_Msk (0xffUL) /*!< SPR (Bitfield-Mask: 0xff) */ +/* ========================================================= SPDCR ========================================================= */ + #define R_SPI0_SPDCR_SPBYT_Pos (6UL) /*!< SPBYT (Bit 6) */ + #define R_SPI0_SPDCR_SPBYT_Msk (0x40UL) /*!< SPBYT (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPLW_Pos (5UL) /*!< SPLW (Bit 5) */ + #define R_SPI0_SPDCR_SPLW_Msk (0x20UL) /*!< SPLW (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPRDTD_Pos (4UL) /*!< SPRDTD (Bit 4) */ + #define R_SPI0_SPDCR_SPRDTD_Msk (0x10UL) /*!< SPRDTD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPFC_Pos (0UL) /*!< SPFC (Bit 0) */ + #define R_SPI0_SPDCR_SPFC_Msk (0x3UL) /*!< SPFC (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPDCR_SLSEL_Pos (2UL) /*!< SLSEL (Bit 2) */ + #define R_SPI0_SPDCR_SLSEL_Msk (0xcUL) /*!< SLSEL (Bitfield-Mask: 0x03) */ +/* ========================================================= SPCKD ========================================================= */ + #define R_SPI0_SPCKD_SCKDL_Pos (0UL) /*!< SCKDL (Bit 0) */ + #define R_SPI0_SPCKD_SCKDL_Msk (0x7UL) /*!< SCKDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SSLND ========================================================= */ + #define R_SPI0_SSLND_SLNDL_Pos (0UL) /*!< SLNDL (Bit 0) */ + #define R_SPI0_SSLND_SLNDL_Msk (0x7UL) /*!< SLNDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SPND ========================================================== */ + #define R_SPI0_SPND_SPNDL_Pos (0UL) /*!< SPNDL (Bit 0) */ + #define R_SPI0_SPND_SPNDL_Msk (0x7UL) /*!< SPNDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR2 ========================================================= */ + #define R_SPI0_SPCR2_SCKASE_Pos (4UL) /*!< SCKASE (Bit 4) */ + #define R_SPI0_SPCR2_SCKASE_Msk (0x10UL) /*!< SCKASE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_PTE_Pos (3UL) /*!< PTE (Bit 3) */ + #define R_SPI0_SPCR2_PTE_Msk (0x8UL) /*!< PTE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPIIE_Pos (2UL) /*!< SPIIE (Bit 2) */ + #define R_SPI0_SPCR2_SPIIE_Msk (0x4UL) /*!< SPIIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPOE_Pos (1UL) /*!< SPOE (Bit 1) */ + #define R_SPI0_SPCR2_SPOE_Msk (0x2UL) /*!< SPOE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPPE_Pos (0UL) /*!< SPPE (Bit 0) */ + #define R_SPI0_SPCR2_SPPE_Msk (0x1UL) /*!< SPPE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR2_SPTDDL_Pos (5UL) /*!< SPTDDL (Bit 5) */ + #define R_SPI0_SPCR2_SPTDDL_Msk (0xe0UL) /*!< SPTDDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCMD ========================================================= */ + #define R_SPI0_SPCMD_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI0_SPCMD_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI0_SPCMD_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI0_SPCMD_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI0_SPCMD_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SPB_Pos (8UL) /*!< SPB (Bit 8) */ + #define R_SPI0_SPCMD_SPB_Msk (0xf00UL) /*!< SPB (Bitfield-Mask: 0x0f) */ + #define R_SPI0_SPCMD_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI0_SPCMD_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_SSLA_Pos (4UL) /*!< SSLA (Bit 4) */ + #define R_SPI0_SPCMD_SSLA_Msk (0x70UL) /*!< SSLA (Bitfield-Mask: 0x07) */ + #define R_SPI0_SPCMD_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI0_SPCMD_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPCMD_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI0_SPCMD_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCMD_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI0_SPCMD_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ +/* ======================================================== SPDCR2 ========================================================= */ + #define R_SPI0_SPDCR2_BYSW_Pos (0UL) /*!< BYSW (Bit 0) */ + #define R_SPI0_SPDCR2_BYSW_Msk (0x1UL) /*!< BYSW (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR2_SINV_Pos (1UL) /*!< SINV (Bit 1) */ + #define R_SPI0_SPDCR2_SINV_Msk (0x2UL) /*!< SINV (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSSR ========================================================= */ + #define R_SPI0_SPSSR_SPCP_Pos (0UL) /*!< SPCP (Bit 0) */ + #define R_SPI0_SPSSR_SPCP_Msk (0x7UL) /*!< SPCP (Bitfield-Mask: 0x07) */ + #define R_SPI0_SPSSR_SPECM_Pos (4UL) /*!< SPECM (Bit 4) */ + #define R_SPI0_SPSSR_SPECM_Msk (0x70UL) /*!< SPECM (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR3 ========================================================= */ + #define R_SPI0_SPCR3_ETXMD_Pos (0UL) /*!< ETXMD (Bit 0) */ + #define R_SPI0_SPCR3_ETXMD_Msk (0x1UL) /*!< ETXMD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR3_BFDS_Pos (1UL) /*!< BFDS (Bit 1) */ + #define R_SPI0_SPCR3_BFDS_Msk (0x2UL) /*!< BFDS (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR3_CENDIE_Pos (4UL) /*!< CENDIE (Bit 4) */ + #define R_SPI0_SPCR3_CENDIE_Msk (0x10UL) /*!< CENDIE (Bitfield-Mask: 0x01) */ +/* ========================================================= SPPR ========================================================== */ + #define R_SPI0_SPPR_BUFWID_Pos (4UL) /*!< BUFWID (Bit 4) */ + #define R_SPI0_SPPR_BUFWID_Msk (0x10UL) /*!< BUFWID (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPPR_BUFNUM_Pos (8UL) /*!< BUFNUM (Bit 8) */ + #define R_SPI0_SPPR_BUFNUM_Msk (0x700UL) /*!< BUFNUM (Bitfield-Mask: 0x07) */ + #define R_SPI0_SPPR_CMDNUM_Pos (12UL) /*!< CMDNUM (Bit 12) */ + #define R_SPI0_SPPR_CMDNUM_Msk (0xf000UL) /*!< CMDNUM (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_SRAM ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= SRAMPRCR ======================================================== */ + #define R_SRAM_SRAMPRCR_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_SRAM_SRAMPRCR_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMPRCR_KW_Pos (8UL) /*!< KW (Bit 8) */ + #define R_SRAM_SRAMPRCR_KW_Msk (0xff00UL) /*!< KW (Bitfield-Mask: 0xff) */ +/* ====================================================== SRAMPRCR_NS ====================================================== */ + #define R_SRAM_SRAMPRCR_NS_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_SRAM_SRAMPRCR_NS_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMPRCR_NS_KW_Pos (8UL) /*!< KW (Bit 8) */ + #define R_SRAM_SRAMPRCR_NS_KW_Msk (0xff00UL) /*!< KW (Bitfield-Mask: 0xff) */ +/* ======================================================= SRAMWTSC ======================================================== */ + #define R_SRAM_SRAMWTSC_WTEN_Pos (0UL) /*!< WTEN (Bit 0) */ + #define R_SRAM_SRAMWTSC_WTEN_Msk (0x1UL) /*!< WTEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SRAMCR0 ======================================================== */ + #define R_SRAM_SRAMCR0_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_SRAMCR0_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMCR0_ECCMOD_Pos (2UL) /*!< ECCMOD (Bit 2) */ + #define R_SRAM_SRAMCR0_ECCMOD_Msk (0xcUL) /*!< ECCMOD (Bitfield-Mask: 0x03) */ + #define R_SRAM_SRAMCR0_E1STSEN_Pos (4UL) /*!< E1STSEN (Bit 4) */ + #define R_SRAM_SRAMCR0_E1STSEN_Msk (0x10UL) /*!< E1STSEN (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMCR0_TSTBYP_Pos (7UL) /*!< TSTBYP (Bit 7) */ + #define R_SRAM_SRAMCR0_TSTBYP_Msk (0x80UL) /*!< TSTBYP (Bitfield-Mask: 0x01) */ +/* ======================================================== SRAMCR1 ======================================================== */ + #define R_SRAM_SRAMCR1_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_SRAMCR1_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ====================================================== SRAMECCRGN0 ====================================================== */ + #define R_SRAM_SRAMECCRGN0_ECCRGN_Pos (0UL) /*!< ECCRGN (Bit 0) */ + #define R_SRAM_SRAMECCRGN0_ECCRGN_Msk (0x3UL) /*!< ECCRGN (Bitfield-Mask: 0x03) */ +/* ======================================================== SRAMESR ======================================================== */ + #define R_SRAM_SRAMESR_ERR00_Pos (0UL) /*!< ERR00 (Bit 0) */ + #define R_SRAM_SRAMESR_ERR00_Msk (0x1UL) /*!< ERR00 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESR_ERR01_Pos (1UL) /*!< ERR01 (Bit 1) */ + #define R_SRAM_SRAMESR_ERR01_Msk (0x2UL) /*!< ERR01 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESR_ERR1_Pos (2UL) /*!< ERR1 (Bit 2) */ + #define R_SRAM_SRAMESR_ERR1_Msk (0x4UL) /*!< ERR1 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESR_ERRS_Pos (14UL) /*!< ERRS (Bit 14) */ + #define R_SRAM_SRAMESR_ERRS_Msk (0x4000UL) /*!< ERRS (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMESCLR ======================================================= */ + #define R_SRAM_SRAMESCLR_CLR00_Pos (0UL) /*!< CLR00 (Bit 0) */ + #define R_SRAM_SRAMESCLR_CLR00_Msk (0x1UL) /*!< CLR00 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESCLR_CLR01_Pos (1UL) /*!< CLR01 (Bit 1) */ + #define R_SRAM_SRAMESCLR_CLR01_Msk (0x2UL) /*!< CLR01 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESCLR_CLR1_Pos (2UL) /*!< CLR1 (Bit 2) */ + #define R_SRAM_SRAMESCLR_CLR1_Msk (0x4UL) /*!< CLR1 (Bitfield-Mask: 0x01) */ + #define R_SRAM_SRAMESCLR_CLRS_Pos (14UL) /*!< CLRS (Bit 14) */ + #define R_SRAM_SRAMESCLR_CLRS_Msk (0x4000UL) /*!< CLRS (Bitfield-Mask: 0x01) */ +/* ======================================================= SRAMEAR0 ======================================================== */ + #define R_SRAM_SRAMEAR0_EA_Pos (3UL) /*!< EA (Bit 3) */ + #define R_SRAM_SRAMEAR0_EA_Msk (0xffff8UL) /*!< EA (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= SRAMEAR1 ======================================================== */ + #define R_SRAM_SRAMEAR1_EA_Pos (3UL) /*!< EA (Bit 3) */ + #define R_SRAM_SRAMEAR1_EA_Msk (0xffff8UL) /*!< EA (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= SRAMEAR2 ======================================================== */ + #define R_SRAM_SRAMEAR2_EA_Pos (3UL) /*!< EA (Bit 3) */ + #define R_SRAM_SRAMEAR2_EA_Msk (0xffff8UL) /*!< EA (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= STBRAMCR ======================================================== */ + #define R_SRAM_STBRAMCR_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_SRAM_STBRAMCR_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ +/* ======================================================= STBRAMEAR ======================================================= */ + #define R_SRAM_STBRAMEAR_EA_Pos (2UL) /*!< EA (Bit 2) */ + #define R_SRAM_STBRAMEAR_EA_Msk (0x3fcUL) /*!< EA (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_SSI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SSICR ========================================================= */ + #define R_SSI0_SSICR_CKS_Pos (30UL) /*!< CKS (Bit 30) */ + #define R_SSI0_SSICR_CKS_Msk (0x40000000UL) /*!< CKS (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_TUIEN_Pos (29UL) /*!< TUIEN (Bit 29) */ + #define R_SSI0_SSICR_TUIEN_Msk (0x20000000UL) /*!< TUIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_TOIEN_Pos (28UL) /*!< TOIEN (Bit 28) */ + #define R_SSI0_SSICR_TOIEN_Msk (0x10000000UL) /*!< TOIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_RUIEN_Pos (27UL) /*!< RUIEN (Bit 27) */ + #define R_SSI0_SSICR_RUIEN_Msk (0x8000000UL) /*!< RUIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_ROIEN_Pos (26UL) /*!< ROIEN (Bit 26) */ + #define R_SSI0_SSICR_ROIEN_Msk (0x4000000UL) /*!< ROIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_IIEN_Pos (25UL) /*!< IIEN (Bit 25) */ + #define R_SSI0_SSICR_IIEN_Msk (0x2000000UL) /*!< IIEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_FRM_Pos (22UL) /*!< FRM (Bit 22) */ + #define R_SSI0_SSICR_FRM_Msk (0xc00000UL) /*!< FRM (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSICR_DWL_Pos (19UL) /*!< DWL (Bit 19) */ + #define R_SSI0_SSICR_DWL_Msk (0x380000UL) /*!< DWL (Bitfield-Mask: 0x07) */ + #define R_SSI0_SSICR_SWL_Pos (16UL) /*!< SWL (Bit 16) */ + #define R_SSI0_SSICR_SWL_Msk (0x70000UL) /*!< SWL (Bitfield-Mask: 0x07) */ + #define R_SSI0_SSICR_MST_Pos (14UL) /*!< MST (Bit 14) */ + #define R_SSI0_SSICR_MST_Msk (0x4000UL) /*!< MST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_BCKP_Pos (13UL) /*!< BCKP (Bit 13) */ + #define R_SSI0_SSICR_BCKP_Msk (0x2000UL) /*!< BCKP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_LRCKP_Pos (12UL) /*!< LRCKP (Bit 12) */ + #define R_SSI0_SSICR_LRCKP_Msk (0x1000UL) /*!< LRCKP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_SPDP_Pos (11UL) /*!< SPDP (Bit 11) */ + #define R_SSI0_SSICR_SPDP_Msk (0x800UL) /*!< SPDP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_SDTA_Pos (10UL) /*!< SDTA (Bit 10) */ + #define R_SSI0_SSICR_SDTA_Msk (0x400UL) /*!< SDTA (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_PDTA_Pos (9UL) /*!< PDTA (Bit 9) */ + #define R_SSI0_SSICR_PDTA_Msk (0x200UL) /*!< PDTA (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_DEL_Pos (8UL) /*!< DEL (Bit 8) */ + #define R_SSI0_SSICR_DEL_Msk (0x100UL) /*!< DEL (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_CKDV_Pos (4UL) /*!< CKDV (Bit 4) */ + #define R_SSI0_SSICR_CKDV_Msk (0xf0UL) /*!< CKDV (Bitfield-Mask: 0x0f) */ + #define R_SSI0_SSICR_MUEN_Pos (3UL) /*!< MUEN (Bit 3) */ + #define R_SSI0_SSICR_MUEN_Msk (0x8UL) /*!< MUEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_TEN_Pos (1UL) /*!< TEN (Bit 1) */ + #define R_SSI0_SSICR_TEN_Msk (0x2UL) /*!< TEN (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSICR_REN_Pos (0UL) /*!< REN (Bit 0) */ + #define R_SSI0_SSICR_REN_Msk (0x1UL) /*!< REN (Bitfield-Mask: 0x01) */ +/* ========================================================= SSISR ========================================================= */ + #define R_SSI0_SSISR_TUIRQ_Pos (29UL) /*!< TUIRQ (Bit 29) */ + #define R_SSI0_SSISR_TUIRQ_Msk (0x20000000UL) /*!< TUIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_TOIRQ_Pos (28UL) /*!< TOIRQ (Bit 28) */ + #define R_SSI0_SSISR_TOIRQ_Msk (0x10000000UL) /*!< TOIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_RUIRQ_Pos (27UL) /*!< RUIRQ (Bit 27) */ + #define R_SSI0_SSISR_RUIRQ_Msk (0x8000000UL) /*!< RUIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_ROIRQ_Pos (26UL) /*!< ROIRQ (Bit 26) */ + #define R_SSI0_SSISR_ROIRQ_Msk (0x4000000UL) /*!< ROIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_IIRQ_Pos (25UL) /*!< IIRQ (Bit 25) */ + #define R_SSI0_SSISR_IIRQ_Msk (0x2000000UL) /*!< IIRQ (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_TCHNO_Pos (5UL) /*!< TCHNO (Bit 5) */ + #define R_SSI0_SSISR_TCHNO_Msk (0x60UL) /*!< TCHNO (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSISR_TSWNO_Pos (4UL) /*!< TSWNO (Bit 4) */ + #define R_SSI0_SSISR_TSWNO_Msk (0x10UL) /*!< TSWNO (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_RCHNO_Pos (2UL) /*!< RCHNO (Bit 2) */ + #define R_SSI0_SSISR_RCHNO_Msk (0xcUL) /*!< RCHNO (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSISR_RSWNO_Pos (1UL) /*!< RSWNO (Bit 1) */ + #define R_SSI0_SSISR_RSWNO_Msk (0x2UL) /*!< RSWNO (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSISR_IDST_Pos (0UL) /*!< IDST (Bit 0) */ + #define R_SSI0_SSISR_IDST_Msk (0x1UL) /*!< IDST (Bitfield-Mask: 0x01) */ +/* ======================================================== SSIFCR ========================================================= */ + #define R_SSI0_SSIFCR_AUCKE_Pos (31UL) /*!< AUCKE (Bit 31) */ + #define R_SSI0_SSIFCR_AUCKE_Msk (0x80000000UL) /*!< AUCKE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_SSIRST_Pos (16UL) /*!< SSIRST (Bit 16) */ + #define R_SSI0_SSIFCR_SSIRST_Msk (0x10000UL) /*!< SSIRST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_TTRG_Pos (6UL) /*!< TTRG (Bit 6) */ + #define R_SSI0_SSIFCR_TTRG_Msk (0xc0UL) /*!< TTRG (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSIFCR_RTRG_Pos (4UL) /*!< RTRG (Bit 4) */ + #define R_SSI0_SSIFCR_RTRG_Msk (0x30UL) /*!< RTRG (Bitfield-Mask: 0x03) */ + #define R_SSI0_SSIFCR_TIE_Pos (3UL) /*!< TIE (Bit 3) */ + #define R_SSI0_SSIFCR_TIE_Msk (0x8UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_RIE_Pos (2UL) /*!< RIE (Bit 2) */ + #define R_SSI0_SSIFCR_RIE_Msk (0x4UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_TFRST_Pos (1UL) /*!< TFRST (Bit 1) */ + #define R_SSI0_SSIFCR_TFRST_Msk (0x2UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_RFRST_Pos (0UL) /*!< RFRST (Bit 0) */ + #define R_SSI0_SSIFCR_RFRST_Msk (0x1UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFCR_BSW_Pos (11UL) /*!< BSW (Bit 11) */ + #define R_SSI0_SSIFCR_BSW_Msk (0x800UL) /*!< BSW (Bitfield-Mask: 0x01) */ +/* ======================================================== SSIFSR ========================================================= */ + #define R_SSI0_SSIFSR_TDC_Pos (24UL) /*!< TDC (Bit 24) */ + #define R_SSI0_SSIFSR_TDC_Msk (0x3f000000UL) /*!< TDC (Bitfield-Mask: 0x3f) */ + #define R_SSI0_SSIFSR_TDE_Pos (16UL) /*!< TDE (Bit 16) */ + #define R_SSI0_SSIFSR_TDE_Msk (0x10000UL) /*!< TDE (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIFSR_RDC_Pos (8UL) /*!< RDC (Bit 8) */ + #define R_SSI0_SSIFSR_RDC_Msk (0x3f00UL) /*!< RDC (Bitfield-Mask: 0x3f) */ + #define R_SSI0_SSIFSR_RDF_Pos (0UL) /*!< RDF (Bit 0) */ + #define R_SSI0_SSIFSR_RDF_Msk (0x1UL) /*!< RDF (Bitfield-Mask: 0x01) */ +/* ======================================================== SSIFTDR ======================================================== */ + #define R_SSI0_SSIFTDR_SSIFTDR_Pos (0UL) /*!< SSIFTDR (Bit 0) */ + #define R_SSI0_SSIFTDR_SSIFTDR_Msk (0xffffffffUL) /*!< SSIFTDR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SSIFTDR16 ======================================================= */ +/* ======================================================= SSIFTDR8 ======================================================== */ +/* ======================================================== SSIFRDR ======================================================== */ + #define R_SSI0_SSIFRDR_SSIFRDR_Pos (0UL) /*!< SSIFRDR (Bit 0) */ + #define R_SSI0_SSIFRDR_SSIFRDR_Msk (0xffffffffUL) /*!< SSIFRDR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= SSIFRDR16 ======================================================= */ +/* ======================================================= SSIFRDR8 ======================================================== */ +/* ======================================================== SSIOFR ========================================================= */ + #define R_SSI0_SSIOFR_BCKASTP_Pos (9UL) /*!< BCKASTP (Bit 9) */ + #define R_SSI0_SSIOFR_BCKASTP_Msk (0x200UL) /*!< BCKASTP (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIOFR_LRCONT_Pos (8UL) /*!< LRCONT (Bit 8) */ + #define R_SSI0_SSIOFR_LRCONT_Msk (0x100UL) /*!< LRCONT (Bitfield-Mask: 0x01) */ + #define R_SSI0_SSIOFR_OMOD_Pos (0UL) /*!< OMOD (Bit 0) */ + #define R_SSI0_SSIOFR_OMOD_Msk (0x3UL) /*!< OMOD (Bitfield-Mask: 0x03) */ +/* ======================================================== SSISCR ========================================================= */ + #define R_SSI0_SSISCR_TDES_Pos (8UL) /*!< TDES (Bit 8) */ + #define R_SSI0_SSISCR_TDES_Msk (0x1f00UL) /*!< TDES (Bitfield-Mask: 0x1f) */ + #define R_SSI0_SSISCR_RDFS_Pos (0UL) /*!< RDFS (Bit 0) */ + #define R_SSI0_SSISCR_RDFS_Msk (0x1fUL) /*!< RDFS (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSTEM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SBYCR ========================================================= */ + #define R_SYSTEM_SBYCR_OPE_Pos (6UL) /*!< OPE (Bit 6) */ + #define R_SYSTEM_SBYCR_OPE_Msk (0x40UL) /*!< OPE (Bitfield-Mask: 0x01) */ +/* ========================================================= SSCR2 ========================================================= */ + #define R_SYSTEM_SSCR2_SS1RSF_Pos (0UL) /*!< SS1RSF (Bit 0) */ + #define R_SYSTEM_SSCR2_SS1RSF_Msk (0x1UL) /*!< SS1RSF (Bitfield-Mask: 0x01) */ +/* ========================================================= FLSCR ========================================================= */ + #define R_SYSTEM_FLSCR_FLSWCF_Pos (0UL) /*!< FLSWCF (Bit 0) */ + #define R_SYSTEM_FLSCR_FLSWCF_Msk (0x1UL) /*!< FLSWCF (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRA ======================================================== */ + #define R_SYSTEM_MSTPCRA_MSTPA_Pos (0UL) /*!< MSTPA (Bit 0) */ + #define R_SYSTEM_MSTPCRA_MSTPA_Msk (0x1UL) /*!< MSTPA (Bitfield-Mask: 0x01) */ +/* ======================================================= SCKDIVCR ======================================================== */ + #define R_SYSTEM_SCKDIVCR_FCK_Pos (28UL) /*!< FCK (Bit 28) */ + #define R_SYSTEM_SCKDIVCR_FCK_Msk (0xf0000000UL) /*!< FCK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_ICK_Pos (24UL) /*!< ICK (Bit 24) */ + #define R_SYSTEM_SCKDIVCR_ICK_Msk (0xf000000UL) /*!< ICK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKE_Pos (20UL) /*!< PCKE (Bit 20) */ + #define R_SYSTEM_SCKDIVCR_PCKE_Msk (0xf00000UL) /*!< PCKE (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_BCK_Pos (16UL) /*!< BCK (Bit 16) */ + #define R_SYSTEM_SCKDIVCR_BCK_Msk (0xf0000UL) /*!< BCK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKA_Pos (12UL) /*!< PCKA (Bit 12) */ + #define R_SYSTEM_SCKDIVCR_PCKA_Msk (0xf000UL) /*!< PCKA (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKB_Pos (8UL) /*!< PCKB (Bit 8) */ + #define R_SYSTEM_SCKDIVCR_PCKB_Msk (0xf00UL) /*!< PCKB (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKC_Pos (4UL) /*!< PCKC (Bit 4) */ + #define R_SYSTEM_SCKDIVCR_PCKC_Msk (0xf0UL) /*!< PCKC (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCKDIVCR_PCKD_Pos (0UL) /*!< PCKD (Bit 0) */ + #define R_SYSTEM_SCKDIVCR_PCKD_Msk (0xfUL) /*!< PCKD (Bitfield-Mask: 0x0f) */ +/* ======================================================= SCKDIVCR2 ======================================================= */ + #define R_SYSTEM_SCKDIVCR2_CPUCK_Pos (0UL) /*!< CPUCK (Bit 0) */ + #define R_SYSTEM_SCKDIVCR2_CPUCK_Msk (0xfUL) /*!< CPUCK (Bitfield-Mask: 0x0f) */ +/* ======================================================== SCKSCR ========================================================= */ + #define R_SYSTEM_SCKSCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_SCKSCR_CKSEL_Msk (0x7UL) /*!< CKSEL (Bitfield-Mask: 0x07) */ +/* ======================================================== PLLCCR ========================================================= */ + #define R_SYSTEM_PLLCCR_PLIDIV_Pos (0UL) /*!< PLIDIV (Bit 0) */ + #define R_SYSTEM_PLLCCR_PLIDIV_Msk (0x3UL) /*!< PLIDIV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLLCCR_PLSRCSEL_Pos (4UL) /*!< PLSRCSEL (Bit 4) */ + #define R_SYSTEM_PLLCCR_PLSRCSEL_Msk (0x10UL) /*!< PLSRCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLLCCR_PLLMULNF_Pos (6UL) /*!< PLLMULNF (Bit 6) */ + #define R_SYSTEM_PLLCCR_PLLMULNF_Msk (0xc0UL) /*!< PLLMULNF (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLLCCR_PLLMUL_Pos (8UL) /*!< PLLMUL (Bit 8) */ + #define R_SYSTEM_PLLCCR_PLLMUL_Msk (0xff00UL) /*!< PLLMUL (Bitfield-Mask: 0xff) */ +/* ========================================================= PLLCR ========================================================= */ + #define R_SYSTEM_PLLCR_PLLSTP_Pos (0UL) /*!< PLLSTP (Bit 0) */ + #define R_SYSTEM_PLLCR_PLLSTP_Msk (0x1UL) /*!< PLLSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= BCKCR ========================================================= */ + #define R_SYSTEM_BCKCR_BCLKDIV_Pos (0UL) /*!< BCLKDIV (Bit 0) */ + #define R_SYSTEM_BCKCR_BCLKDIV_Msk (0x1UL) /*!< BCLKDIV (Bitfield-Mask: 0x01) */ +/* ======================================================== MOSCCR ========================================================= */ + #define R_SYSTEM_MOSCCR_MOSTP_Pos (0UL) /*!< MOSTP (Bit 0) */ + #define R_SYSTEM_MOSCCR_MOSTP_Msk (0x1UL) /*!< MOSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== HOCOCR ========================================================= */ + #define R_SYSTEM_HOCOCR_HCSTP_Pos (0UL) /*!< HCSTP (Bit 0) */ + #define R_SYSTEM_HOCOCR_HCSTP_Msk (0x1UL) /*!< HCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== MOCOCR ========================================================= */ + #define R_SYSTEM_MOCOCR_MCSTP_Pos (0UL) /*!< MCSTP (Bit 0) */ + #define R_SYSTEM_MOCOCR_MCSTP_Msk (0x1UL) /*!< MCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================== FLLCR1 ========================================================= */ + #define R_SYSTEM_FLLCR1_FLLEN_Pos (0UL) /*!< FLLEN (Bit 0) */ + #define R_SYSTEM_FLLCR1_FLLEN_Msk (0x1UL) /*!< FLLEN (Bitfield-Mask: 0x01) */ +/* ======================================================== FLLCR2 ========================================================= */ + #define R_SYSTEM_FLLCR2_FLLCNTL_Pos (0UL) /*!< FLLCNTL (Bit 0) */ + #define R_SYSTEM_FLLCR2_FLLCNTL_Msk (0x7ffUL) /*!< FLLCNTL (Bitfield-Mask: 0x7ff) */ +/* ========================================================= OSCSF ========================================================= */ + #define R_SYSTEM_OSCSF_HOCOSF_Pos (0UL) /*!< HOCOSF (Bit 0) */ + #define R_SYSTEM_OSCSF_HOCOSF_Msk (0x1UL) /*!< HOCOSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCSF_MOSCSF_Pos (3UL) /*!< MOSCSF (Bit 3) */ + #define R_SYSTEM_OSCSF_MOSCSF_Msk (0x8UL) /*!< MOSCSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCSF_PLLSF_Pos (5UL) /*!< PLLSF (Bit 5) */ + #define R_SYSTEM_OSCSF_PLLSF_Msk (0x20UL) /*!< PLLSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCSF_PLL2SF_Pos (6UL) /*!< PLL2SF (Bit 6) */ + #define R_SYSTEM_OSCSF_PLL2SF_Msk (0x40UL) /*!< PLL2SF (Bitfield-Mask: 0x01) */ +/* ========================================================= CKOCR ========================================================= */ + #define R_SYSTEM_CKOCR_CKODIV_Pos (4UL) /*!< CKODIV (Bit 4) */ + #define R_SYSTEM_CKOCR_CKODIV_Msk (0x70UL) /*!< CKODIV (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_CKOCR_CKOEN_Pos (7UL) /*!< CKOEN (Bit 7) */ + #define R_SYSTEM_CKOCR_CKOEN_Msk (0x80UL) /*!< CKOEN (Bitfield-Mask: 0x01) */ +/* ======================================================== TRCKCR ========================================================= */ + #define R_SYSTEM_TRCKCR_TRCK_Pos (0UL) /*!< TRCK (Bit 0) */ + #define R_SYSTEM_TRCKCR_TRCK_Msk (0xfUL) /*!< TRCK (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_TRCKCR_TRCKSEL_Pos (4UL) /*!< TRCKSEL (Bit 4) */ + #define R_SYSTEM_TRCKCR_TRCKSEL_Msk (0x10UL) /*!< TRCKSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_TRCKCR_TRCKEN_Pos (7UL) /*!< TRCKEN (Bit 7) */ + #define R_SYSTEM_TRCKCR_TRCKEN_Msk (0x80UL) /*!< TRCKEN (Bitfield-Mask: 0x01) */ +/* ======================================================== OSTDCR ========================================================= */ + #define R_SYSTEM_OSTDCR_OSTDIE_Pos (0UL) /*!< OSTDIE (Bit 0) */ + #define R_SYSTEM_OSTDCR_OSTDIE_Msk (0x1UL) /*!< OSTDIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSTDCR_OSTDE_Pos (7UL) /*!< OSTDE (Bit 7) */ + #define R_SYSTEM_OSTDCR_OSTDE_Msk (0x80UL) /*!< OSTDE (Bitfield-Mask: 0x01) */ +/* ======================================================== OSTDSR ========================================================= */ + #define R_SYSTEM_OSTDSR_OSTDF_Pos (0UL) /*!< OSTDF (Bit 0) */ + #define R_SYSTEM_OSTDSR_OSTDF_Msk (0x1UL) /*!< OSTDF (Bitfield-Mask: 0x01) */ +/* ======================================================== OSCMONR ======================================================== */ + #define R_SYSTEM_OSCMONR_MOCOMON_Pos (1UL) /*!< MOCOMON (Bit 1) */ + #define R_SYSTEM_OSCMONR_MOCOMON_Msk (0x2UL) /*!< MOCOMON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OSCMONR_LOCOMON_Pos (2UL) /*!< LOCOMON (Bit 2) */ + #define R_SYSTEM_OSCMONR_LOCOMON_Msk (0x4UL) /*!< LOCOMON (Bitfield-Mask: 0x01) */ +/* ======================================================== PLL2CCR ======================================================== */ + #define R_SYSTEM_PLL2CCR_PL2IDIV_Pos (0UL) /*!< PL2IDIV (Bit 0) */ + #define R_SYSTEM_PLL2CCR_PL2IDIV_Msk (0x3UL) /*!< PL2IDIV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLL2CCR_PL2SRCSEL_Pos (4UL) /*!< PL2SRCSEL (Bit 4) */ + #define R_SYSTEM_PLL2CCR_PL2SRCSEL_Msk (0x10UL) /*!< PL2SRCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLL2CCR_PLL2MULNF_Pos (6UL) /*!< PLL2MULNF (Bit 6) */ + #define R_SYSTEM_PLL2CCR_PLL2MULNF_Msk (0xc0UL) /*!< PLL2MULNF (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_PLL2CCR_PLL2MUL_Pos (8UL) /*!< PLL2MUL (Bit 8) */ + #define R_SYSTEM_PLL2CCR_PLL2MUL_Msk (0xff00UL) /*!< PLL2MUL (Bitfield-Mask: 0xff) */ +/* ======================================================== PLL2CR ========================================================= */ + #define R_SYSTEM_PLL2CR_PLL2STP_Pos (0UL) /*!< PLL2STP (Bit 0) */ + #define R_SYSTEM_PLL2CR_PLL2STP_Msk (0x1UL) /*!< PLL2STP (Bitfield-Mask: 0x01) */ +/* ======================================================== PLLCCR2 ======================================================== */ + #define R_SYSTEM_PLLCCR2_PLODIVP_Pos (0UL) /*!< PLODIVP (Bit 0) */ + #define R_SYSTEM_PLLCCR2_PLODIVP_Msk (0xfUL) /*!< PLODIVP (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLLCCR2_PLODIVQ_Pos (4UL) /*!< PLODIVQ (Bit 4) */ + #define R_SYSTEM_PLLCCR2_PLODIVQ_Msk (0xf0UL) /*!< PLODIVQ (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLLCCR2_PLODIVR_Pos (8UL) /*!< PLODIVR (Bit 8) */ + #define R_SYSTEM_PLLCCR2_PLODIVR_Msk (0xf00UL) /*!< PLODIVR (Bitfield-Mask: 0x0f) */ +/* ======================================================= PLL2CCR2 ======================================================== */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVP_Pos (0UL) /*!< PL2ODIVP (Bit 0) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVP_Msk (0xfUL) /*!< PL2ODIVP (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVQ_Pos (4UL) /*!< PL2ODIVQ (Bit 4) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVQ_Msk (0xf0UL) /*!< PL2ODIVQ (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVR_Pos (8UL) /*!< PL2ODIVR (Bit 8) */ + #define R_SYSTEM_PLL2CCR2_PL2ODIVR_Msk (0xf00UL) /*!< PL2ODIVR (Bitfield-Mask: 0x0f) */ +/* ======================================================== EBCKOCR ======================================================== */ + #define R_SYSTEM_EBCKOCR_EBCKOEN_Pos (0UL) /*!< EBCKOEN (Bit 0) */ + #define R_SYSTEM_EBCKOCR_EBCKOEN_Msk (0x1UL) /*!< EBCKOEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SDCKOCR ======================================================== */ + #define R_SYSTEM_SDCKOCR_SDCKOEN_Pos (0UL) /*!< SDCKOEN (Bit 0) */ + #define R_SYSTEM_SDCKOCR_SDCKOEN_Msk (0x1UL) /*!< SDCKOEN (Bitfield-Mask: 0x01) */ +/* ====================================================== SCICKDIVCR ======================================================= */ + #define R_SYSTEM_SCICKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_SCICKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== SCICKCR ======================================================== */ + #define R_SYSTEM_SCICKCR_SCICKSEL_Pos (0UL) /*!< SCICKSEL (Bit 0) */ + #define R_SYSTEM_SCICKCR_SCICKSEL_Msk (0xfUL) /*!< SCICKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SCICKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_SCICKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SCICKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_SCICKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== SPICKDIVCR ======================================================= */ + #define R_SYSTEM_SPICKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_SPICKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== SPICKCR ======================================================== */ + #define R_SYSTEM_SPICKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_SPICKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_SPICKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_SPICKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SPICKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_SPICKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCCKDIVCR ======================================================= */ + #define R_SYSTEM_ADCCKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_ADCCKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== ADCCKCR ======================================================== */ + #define R_SYSTEM_ADCCKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_ADCCKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_ADCCKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_ADCCKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_ADCCKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_ADCCKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== GPTCKDIVCR ======================================================= */ + #define R_SYSTEM_GPTCKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_GPTCKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== GPTCKCR ======================================================== */ + #define R_SYSTEM_GPTCKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_GPTCKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_GPTCKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_GPTCKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_GPTCKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_GPTCKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ====================================================== LCDCKDIVCR ======================================================= */ + #define R_SYSTEM_LCDCKDIVCR_CKDIV_Pos (0UL) /*!< CKDIV (Bit 0) */ + #define R_SYSTEM_LCDCKDIVCR_CKDIV_Msk (0x7UL) /*!< CKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== LCDCKCR ======================================================== */ + #define R_SYSTEM_LCDCKCR_CKSEL_Pos (0UL) /*!< CKSEL (Bit 0) */ + #define R_SYSTEM_LCDCKCR_CKSEL_Msk (0xfUL) /*!< CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_LCDCKCR_CKSREQ_Pos (6UL) /*!< CKSREQ (Bit 6) */ + #define R_SYSTEM_LCDCKCR_CKSREQ_Msk (0x40UL) /*!< CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LCDCKCR_CKSRDY_Pos (7UL) /*!< CKSRDY (Bit 7) */ + #define R_SYSTEM_LCDCKCR_CKSRDY_Msk (0x80UL) /*!< CKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= MOCOUTCR ======================================================== */ + #define R_SYSTEM_MOCOUTCR_MOCOUTRM_Pos (0UL) /*!< MOCOUTRM (Bit 0) */ + #define R_SYSTEM_MOCOUTCR_MOCOUTRM_Msk (0xffUL) /*!< MOCOUTRM (Bitfield-Mask: 0xff) */ +/* ======================================================= HOCOUTCR ======================================================== */ + #define R_SYSTEM_HOCOUTCR_HOCOUTRM_Pos (0UL) /*!< HOCOUTRM (Bit 0) */ + #define R_SYSTEM_HOCOUTCR_HOCOUTRM_Msk (0xffUL) /*!< HOCOUTRM (Bitfield-Mask: 0xff) */ +/* ====================================================== USBCKDIVCR ======================================================= */ + #define R_SYSTEM_USBCKDIVCR_USBCKDIV_Pos (0UL) /*!< USBCKDIV (Bit 0) */ + #define R_SYSTEM_USBCKDIVCR_USBCKDIV_Msk (0x7UL) /*!< USBCKDIV (Bitfield-Mask: 0x07) */ +/* ====================================================== OCTACKDIVCR ====================================================== */ + #define R_SYSTEM_OCTACKDIVCR_OCTACKDIV_Pos (0UL) /*!< OCTACKDIV (Bit 0) */ + #define R_SYSTEM_OCTACKDIVCR_OCTACKDIV_Msk (0x7UL) /*!< OCTACKDIV (Bitfield-Mask: 0x07) */ +/* ===================================================== CANFDCKDIVCR ====================================================== */ + #define R_SYSTEM_CANFDCKDIVCR_CANFDCKDIV_Pos (0UL) /*!< CANFDCKDIV (Bit 0) */ + #define R_SYSTEM_CANFDCKDIVCR_CANFDCKDIV_Msk (0x7UL) /*!< CANFDCKDIV (Bitfield-Mask: 0x07) */ +/* ===================================================== USB60CKDIVCR ====================================================== */ + #define R_SYSTEM_USB60CKDIVCR_USB60CKDIV_Pos (0UL) /*!< USB60CKDIV (Bit 0) */ + #define R_SYSTEM_USB60CKDIVCR_USB60CKDIV_Msk (0x7UL) /*!< USB60CKDIV (Bitfield-Mask: 0x07) */ +/* ====================================================== I3CCKDIVCR ======================================================= */ + #define R_SYSTEM_I3CCKDIVCR_I3CCKDIV_Pos (0UL) /*!< I3CCKDIV (Bit 0) */ + #define R_SYSTEM_I3CCKDIVCR_I3CCKDIV_Msk (0x7UL) /*!< I3CCKDIV (Bitfield-Mask: 0x07) */ +/* ======================================================== USBCKCR ======================================================== */ + #define R_SYSTEM_USBCKCR_USBCKSEL_Pos (0UL) /*!< USBCKSEL (Bit 0) */ + #define R_SYSTEM_USBCKCR_USBCKSEL_Msk (0xfUL) /*!< USBCKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_USBCKCR_USBCKSREQ_Pos (6UL) /*!< USBCKSREQ (Bit 6) */ + #define R_SYSTEM_USBCKCR_USBCKSREQ_Msk (0x40UL) /*!< USBCKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_USBCKCR_USBCKSRDY_Pos (7UL) /*!< USBCKSRDY (Bit 7) */ + #define R_SYSTEM_USBCKCR_USBCKSRDY_Msk (0x80UL) /*!< USBCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= OCTACKCR ======================================================== */ + #define R_SYSTEM_OCTACKCR_OCTACKSEL_Pos (0UL) /*!< OCTACKSEL (Bit 0) */ + #define R_SYSTEM_OCTACKCR_OCTACKSEL_Msk (0xfUL) /*!< OCTACKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_OCTACKCR_OCTACKSREQ_Pos (6UL) /*!< OCTACKSREQ (Bit 6) */ + #define R_SYSTEM_OCTACKCR_OCTACKSREQ_Msk (0x40UL) /*!< OCTACKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OCTACKCR_OCTACKSRDY_Pos (7UL) /*!< OCTACKSRDY (Bit 7) */ + #define R_SYSTEM_OCTACKCR_OCTACKSRDY_Msk (0x80UL) /*!< OCTACKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= CANFDCKCR ======================================================= */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSEL_Pos (0UL) /*!< CANFDCKSEL (Bit 0) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSEL_Msk (0xfUL) /*!< CANFDCKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSREQ_Pos (6UL) /*!< CANFDCKSREQ (Bit 6) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSREQ_Msk (0x40UL) /*!< CANFDCKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSRDY_Pos (7UL) /*!< CANFDCKSRDY (Bit 7) */ + #define R_SYSTEM_CANFDCKCR_CANFDCKSRDY_Msk (0x80UL) /*!< CANFDCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================= USB60CKCR ======================================================= */ + #define R_SYSTEM_USB60CKCR_USB60CKSEL_Pos (0UL) /*!< USB60CKSEL (Bit 0) */ + #define R_SYSTEM_USB60CKCR_USB60CKSEL_Msk (0xfUL) /*!< USB60CKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_USB60CKCR_USB60CKSREQ_Pos (6UL) /*!< USB60CKSREQ (Bit 6) */ + #define R_SYSTEM_USB60CKCR_USB60CKSREQ_Msk (0x40UL) /*!< USB60CKSREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_USB60CKCR_USB60CKSRDY_Pos (7UL) /*!< USB60CKSRDY (Bit 7) */ + #define R_SYSTEM_USB60CKCR_USB60CKSRDY_Msk (0x80UL) /*!< USB60CKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== I3CCKCR ======================================================== */ + #define R_SYSTEM_I3CCKCR_I3CCKSEL_Pos (0UL) /*!< I3CCKSEL (Bit 0) */ + #define R_SYSTEM_I3CCKCR_I3CCKSEL_Msk (0xfUL) /*!< I3CCKSEL (Bitfield-Mask: 0x0f) */ + #define R_SYSTEM_I3CCKCR_I3CCKREQ_Pos (6UL) /*!< I3CCKREQ (Bit 6) */ + #define R_SYSTEM_I3CCKCR_I3CCKREQ_Msk (0x40UL) /*!< I3CCKREQ (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_I3CCKCR_I3CCKSRDY_Pos (7UL) /*!< I3CCKSRDY (Bit 7) */ + #define R_SYSTEM_I3CCKCR_I3CCKSRDY_Msk (0x80UL) /*!< I3CCKSRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== MOSCSCR ======================================================== */ + #define R_SYSTEM_MOSCSCR_MOSCSOKP_Pos (0UL) /*!< MOSCSOKP (Bit 0) */ + #define R_SYSTEM_MOSCSCR_MOSCSOKP_Msk (0x1UL) /*!< MOSCSOKP (Bitfield-Mask: 0x01) */ +/* ======================================================== HOCOSCR ======================================================== */ + #define R_SYSTEM_HOCOSCR_HOCOSOKP_Pos (0UL) /*!< HOCOSOKP (Bit 0) */ + #define R_SYSTEM_HOCOSCR_HOCOSOKP_Msk (0x1UL) /*!< HOCOSOKP (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZREQCR1 ======================================================= */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN_Pos (0UL) /*!< SNZREQEN (Bit 0) */ + #define R_SYSTEM_SNZREQCR1_SNZREQEN_Msk (0x1UL) /*!< SNZREQEN (Bitfield-Mask: 0x01) */ +/* ========================================================= SNZCR ========================================================= */ + #define R_SYSTEM_SNZCR_SNZE_Pos (7UL) /*!< SNZE (Bit 7) */ + #define R_SYSTEM_SNZCR_SNZE_Msk (0x80UL) /*!< SNZE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZCR_SNZDTCEN_Pos (1UL) /*!< SNZDTCEN (Bit 1) */ + #define R_SYSTEM_SNZCR_SNZDTCEN_Msk (0x2UL) /*!< SNZDTCEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZCR_RXDREQEN_Pos (0UL) /*!< RXDREQEN (Bit 0) */ + #define R_SYSTEM_SNZCR_RXDREQEN_Msk (0x1UL) /*!< RXDREQEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SNZEDCR ======================================================== */ + #define R_SYSTEM_SNZEDCR_SCI0UMTED_Pos (7UL) /*!< SCI0UMTED (Bit 7) */ + #define R_SYSTEM_SNZEDCR_SCI0UMTED_Msk (0x80UL) /*!< SCI0UMTED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD1UMTED_Pos (6UL) /*!< AD1UMTED (Bit 6) */ + #define R_SYSTEM_SNZEDCR_AD1UMTED_Msk (0x40UL) /*!< AD1UMTED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD1MATED_Pos (5UL) /*!< AD1MATED (Bit 5) */ + #define R_SYSTEM_SNZEDCR_AD1MATED_Msk (0x20UL) /*!< AD1MATED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD0UMTED_Pos (4UL) /*!< AD0UMTED (Bit 4) */ + #define R_SYSTEM_SNZEDCR_AD0UMTED_Msk (0x10UL) /*!< AD0UMTED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AD0MATED_Pos (3UL) /*!< AD0MATED (Bit 3) */ + #define R_SYSTEM_SNZEDCR_AD0MATED_Msk (0x8UL) /*!< AD0MATED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_DTCNZRED_Pos (2UL) /*!< DTCNZRED (Bit 2) */ + #define R_SYSTEM_SNZEDCR_DTCNZRED_Msk (0x4UL) /*!< DTCNZRED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_DTCZRED_Pos (1UL) /*!< DTCZRED (Bit 1) */ + #define R_SYSTEM_SNZEDCR_DTCZRED_Msk (0x2UL) /*!< DTCZRED (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZEDCR_AGT1UNFED_Pos (0UL) /*!< AGT1UNFED (Bit 0) */ + #define R_SYSTEM_SNZEDCR_AGT1UNFED_Msk (0x1UL) /*!< AGT1UNFED (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZEDCR1 ======================================================== */ + #define R_SYSTEM_SNZEDCR1_AGT3UNFED_Pos (0UL) /*!< AGT3UNFED (Bit 0) */ + #define R_SYSTEM_SNZEDCR1_AGT3UNFED_Msk (0x1UL) /*!< AGT3UNFED (Bitfield-Mask: 0x01) */ +/* ======================================================= SNZREQCR ======================================================== */ + #define R_SYSTEM_SNZREQCR_SNZREQEN30_Pos (30UL) /*!< SNZREQEN30 (Bit 30) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN30_Msk (0x40000000UL) /*!< SNZREQEN30 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN29_Pos (29UL) /*!< SNZREQEN29 (Bit 29) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN29_Msk (0x20000000UL) /*!< SNZREQEN29 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN28_Pos (28UL) /*!< SNZREQEN28 (Bit 28) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN28_Msk (0x10000000UL) /*!< SNZREQEN28 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN25_Pos (25UL) /*!< SNZREQEN25 (Bit 25) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN25_Msk (0x2000000UL) /*!< SNZREQEN25 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN24_Pos (24UL) /*!< SNZREQEN24 (Bit 24) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN24_Msk (0x1000000UL) /*!< SNZREQEN24 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN23_Pos (23UL) /*!< SNZREQEN23 (Bit 23) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN23_Msk (0x800000UL) /*!< SNZREQEN23 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN22_Pos (22UL) /*!< SNZREQEN22 (Bit 22) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN22_Msk (0x400000UL) /*!< SNZREQEN22 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN17_Pos (17UL) /*!< SNZREQEN17 (Bit 17) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN17_Msk (0x20000UL) /*!< SNZREQEN17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN_Pos (0UL) /*!< SNZREQEN (Bit 0) */ + #define R_SYSTEM_SNZREQCR_SNZREQEN_Msk (0x1UL) /*!< SNZREQEN (Bitfield-Mask: 0x01) */ +/* ========================================================= OPCCR ========================================================= */ + #define R_SYSTEM_OPCCR_OPCMTSF_Pos (4UL) /*!< OPCMTSF (Bit 4) */ + #define R_SYSTEM_OPCCR_OPCMTSF_Msk (0x10UL) /*!< OPCMTSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_OPCCR_OPCM_Pos (0UL) /*!< OPCM (Bit 0) */ + #define R_SYSTEM_OPCCR_OPCM_Msk (0x3UL) /*!< OPCM (Bitfield-Mask: 0x03) */ +/* ======================================================= MOSCWTCR ======================================================== */ + #define R_SYSTEM_MOSCWTCR_MSTS_Pos (0UL) /*!< MSTS (Bit 0) */ + #define R_SYSTEM_MOSCWTCR_MSTS_Msk (0xfUL) /*!< MSTS (Bitfield-Mask: 0x0f) */ +/* ======================================================= HOCOWTCR ======================================================== */ + #define R_SYSTEM_HOCOWTCR_HSTS_Pos (0UL) /*!< HSTS (Bit 0) */ + #define R_SYSTEM_HOCOWTCR_HSTS_Msk (0x7UL) /*!< HSTS (Bitfield-Mask: 0x07) */ +/* ======================================================== SOPCCR ========================================================= */ + #define R_SYSTEM_SOPCCR_SOPCMTSF_Pos (4UL) /*!< SOPCMTSF (Bit 4) */ + #define R_SYSTEM_SOPCCR_SOPCMTSF_Msk (0x10UL) /*!< SOPCMTSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SOPCCR_SOPCM_Pos (0UL) /*!< SOPCM (Bit 0) */ + #define R_SYSTEM_SOPCCR_SOPCM_Msk (0x1UL) /*!< SOPCM (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR1 ========================================================= */ + #define R_SYSTEM_RSTSR1_IWDTRF_Pos (0UL) /*!< IWDTRF (Bit 0) */ + #define R_SYSTEM_RSTSR1_IWDTRF_Msk (0x1UL) /*!< IWDTRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_WDTRF_Pos (1UL) /*!< WDTRF (Bit 1) */ + #define R_SYSTEM_RSTSR1_WDTRF_Msk (0x2UL) /*!< WDTRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_SWRF_Pos (2UL) /*!< SWRF (Bit 2) */ + #define R_SYSTEM_RSTSR1_SWRF_Msk (0x4UL) /*!< SWRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CLU0RF_Pos (4UL) /*!< CLU0RF (Bit 4) */ + #define R_SYSTEM_RSTSR1_CLU0RF_Msk (0x10UL) /*!< CLU0RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_LM0RF_Pos (5UL) /*!< LM0RF (Bit 5) */ + #define R_SYSTEM_RSTSR1_LM0RF_Msk (0x20UL) /*!< LM0RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_BUSRF_Pos (10UL) /*!< BUSRF (Bit 10) */ + #define R_SYSTEM_RSTSR1_BUSRF_Msk (0x400UL) /*!< BUSRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CMRF_Pos (14UL) /*!< CMRF (Bit 14) */ + #define R_SYSTEM_RSTSR1_CMRF_Msk (0x4000UL) /*!< CMRF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_WDT1RF_Pos (17UL) /*!< WDT1RF (Bit 17) */ + #define R_SYSTEM_RSTSR1_WDT1RF_Msk (0x20000UL) /*!< WDT1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_CLU1RF_Pos (20UL) /*!< CLU1RF (Bit 20) */ + #define R_SYSTEM_RSTSR1_CLU1RF_Msk (0x100000UL) /*!< CLU1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_LM1RF_Pos (21UL) /*!< LM1RF (Bit 21) */ + #define R_SYSTEM_RSTSR1_LM1RF_Msk (0x200000UL) /*!< LM1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR1_NWRF_Pos (22UL) /*!< NWRF (Bit 22) */ + #define R_SYSTEM_RSTSR1_NWRF_Msk (0x400000UL) /*!< NWRF (Bitfield-Mask: 0x01) */ +/* ======================================================== SYRACCR ======================================================== */ + #define R_SYSTEM_SYRACCR_BUSY_Pos (0UL) /*!< BUSY (Bit 0) */ + #define R_SYSTEM_SYRACCR_BUSY_Msk (0x1UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1CR1 ======================================================== */ + #define R_SYSTEM_LVD1CR1_IDTSEL_Pos (0UL) /*!< IDTSEL (Bit 0) */ + #define R_SYSTEM_LVD1CR1_IDTSEL_Msk (0x3UL) /*!< IDTSEL (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD1CR1_IRQSEL_Pos (2UL) /*!< IRQSEL (Bit 2) */ + #define R_SYSTEM_LVD1CR1_IRQSEL_Msk (0x4UL) /*!< IRQSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2CR1 ======================================================== */ + #define R_SYSTEM_LVD2CR1_IDTSEL_Pos (0UL) /*!< IDTSEL (Bit 0) */ + #define R_SYSTEM_LVD2CR1_IDTSEL_Msk (0x3UL) /*!< IDTSEL (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD2CR1_IRQSEL_Pos (2UL) /*!< IRQSEL (Bit 2) */ + #define R_SYSTEM_LVD2CR1_IRQSEL_Msk (0x4UL) /*!< IRQSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1SR ========================================================= */ + #define R_SYSTEM_LVD1SR_DET_Pos (0UL) /*!< DET (Bit 0) */ + #define R_SYSTEM_LVD1SR_DET_Msk (0x1UL) /*!< DET (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1SR_MON_Pos (1UL) /*!< MON (Bit 1) */ + #define R_SYSTEM_LVD1SR_MON_Msk (0x2UL) /*!< MON (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2SR ========================================================= */ + #define R_SYSTEM_LVD2SR_DET_Pos (0UL) /*!< DET (Bit 0) */ + #define R_SYSTEM_LVD2SR_DET_Msk (0x1UL) /*!< DET (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2SR_MON_Pos (1UL) /*!< MON (Bit 1) */ + #define R_SYSTEM_LVD2SR_MON_Msk (0x2UL) /*!< MON (Bitfield-Mask: 0x01) */ +/* ======================================================= CRVSYSCR ======================================================== */ + #define R_SYSTEM_CRVSYSCR_CRVEN_Pos (0UL) /*!< CRVEN (Bit 0) */ + #define R_SYSTEM_CRVSYSCR_CRVEN_Msk (0x1UL) /*!< CRVEN (Bitfield-Mask: 0x01) */ +/* ======================================================== PDCTRGD ======================================================== */ + #define R_SYSTEM_PDCTRGD_PDDE_Pos (0UL) /*!< PDDE (Bit 0) */ + #define R_SYSTEM_PDCTRGD_PDDE_Msk (0x1UL) /*!< PDDE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PDCTRGD_PDCSF_Pos (6UL) /*!< PDCSF (Bit 6) */ + #define R_SYSTEM_PDCTRGD_PDCSF_Msk (0x40UL) /*!< PDCSF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PDCTRGD_PDPGSF_Pos (7UL) /*!< PDPGSF (Bit 7) */ + #define R_SYSTEM_PDCTRGD_PDPGSF_Msk (0x80UL) /*!< PDPGSF (Bitfield-Mask: 0x01) */ +/* ======================================================= PDRAMSCR0 ======================================================= */ +/* ======================================================= PDRAMSCR1 ======================================================= */ +/* ======================================================= VBRSABAR ======================================================== */ + #define R_SYSTEM_VBRSABAR_SABA_Pos (0UL) /*!< SABA (Bit 0) */ + #define R_SYSTEM_VBRSABAR_SABA_Msk (0xffffUL) /*!< SABA (Bitfield-Mask: 0xffff) */ +/* ======================================================= VBRPABARS ======================================================= */ + #define R_SYSTEM_VBRPABARS_PABAS_Pos (0UL) /*!< PABAS (Bit 0) */ + #define R_SYSTEM_VBRPABARS_PABAS_Msk (0xffffUL) /*!< PABAS (Bitfield-Mask: 0xffff) */ +/* ====================================================== VBRPABARNS ======================================================= */ + #define R_SYSTEM_VBRPABARNS_PABANS_Pos (0UL) /*!< PABANS (Bit 0) */ + #define R_SYSTEM_VBRPABARNS_PABANS_Msk (0xffffUL) /*!< PABANS (Bitfield-Mask: 0xffff) */ +/* ======================================================== CGFSAR ========================================================= */ + #define R_SYSTEM_CGFSAR_NONSEC00_Pos (0UL) /*!< NONSEC00 (Bit 0) */ + #define R_SYSTEM_CGFSAR_NONSEC00_Msk (0x1UL) /*!< NONSEC00 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC02_Pos (2UL) /*!< NONSEC02 (Bit 2) */ + #define R_SYSTEM_CGFSAR_NONSEC02_Msk (0x4UL) /*!< NONSEC02 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC03_Pos (3UL) /*!< NONSEC03 (Bit 3) */ + #define R_SYSTEM_CGFSAR_NONSEC03_Msk (0x8UL) /*!< NONSEC03 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC04_Pos (4UL) /*!< NONSEC04 (Bit 4) */ + #define R_SYSTEM_CGFSAR_NONSEC04_Msk (0x10UL) /*!< NONSEC04 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC05_Pos (5UL) /*!< NONSEC05 (Bit 5) */ + #define R_SYSTEM_CGFSAR_NONSEC05_Msk (0x20UL) /*!< NONSEC05 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC06_Pos (6UL) /*!< NONSEC06 (Bit 6) */ + #define R_SYSTEM_CGFSAR_NONSEC06_Msk (0x40UL) /*!< NONSEC06 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC07_Pos (7UL) /*!< NONSEC07 (Bit 7) */ + #define R_SYSTEM_CGFSAR_NONSEC07_Msk (0x80UL) /*!< NONSEC07 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC08_Pos (8UL) /*!< NONSEC08 (Bit 8) */ + #define R_SYSTEM_CGFSAR_NONSEC08_Msk (0x100UL) /*!< NONSEC08 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC09_Pos (9UL) /*!< NONSEC09 (Bit 9) */ + #define R_SYSTEM_CGFSAR_NONSEC09_Msk (0x200UL) /*!< NONSEC09 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC11_Pos (11UL) /*!< NONSEC11 (Bit 11) */ + #define R_SYSTEM_CGFSAR_NONSEC11_Msk (0x800UL) /*!< NONSEC11 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC12_Pos (12UL) /*!< NONSEC12 (Bit 12) */ + #define R_SYSTEM_CGFSAR_NONSEC12_Msk (0x1000UL) /*!< NONSEC12 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC13_Pos (13UL) /*!< NONSEC13 (Bit 13) */ + #define R_SYSTEM_CGFSAR_NONSEC13_Msk (0x2000UL) /*!< NONSEC13 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC16_Pos (16UL) /*!< NONSEC16 (Bit 16) */ + #define R_SYSTEM_CGFSAR_NONSEC16_Msk (0x10000UL) /*!< NONSEC16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC17_Pos (17UL) /*!< NONSEC17 (Bit 17) */ + #define R_SYSTEM_CGFSAR_NONSEC17_Msk (0x20000UL) /*!< NONSEC17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC18_Pos (18UL) /*!< NONSEC18 (Bit 18) */ + #define R_SYSTEM_CGFSAR_NONSEC18_Msk (0x40000UL) /*!< NONSEC18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC19_Pos (19UL) /*!< NONSEC19 (Bit 19) */ + #define R_SYSTEM_CGFSAR_NONSEC19_Msk (0x80000UL) /*!< NONSEC19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC20_Pos (20UL) /*!< NONSEC20 (Bit 20) */ + #define R_SYSTEM_CGFSAR_NONSEC20_Msk (0x100000UL) /*!< NONSEC20 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC21_Pos (21UL) /*!< NONSEC21 (Bit 21) */ + #define R_SYSTEM_CGFSAR_NONSEC21_Msk (0x200000UL) /*!< NONSEC21 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC22_Pos (22UL) /*!< NONSEC22 (Bit 22) */ + #define R_SYSTEM_CGFSAR_NONSEC22_Msk (0x400000UL) /*!< NONSEC22 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC24_Pos (24UL) /*!< NONSEC24 (Bit 24) */ + #define R_SYSTEM_CGFSAR_NONSEC24_Msk (0x1000000UL) /*!< NONSEC24 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC25_Pos (25UL) /*!< NONSEC25 (Bit 25) */ + #define R_SYSTEM_CGFSAR_NONSEC25_Msk (0x2000000UL) /*!< NONSEC25 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_CGFSAR_NONSEC26_Pos (26UL) /*!< NONSEC26 (Bit 26) */ + #define R_SYSTEM_CGFSAR_NONSEC26_Msk (0x4000000UL) /*!< NONSEC26 (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSAR ========================================================= */ + #define R_SYSTEM_RSTSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_RSTSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_RSTSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_RSTSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSAR_NONSEC3_Pos (3UL) /*!< NONSEC3 (Bit 3) */ + #define R_SYSTEM_RSTSAR_NONSEC3_Msk (0x8UL) /*!< NONSEC3 (Bitfield-Mask: 0x01) */ +/* ======================================================== LPMSAR ========================================================= */ + #define R_SYSTEM_LPMSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_LPMSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_LPMSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_LPMSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC3_Pos (3UL) /*!< NONSEC3 (Bit 3) */ + #define R_SYSTEM_LPMSAR_NONSEC3_Msk (0x8UL) /*!< NONSEC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC8_Pos (8UL) /*!< NONSEC8 (Bit 8) */ + #define R_SYSTEM_LPMSAR_NONSEC8_Msk (0x100UL) /*!< NONSEC8 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC16_Pos (16UL) /*!< NONSEC16 (Bit 16) */ + #define R_SYSTEM_LPMSAR_NONSEC16_Msk (0x10000UL) /*!< NONSEC16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC17_Pos (17UL) /*!< NONSEC17 (Bit 17) */ + #define R_SYSTEM_LPMSAR_NONSEC17_Msk (0x20000UL) /*!< NONSEC17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC18_Pos (18UL) /*!< NONSEC18 (Bit 18) */ + #define R_SYSTEM_LPMSAR_NONSEC18_Msk (0x40000UL) /*!< NONSEC18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC19_Pos (19UL) /*!< NONSEC19 (Bit 19) */ + #define R_SYSTEM_LPMSAR_NONSEC19_Msk (0x80000UL) /*!< NONSEC19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LPMSAR_NONSEC21_Pos (21UL) /*!< NONSEC21 (Bit 21) */ + #define R_SYSTEM_LPMSAR_NONSEC21_Msk (0x200000UL) /*!< NONSEC21 (Bitfield-Mask: 0x01) */ +/* ======================================================== LVDSAR ========================================================= */ + #define R_SYSTEM_LVDSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_LVDSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVDSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_LVDSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ +/* ======================================================== BBFSAR ========================================================= */ + #define R_SYSTEM_BBFSAR_NONSEC0_Pos (0UL) /*!< NONSEC0 (Bit 0) */ + #define R_SYSTEM_BBFSAR_NONSEC0_Msk (0x1UL) /*!< NONSEC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_BBFSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_BBFSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC3_Pos (3UL) /*!< NONSEC3 (Bit 3) */ + #define R_SYSTEM_BBFSAR_NONSEC3_Msk (0x8UL) /*!< NONSEC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_BBFSAR_NONSEC4_Pos (4UL) /*!< NONSEC4 (Bit 4) */ + #define R_SYSTEM_BBFSAR_NONSEC4_Msk (0x10UL) /*!< NONSEC4 (Bitfield-Mask: 0x01) */ +/* ======================================================== PGCSAR ========================================================= */ + #define R_SYSTEM_PGCSAR_NONSEC1_Pos (1UL) /*!< NONSEC1 (Bit 1) */ + #define R_SYSTEM_PGCSAR_NONSEC1_Msk (0x2UL) /*!< NONSEC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PGCSAR_NONSEC2_Pos (2UL) /*!< NONSEC2 (Bit 2) */ + #define R_SYSTEM_PGCSAR_NONSEC2_Msk (0x4UL) /*!< NONSEC2 (Bitfield-Mask: 0x01) */ +/* ======================================================== DPFSAR ========================================================= */ + #define R_SYSTEM_DPFSAR_DPFSA16_Pos (16UL) /*!< DPFSA16 (Bit 16) */ + #define R_SYSTEM_DPFSAR_DPFSA16_Msk (0x10000UL) /*!< DPFSA16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA17_Pos (17UL) /*!< DPFSA17 (Bit 17) */ + #define R_SYSTEM_DPFSAR_DPFSA17_Msk (0x20000UL) /*!< DPFSA17 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA18_Pos (18UL) /*!< DPFSA18 (Bit 18) */ + #define R_SYSTEM_DPFSAR_DPFSA18_Msk (0x40000UL) /*!< DPFSA18 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA19_Pos (19UL) /*!< DPFSA19 (Bit 19) */ + #define R_SYSTEM_DPFSAR_DPFSA19_Msk (0x80000UL) /*!< DPFSA19 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA20_Pos (20UL) /*!< DPFSA20 (Bit 20) */ + #define R_SYSTEM_DPFSAR_DPFSA20_Msk (0x100000UL) /*!< DPFSA20 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA24_Pos (24UL) /*!< DPFSA24 (Bit 24) */ + #define R_SYSTEM_DPFSAR_DPFSA24_Msk (0x1000000UL) /*!< DPFSA24 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA25_Pos (25UL) /*!< DPFSA25 (Bit 25) */ + #define R_SYSTEM_DPFSAR_DPFSA25_Msk (0x2000000UL) /*!< DPFSA25 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA26_Pos (26UL) /*!< DPFSA26 (Bit 26) */ + #define R_SYSTEM_DPFSAR_DPFSA26_Msk (0x4000000UL) /*!< DPFSA26 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA27_Pos (27UL) /*!< DPFSA27 (Bit 27) */ + #define R_SYSTEM_DPFSAR_DPFSA27_Msk (0x8000000UL) /*!< DPFSA27 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA29_Pos (29UL) /*!< DPFSA29 (Bit 29) */ + #define R_SYSTEM_DPFSAR_DPFSA29_Msk (0x20000000UL) /*!< DPFSA29 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPFSAR_DPFSA31_Pos (31UL) /*!< DPFSA31 (Bit 31) */ + #define R_SYSTEM_DPFSAR_DPFSA31_Msk (0x80000000UL) /*!< DPFSA31 (Bitfield-Mask: 0x01) */ +/* ======================================================== RSCSAR ========================================================= */ + #define R_SYSTEM_RSCSAR_RSCSA0_Pos (0UL) /*!< RSCSA0 (Bit 0) */ + #define R_SYSTEM_RSCSAR_RSCSA0_Msk (0x1UL) /*!< RSCSA0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA1_Pos (1UL) /*!< RSCSA1 (Bit 1) */ + #define R_SYSTEM_RSCSAR_RSCSA1_Msk (0x2UL) /*!< RSCSA1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA2_Pos (2UL) /*!< RSCSA2 (Bit 2) */ + #define R_SYSTEM_RSCSAR_RSCSA2_Msk (0x4UL) /*!< RSCSA2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA3_Pos (3UL) /*!< RSCSA3 (Bit 3) */ + #define R_SYSTEM_RSCSAR_RSCSA3_Msk (0x8UL) /*!< RSCSA3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA4_Pos (4UL) /*!< RSCSA4 (Bit 4) */ + #define R_SYSTEM_RSCSAR_RSCSA4_Msk (0x10UL) /*!< RSCSA4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA5_Pos (5UL) /*!< RSCSA5 (Bit 5) */ + #define R_SYSTEM_RSCSAR_RSCSA5_Msk (0x20UL) /*!< RSCSA5 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA6_Pos (6UL) /*!< RSCSA6 (Bit 6) */ + #define R_SYSTEM_RSCSAR_RSCSA6_Msk (0x40UL) /*!< RSCSA6 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA7_Pos (7UL) /*!< RSCSA7 (Bit 7) */ + #define R_SYSTEM_RSCSAR_RSCSA7_Msk (0x80UL) /*!< RSCSA7 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA8_Pos (8UL) /*!< RSCSA8 (Bit 8) */ + #define R_SYSTEM_RSCSAR_RSCSA8_Msk (0x100UL) /*!< RSCSA8 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA9_Pos (9UL) /*!< RSCSA9 (Bit 9) */ + #define R_SYSTEM_RSCSAR_RSCSA9_Msk (0x200UL) /*!< RSCSA9 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA10_Pos (10UL) /*!< RSCSA10 (Bit 10) */ + #define R_SYSTEM_RSCSAR_RSCSA10_Msk (0x400UL) /*!< RSCSA10 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA11_Pos (11UL) /*!< RSCSA11 (Bit 11) */ + #define R_SYSTEM_RSCSAR_RSCSA11_Msk (0x800UL) /*!< RSCSA11 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA12_Pos (12UL) /*!< RSCSA12 (Bit 12) */ + #define R_SYSTEM_RSCSAR_RSCSA12_Msk (0x1000UL) /*!< RSCSA12 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA13_Pos (13UL) /*!< RSCSA13 (Bit 13) */ + #define R_SYSTEM_RSCSAR_RSCSA13_Msk (0x2000UL) /*!< RSCSA13 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA14_Pos (14UL) /*!< RSCSA14 (Bit 14) */ + #define R_SYSTEM_RSCSAR_RSCSA14_Msk (0x4000UL) /*!< RSCSA14 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA16_Pos (16UL) /*!< RSCSA16 (Bit 16) */ + #define R_SYSTEM_RSCSAR_RSCSA16_Msk (0x10000UL) /*!< RSCSA16 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSCSAR_RSCSA17_Pos (17UL) /*!< RSCSA17 (Bit 17) */ + #define R_SYSTEM_RSCSAR_RSCSA17_Msk (0x20000UL) /*!< RSCSA17 (Bitfield-Mask: 0x01) */ +/* ========================================================= PRCR ========================================================== */ + #define R_SYSTEM_PRCR_PRC0_Pos (0UL) /*!< PRC0 (Bit 0) */ + #define R_SYSTEM_PRCR_PRC0_Msk (0x1UL) /*!< PRC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_SYSTEM_PRCR_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC3_Pos (3UL) /*!< PRC3 (Bit 3) */ + #define R_SYSTEM_PRCR_PRC3_Msk (0x8UL) /*!< PRC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC4_Pos (4UL) /*!< PRC4 (Bit 4) */ + #define R_SYSTEM_PRCR_PRC4_Msk (0x10UL) /*!< PRC4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRC5_Pos (5UL) /*!< PRC5 (Bit 5) */ + #define R_SYSTEM_PRCR_PRC5_Msk (0x20UL) /*!< PRC5 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_SYSTEM_PRCR_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ======================================================== PRCR_NS ======================================================== */ + #define R_SYSTEM_PRCR_NS_PRC0_Pos (0UL) /*!< PRC0 (Bit 0) */ + #define R_SYSTEM_PRCR_NS_PRC0_Msk (0x1UL) /*!< PRC0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_SYSTEM_PRCR_NS_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRC3_Pos (3UL) /*!< PRC3 (Bit 3) */ + #define R_SYSTEM_PRCR_NS_PRC3_Msk (0x8UL) /*!< PRC3 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRC4_Pos (4UL) /*!< PRC4 (Bit 4) */ + #define R_SYSTEM_PRCR_NS_PRC4_Msk (0x10UL) /*!< PRC4 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PRCR_NS_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_SYSTEM_PRCR_NS_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ======================================================== LOCOCR ========================================================= */ + #define R_SYSTEM_LOCOCR_LCSTP_Pos (0UL) /*!< LCSTP (Bit 0) */ + #define R_SYSTEM_LOCOCR_LCSTP_Msk (0x1UL) /*!< LCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================= LOCOUTCR ======================================================== */ + #define R_SYSTEM_LOCOUTCR_LOCOUTRM_Pos (0UL) /*!< LOCOUTRM (Bit 0) */ + #define R_SYSTEM_LOCOUTCR_LOCOUTRM_Msk (0xffUL) /*!< LOCOUTRM (Bitfield-Mask: 0xff) */ +/* ======================================================== STCONR ========================================================= */ + #define R_SYSTEM_STCONR_STCON_Pos (0UL) /*!< STCON (Bit 0) */ + #define R_SYSTEM_STCONR_STCON_Msk (0x3UL) /*!< STCON (Bitfield-Mask: 0x03) */ +/* ======================================================== DPSBYCR ======================================================== */ + #define R_SYSTEM_DPSBYCR_DCSSMODE_Pos (2UL) /*!< DCSSMODE (Bit 2) */ + #define R_SYSTEM_DPSBYCR_DCSSMODE_Msk (0x4UL) /*!< DCSSMODE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSBYCR_SRKEEP_Pos (4UL) /*!< SRKEEP (Bit 4) */ + #define R_SYSTEM_DPSBYCR_SRKEEP_Msk (0x10UL) /*!< SRKEEP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSBYCR_IOKEEP_Pos (6UL) /*!< IOKEEP (Bit 6) */ + #define R_SYSTEM_DPSBYCR_IOKEEP_Msk (0x40UL) /*!< IOKEEP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSBYCR_DPSBY_Pos (7UL) /*!< DPSBY (Bit 7) */ + #define R_SYSTEM_DPSBYCR_DPSBY_Msk (0x80UL) /*!< DPSBY (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSWCR ========================================================= */ + #define R_SYSTEM_DPSWCR_WTSTS_Pos (0UL) /*!< WTSTS (Bit 0) */ + #define R_SYSTEM_DPSWCR_WTSTS_Msk (0xffUL) /*!< WTSTS (Bitfield-Mask: 0xff) */ +/* ======================================================== DPSIER0 ======================================================== */ + #define R_SYSTEM_DPSIER0_DIRQ0E_Pos (0UL) /*!< DIRQ0E (Bit 0) */ + #define R_SYSTEM_DPSIER0_DIRQ0E_Msk (0x1UL) /*!< DIRQ0E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ1E_Pos (1UL) /*!< DIRQ1E (Bit 1) */ + #define R_SYSTEM_DPSIER0_DIRQ1E_Msk (0x2UL) /*!< DIRQ1E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ2E_Pos (2UL) /*!< DIRQ2E (Bit 2) */ + #define R_SYSTEM_DPSIER0_DIRQ2E_Msk (0x4UL) /*!< DIRQ2E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ3E_Pos (3UL) /*!< DIRQ3E (Bit 3) */ + #define R_SYSTEM_DPSIER0_DIRQ3E_Msk (0x8UL) /*!< DIRQ3E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ4E_Pos (4UL) /*!< DIRQ4E (Bit 4) */ + #define R_SYSTEM_DPSIER0_DIRQ4E_Msk (0x10UL) /*!< DIRQ4E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ5E_Pos (5UL) /*!< DIRQ5E (Bit 5) */ + #define R_SYSTEM_DPSIER0_DIRQ5E_Msk (0x20UL) /*!< DIRQ5E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ6E_Pos (6UL) /*!< DIRQ6E (Bit 6) */ + #define R_SYSTEM_DPSIER0_DIRQ6E_Msk (0x40UL) /*!< DIRQ6E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER0_DIRQ7E_Pos (7UL) /*!< DIRQ7E (Bit 7) */ + #define R_SYSTEM_DPSIER0_DIRQ7E_Msk (0x80UL) /*!< DIRQ7E (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER1 ======================================================== */ + #define R_SYSTEM_DPSIER1_DIRQ8E_Pos (0UL) /*!< DIRQ8E (Bit 0) */ + #define R_SYSTEM_DPSIER1_DIRQ8E_Msk (0x1UL) /*!< DIRQ8E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ9E_Pos (1UL) /*!< DIRQ9E (Bit 1) */ + #define R_SYSTEM_DPSIER1_DIRQ9E_Msk (0x2UL) /*!< DIRQ9E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ10E_Pos (2UL) /*!< DIRQ10E (Bit 2) */ + #define R_SYSTEM_DPSIER1_DIRQ10E_Msk (0x4UL) /*!< DIRQ10E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ11E_Pos (3UL) /*!< DIRQ11E (Bit 3) */ + #define R_SYSTEM_DPSIER1_DIRQ11E_Msk (0x8UL) /*!< DIRQ11E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ12E_Pos (4UL) /*!< DIRQ12E (Bit 4) */ + #define R_SYSTEM_DPSIER1_DIRQ12E_Msk (0x10UL) /*!< DIRQ12E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ13E_Pos (5UL) /*!< DIRQ13E (Bit 5) */ + #define R_SYSTEM_DPSIER1_DIRQ13E_Msk (0x20UL) /*!< DIRQ13E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ14E_Pos (6UL) /*!< DIRQ14E (Bit 6) */ + #define R_SYSTEM_DPSIER1_DIRQ14E_Msk (0x40UL) /*!< DIRQ14E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER1_DIRQ15E_Pos (7UL) /*!< DIRQ15E (Bit 7) */ + #define R_SYSTEM_DPSIER1_DIRQ15E_Msk (0x80UL) /*!< DIRQ15E (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER2 ======================================================== */ + #define R_SYSTEM_DPSIER2_DPVD1IE_Pos (0UL) /*!< DPVD1IE (Bit 0) */ + #define R_SYSTEM_DPSIER2_DPVD1IE_Msk (0x1UL) /*!< DPVD1IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DPVD2IE_Pos (1UL) /*!< DPVD2IE (Bit 1) */ + #define R_SYSTEM_DPSIER2_DPVD2IE_Msk (0x2UL) /*!< DPVD2IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DTRTCIIE_Pos (2UL) /*!< DTRTCIIE (Bit 2) */ + #define R_SYSTEM_DPSIER2_DTRTCIIE_Msk (0x4UL) /*!< DTRTCIIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DRTCAIE_Pos (3UL) /*!< DRTCAIE (Bit 3) */ + #define R_SYSTEM_DPSIER2_DRTCAIE_Msk (0x8UL) /*!< DRTCAIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER2_DNMIE_Pos (4UL) /*!< DNMIE (Bit 4) */ + #define R_SYSTEM_DPSIER2_DNMIE_Msk (0x10UL) /*!< DNMIE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIER3 ======================================================== */ + #define R_SYSTEM_DPSIER3_DUSBFSIE_Pos (0UL) /*!< DUSBFSIE (Bit 0) */ + #define R_SYSTEM_DPSIER3_DUSBFSIE_Msk (0x1UL) /*!< DUSBFSIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DUSBHSIE_Pos (1UL) /*!< DUSBHSIE (Bit 1) */ + #define R_SYSTEM_DPSIER3_DUSBHSIE_Msk (0x2UL) /*!< DUSBHSIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DULPT0IE_Pos (2UL) /*!< DULPT0IE (Bit 2) */ + #define R_SYSTEM_DPSIER3_DULPT0IE_Msk (0x4UL) /*!< DULPT0IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DULPT1IE_Pos (3UL) /*!< DULPT1IE (Bit 3) */ + #define R_SYSTEM_DPSIER3_DULPT1IE_Msk (0x8UL) /*!< DULPT1IE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DIWDTIE_Pos (5UL) /*!< DIWDTIE (Bit 5) */ + #define R_SYSTEM_DPSIER3_DIWDTIE_Msk (0x20UL) /*!< DIWDTIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIER3_DVBATTADIE_Pos (7UL) /*!< DVBATTADIE (Bit 7) */ + #define R_SYSTEM_DPSIER3_DVBATTADIE_Msk (0x80UL) /*!< DVBATTADIE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR0 ======================================================== */ + #define R_SYSTEM_DPSIFR0_DIRQ0F_Pos (0UL) /*!< DIRQ0F (Bit 0) */ + #define R_SYSTEM_DPSIFR0_DIRQ0F_Msk (0x1UL) /*!< DIRQ0F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ1F_Pos (1UL) /*!< DIRQ1F (Bit 1) */ + #define R_SYSTEM_DPSIFR0_DIRQ1F_Msk (0x2UL) /*!< DIRQ1F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ2F_Pos (2UL) /*!< DIRQ2F (Bit 2) */ + #define R_SYSTEM_DPSIFR0_DIRQ2F_Msk (0x4UL) /*!< DIRQ2F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ3F_Pos (3UL) /*!< DIRQ3F (Bit 3) */ + #define R_SYSTEM_DPSIFR0_DIRQ3F_Msk (0x8UL) /*!< DIRQ3F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ4F_Pos (4UL) /*!< DIRQ4F (Bit 4) */ + #define R_SYSTEM_DPSIFR0_DIRQ4F_Msk (0x10UL) /*!< DIRQ4F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ5F_Pos (5UL) /*!< DIRQ5F (Bit 5) */ + #define R_SYSTEM_DPSIFR0_DIRQ5F_Msk (0x20UL) /*!< DIRQ5F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ6F_Pos (6UL) /*!< DIRQ6F (Bit 6) */ + #define R_SYSTEM_DPSIFR0_DIRQ6F_Msk (0x40UL) /*!< DIRQ6F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR0_DIRQ7F_Pos (7UL) /*!< DIRQ7F (Bit 7) */ + #define R_SYSTEM_DPSIFR0_DIRQ7F_Msk (0x80UL) /*!< DIRQ7F (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR1 ======================================================== */ + #define R_SYSTEM_DPSIFR1_DIRQ8F_Pos (0UL) /*!< DIRQ8F (Bit 0) */ + #define R_SYSTEM_DPSIFR1_DIRQ8F_Msk (0x1UL) /*!< DIRQ8F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ9F_Pos (1UL) /*!< DIRQ9F (Bit 1) */ + #define R_SYSTEM_DPSIFR1_DIRQ9F_Msk (0x2UL) /*!< DIRQ9F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ10F_Pos (2UL) /*!< DIRQ10F (Bit 2) */ + #define R_SYSTEM_DPSIFR1_DIRQ10F_Msk (0x4UL) /*!< DIRQ10F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ11F_Pos (3UL) /*!< DIRQ11F (Bit 3) */ + #define R_SYSTEM_DPSIFR1_DIRQ11F_Msk (0x8UL) /*!< DIRQ11F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ12F_Pos (4UL) /*!< DIRQ12F (Bit 4) */ + #define R_SYSTEM_DPSIFR1_DIRQ12F_Msk (0x10UL) /*!< DIRQ12F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ13F_Pos (5UL) /*!< DIRQ13F (Bit 5) */ + #define R_SYSTEM_DPSIFR1_DIRQ13F_Msk (0x20UL) /*!< DIRQ13F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ14F_Pos (6UL) /*!< DIRQ14F (Bit 6) */ + #define R_SYSTEM_DPSIFR1_DIRQ14F_Msk (0x40UL) /*!< DIRQ14F (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR1_DIRQ15F_Pos (7UL) /*!< DIRQ15F (Bit 7) */ + #define R_SYSTEM_DPSIFR1_DIRQ15F_Msk (0x80UL) /*!< DIRQ15F (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR2 ======================================================== */ + #define R_SYSTEM_DPSIFR2_DPVD1IF_Pos (0UL) /*!< DPVD1IF (Bit 0) */ + #define R_SYSTEM_DPSIFR2_DPVD1IF_Msk (0x1UL) /*!< DPVD1IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DPVD2IF_Pos (1UL) /*!< DPVD2IF (Bit 1) */ + #define R_SYSTEM_DPSIFR2_DPVD2IF_Msk (0x2UL) /*!< DPVD2IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DTRTCIIF_Pos (2UL) /*!< DTRTCIIF (Bit 2) */ + #define R_SYSTEM_DPSIFR2_DTRTCIIF_Msk (0x4UL) /*!< DTRTCIIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DRTCAIF_Pos (3UL) /*!< DRTCAIF (Bit 3) */ + #define R_SYSTEM_DPSIFR2_DRTCAIF_Msk (0x8UL) /*!< DRTCAIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR2_DNMIF_Pos (4UL) /*!< DNMIF (Bit 4) */ + #define R_SYSTEM_DPSIFR2_DNMIF_Msk (0x10UL) /*!< DNMIF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPSIFR3 ======================================================== */ + #define R_SYSTEM_DPSIFR3_DUSBFSIF_Pos (0UL) /*!< DUSBFSIF (Bit 0) */ + #define R_SYSTEM_DPSIFR3_DUSBFSIF_Msk (0x1UL) /*!< DUSBFSIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DUSBHSIF_Pos (1UL) /*!< DUSBHSIF (Bit 1) */ + #define R_SYSTEM_DPSIFR3_DUSBHSIF_Msk (0x2UL) /*!< DUSBHSIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DULPT0IF_Pos (2UL) /*!< DULPT0IF (Bit 2) */ + #define R_SYSTEM_DPSIFR3_DULPT0IF_Msk (0x4UL) /*!< DULPT0IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DULPT1IF_Pos (3UL) /*!< DULPT1IF (Bit 3) */ + #define R_SYSTEM_DPSIFR3_DULPT1IF_Msk (0x8UL) /*!< DULPT1IF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DIWDTIF_Pos (5UL) /*!< DIWDTIF (Bit 5) */ + #define R_SYSTEM_DPSIFR3_DIWDTIF_Msk (0x20UL) /*!< DIWDTIF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIFR3_DVBATTADIF_Pos (7UL) /*!< DVBATTADIF (Bit 7) */ + #define R_SYSTEM_DPSIFR3_DVBATTADIF_Msk (0x80UL) /*!< DVBATTADIF (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR0 ======================================================== */ + #define R_SYSTEM_DPSIEGR0_DIRQ0EG_Pos (0UL) /*!< DIRQ0EG (Bit 0) */ + #define R_SYSTEM_DPSIEGR0_DIRQ0EG_Msk (0x1UL) /*!< DIRQ0EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ1EG_Pos (1UL) /*!< DIRQ1EG (Bit 1) */ + #define R_SYSTEM_DPSIEGR0_DIRQ1EG_Msk (0x2UL) /*!< DIRQ1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ2EG_Pos (2UL) /*!< DIRQ2EG (Bit 2) */ + #define R_SYSTEM_DPSIEGR0_DIRQ2EG_Msk (0x4UL) /*!< DIRQ2EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ3EG_Pos (3UL) /*!< DIRQ3EG (Bit 3) */ + #define R_SYSTEM_DPSIEGR0_DIRQ3EG_Msk (0x8UL) /*!< DIRQ3EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ4EG_Pos (4UL) /*!< DIRQ4EG (Bit 4) */ + #define R_SYSTEM_DPSIEGR0_DIRQ4EG_Msk (0x10UL) /*!< DIRQ4EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ5EG_Pos (5UL) /*!< DIRQ5EG (Bit 5) */ + #define R_SYSTEM_DPSIEGR0_DIRQ5EG_Msk (0x20UL) /*!< DIRQ5EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ6EG_Pos (6UL) /*!< DIRQ6EG (Bit 6) */ + #define R_SYSTEM_DPSIEGR0_DIRQ6EG_Msk (0x40UL) /*!< DIRQ6EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR0_DIRQ7EG_Pos (7UL) /*!< DIRQ7EG (Bit 7) */ + #define R_SYSTEM_DPSIEGR0_DIRQ7EG_Msk (0x80UL) /*!< DIRQ7EG (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR1 ======================================================== */ + #define R_SYSTEM_DPSIEGR1_DIRQ8EG_Pos (0UL) /*!< DIRQ8EG (Bit 0) */ + #define R_SYSTEM_DPSIEGR1_DIRQ8EG_Msk (0x1UL) /*!< DIRQ8EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ9EG_Pos (1UL) /*!< DIRQ9EG (Bit 1) */ + #define R_SYSTEM_DPSIEGR1_DIRQ9EG_Msk (0x2UL) /*!< DIRQ9EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ10EG_Pos (2UL) /*!< DIRQ10EG (Bit 2) */ + #define R_SYSTEM_DPSIEGR1_DIRQ10EG_Msk (0x4UL) /*!< DIRQ10EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ11EG_Pos (3UL) /*!< DIRQ11EG (Bit 3) */ + #define R_SYSTEM_DPSIEGR1_DIRQ11EG_Msk (0x8UL) /*!< DIRQ11EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ12EG_Pos (4UL) /*!< DIRQ12EG (Bit 4) */ + #define R_SYSTEM_DPSIEGR1_DIRQ12EG_Msk (0x10UL) /*!< DIRQ12EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ13EG_Pos (5UL) /*!< DIRQ13EG (Bit 5) */ + #define R_SYSTEM_DPSIEGR1_DIRQ13EG_Msk (0x20UL) /*!< DIRQ13EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ14EG_Pos (6UL) /*!< DIRQ14EG (Bit 6) */ + #define R_SYSTEM_DPSIEGR1_DIRQ14EG_Msk (0x40UL) /*!< DIRQ14EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR1_DIRQ15EG_Pos (7UL) /*!< DIRQ15EG (Bit 7) */ + #define R_SYSTEM_DPSIEGR1_DIRQ15EG_Msk (0x80UL) /*!< DIRQ15EG (Bitfield-Mask: 0x01) */ +/* ======================================================= DPSIEGR2 ======================================================== */ + #define R_SYSTEM_DPSIEGR2_DPVD1EG_Pos (0UL) /*!< DPVD1EG (Bit 0) */ + #define R_SYSTEM_DPSIEGR2_DPVD1EG_Msk (0x1UL) /*!< DPVD1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR2_DPVD2EG_Pos (1UL) /*!< DPVD2EG (Bit 1) */ + #define R_SYSTEM_DPSIEGR2_DPVD2EG_Msk (0x2UL) /*!< DPVD2EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_DPSIEGR2_DNMIEG_Pos (4UL) /*!< DNMIEG (Bit 4) */ + #define R_SYSTEM_DPSIEGR2_DNMIEG_Msk (0x10UL) /*!< DNMIEG (Bitfield-Mask: 0x01) */ +/* ======================================================== SYOCDCR ======================================================== */ + #define R_SYSTEM_SYOCDCR_DOCDF_Pos (0UL) /*!< DOCDF (Bit 0) */ + #define R_SYSTEM_SYOCDCR_DOCDF_Msk (0x1UL) /*!< DOCDF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYOCDCR_DBGEN_Pos (7UL) /*!< DBGEN (Bit 7) */ + #define R_SYSTEM_SYOCDCR_DBGEN_Msk (0x80UL) /*!< DBGEN (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR0 ========================================================= */ + #define R_SYSTEM_RSTSR0_PORF_Pos (0UL) /*!< PORF (Bit 0) */ + #define R_SYSTEM_RSTSR0_PORF_Msk (0x1UL) /*!< PORF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD0RF_Pos (1UL) /*!< LVD0RF (Bit 1) */ + #define R_SYSTEM_RSTSR0_LVD0RF_Msk (0x2UL) /*!< LVD0RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD1RF_Pos (2UL) /*!< LVD1RF (Bit 2) */ + #define R_SYSTEM_RSTSR0_LVD1RF_Msk (0x4UL) /*!< LVD1RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD2RF_Pos (3UL) /*!< LVD2RF (Bit 3) */ + #define R_SYSTEM_RSTSR0_LVD2RF_Msk (0x8UL) /*!< LVD2RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD3RF_Pos (4UL) /*!< LVD3RF (Bit 4) */ + #define R_SYSTEM_RSTSR0_LVD3RF_Msk (0x10UL) /*!< LVD3RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD4RF_Pos (5UL) /*!< LVD4RF (Bit 5) */ + #define R_SYSTEM_RSTSR0_LVD4RF_Msk (0x20UL) /*!< LVD4RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_LVD5RF_Pos (6UL) /*!< LVD5RF (Bit 6) */ + #define R_SYSTEM_RSTSR0_LVD5RF_Msk (0x40UL) /*!< LVD5RF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_RSTSR0_DPSRSTF_Pos (7UL) /*!< DPSRSTF (Bit 7) */ + #define R_SYSTEM_RSTSR0_DPSRSTF_Msk (0x80UL) /*!< DPSRSTF (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR2 ========================================================= */ + #define R_SYSTEM_RSTSR2_CWSF_Pos (0UL) /*!< CWSF (Bit 0) */ + #define R_SYSTEM_RSTSR2_CWSF_Msk (0x1UL) /*!< CWSF (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR3 ========================================================= */ + #define R_SYSTEM_RSTSR3_OCPRF_Pos (4UL) /*!< OCPRF (Bit 4) */ + #define R_SYSTEM_RSTSR3_OCPRF_Msk (0x10UL) /*!< OCPRF (Bitfield-Mask: 0x01) */ +/* ========================================================= MOMCR ========================================================= */ + #define R_SYSTEM_MOMCR_MODRV0_Pos (1UL) /*!< MODRV0 (Bit 1) */ + #define R_SYSTEM_MOMCR_MODRV0_Msk (0xeUL) /*!< MODRV0 (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_MOMCR_MOSEL_Pos (6UL) /*!< MOSEL (Bit 6) */ + #define R_SYSTEM_MOMCR_MOSEL_Msk (0x40UL) /*!< MOSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== FWEPROR ======================================================== */ + #define R_SYSTEM_FWEPROR_FLWE_Pos (0UL) /*!< FLWE (Bit 0) */ + #define R_SYSTEM_FWEPROR_FLWE_Msk (0x3UL) /*!< FLWE (Bitfield-Mask: 0x03) */ +/* ======================================================== LVCMPCR ======================================================== */ + #define R_SYSTEM_LVCMPCR_LVD2E_Pos (6UL) /*!< LVD2E (Bit 6) */ + #define R_SYSTEM_LVCMPCR_LVD2E_Msk (0x40UL) /*!< LVD2E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVCMPCR_LVD1E_Pos (5UL) /*!< LVD1E (Bit 5) */ + #define R_SYSTEM_LVCMPCR_LVD1E_Msk (0x20UL) /*!< LVD1E (Bitfield-Mask: 0x01) */ +/* ======================================================= LVD1CMPCR ======================================================= */ + #define R_SYSTEM_LVD1CMPCR_LVD1LVL_Pos (0UL) /*!< LVD1LVL (Bit 0) */ + #define R_SYSTEM_LVD1CMPCR_LVD1LVL_Msk (0x1fUL) /*!< LVD1LVL (Bitfield-Mask: 0x1f) */ + #define R_SYSTEM_LVD1CMPCR_LVD1E_Pos (7UL) /*!< LVD1E (Bit 7) */ + #define R_SYSTEM_LVD1CMPCR_LVD1E_Msk (0x80UL) /*!< LVD1E (Bitfield-Mask: 0x01) */ +/* ======================================================= LVD2CMPCR ======================================================= */ + #define R_SYSTEM_LVD2CMPCR_LVD2LVL_Pos (0UL) /*!< LVD2LVL (Bit 0) */ + #define R_SYSTEM_LVD2CMPCR_LVD2LVL_Msk (0x1fUL) /*!< LVD2LVL (Bitfield-Mask: 0x1f) */ + #define R_SYSTEM_LVD2CMPCR_LVD2E_Pos (7UL) /*!< LVD2E (Bit 7) */ + #define R_SYSTEM_LVD2CMPCR_LVD2E_Msk (0x80UL) /*!< LVD2E (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1CR0 ======================================================== */ + #define R_SYSTEM_LVD1CR0_RIE_Pos (0UL) /*!< RIE (Bit 0) */ + #define R_SYSTEM_LVD1CR0_RIE_Msk (0x1UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_DFDIS_Pos (1UL) /*!< DFDIS (Bit 1) */ + #define R_SYSTEM_LVD1CR0_DFDIS_Msk (0x2UL) /*!< DFDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_CMPE_Pos (2UL) /*!< CMPE (Bit 2) */ + #define R_SYSTEM_LVD1CR0_CMPE_Msk (0x4UL) /*!< CMPE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_FSAMP_Pos (4UL) /*!< FSAMP (Bit 4) */ + #define R_SYSTEM_LVD1CR0_FSAMP_Msk (0x30UL) /*!< FSAMP (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD1CR0_RI_Pos (6UL) /*!< RI (Bit 6) */ + #define R_SYSTEM_LVD1CR0_RI_Msk (0x40UL) /*!< RI (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD1CR0_RN_Pos (7UL) /*!< RN (Bit 7) */ + #define R_SYSTEM_LVD1CR0_RN_Msk (0x80UL) /*!< RN (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2CR0 ======================================================== */ + #define R_SYSTEM_LVD2CR0_RIE_Pos (0UL) /*!< RIE (Bit 0) */ + #define R_SYSTEM_LVD2CR0_RIE_Msk (0x1UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_DFDIS_Pos (1UL) /*!< DFDIS (Bit 1) */ + #define R_SYSTEM_LVD2CR0_DFDIS_Msk (0x2UL) /*!< DFDIS (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_CMPE_Pos (2UL) /*!< CMPE (Bit 2) */ + #define R_SYSTEM_LVD2CR0_CMPE_Msk (0x4UL) /*!< CMPE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_FSAMP_Pos (4UL) /*!< FSAMP (Bit 4) */ + #define R_SYSTEM_LVD2CR0_FSAMP_Msk (0x30UL) /*!< FSAMP (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_LVD2CR0_RI_Pos (6UL) /*!< RI (Bit 6) */ + #define R_SYSTEM_LVD2CR0_RI_Msk (0x40UL) /*!< RI (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVD2CR0_RN_Pos (7UL) /*!< RN (Bit 7) */ + #define R_SYSTEM_LVD2CR0_RN_Msk (0x80UL) /*!< RN (Bitfield-Mask: 0x01) */ +/* ====================================================== VBATTMNSELR ====================================================== */ + #define R_SYSTEM_VBATTMNSELR_VBATTMNSEL_Pos (0UL) /*!< VBATTMNSEL (Bit 0) */ + #define R_SYSTEM_VBATTMNSELR_VBATTMNSEL_Msk (0x1UL) /*!< VBATTMNSEL (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTBPCR1 ======================================================== */ + #define R_SYSTEM_VBTBPCR1_BPWSWSTP_Pos (0UL) /*!< BPWSWSTP (Bit 0) */ + #define R_SYSTEM_VBTBPCR1_BPWSWSTP_Msk (0x1UL) /*!< BPWSWSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSCR ========================================================= */ + #define R_SYSTEM_LPSCR_LPMD_Pos (0UL) /*!< LPMD (Bit 0) */ + #define R_SYSTEM_LPSCR_LPMD_Msk (0xfUL) /*!< LPMD (Bitfield-Mask: 0x0f) */ +/* ========================================================= SSCR1 ========================================================= */ + #define R_SYSTEM_SSCR1_SS1FR_Pos (0UL) /*!< SS1FR (Bit 0) */ + #define R_SYSTEM_SSCR1_SS1FR_Msk (0x1UL) /*!< SS1FR (Bitfield-Mask: 0x01) */ +/* ========================================================= LVOCR ========================================================= */ + #define R_SYSTEM_LVOCR_LVO0E_Pos (0UL) /*!< LVO0E (Bit 0) */ + #define R_SYSTEM_LVOCR_LVO0E_Msk (0x1UL) /*!< LVO0E (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_LVOCR_LVO1E_Pos (1UL) /*!< LVO1E (Bit 1) */ + #define R_SYSTEM_LVOCR_LVO1E_Msk (0x2UL) /*!< LVO1E (Bitfield-Mask: 0x01) */ +/* ======================================================= SYRSTMSK0 ======================================================= */ + #define R_SYSTEM_SYRSTMSK0_IWDTMASK_Pos (0UL) /*!< IWDTMASK (Bit 0) */ + #define R_SYSTEM_SYRSTMSK0_IWDTMASK_Msk (0x1UL) /*!< IWDTMASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_WDT0MASK_Pos (1UL) /*!< WDT0MASK (Bit 1) */ + #define R_SYSTEM_SYRSTMSK0_WDT0MASK_Msk (0x2UL) /*!< WDT0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_SWMASK_Pos (2UL) /*!< SWMASK (Bit 2) */ + #define R_SYSTEM_SYRSTMSK0_SWMASK_Msk (0x4UL) /*!< SWMASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_CLUP0MASK_Pos (4UL) /*!< CLUP0MASK (Bit 4) */ + #define R_SYSTEM_SYRSTMSK0_CLUP0MASK_Msk (0x10UL) /*!< CLUP0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_LM0MASK_Pos (5UL) /*!< LM0MASK (Bit 5) */ + #define R_SYSTEM_SYRSTMSK0_LM0MASK_Msk (0x20UL) /*!< LM0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_CMMASK_Pos (6UL) /*!< CMMASK (Bit 6) */ + #define R_SYSTEM_SYRSTMSK0_CMMASK_Msk (0x40UL) /*!< CMMASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK0_BUSMASK_Pos (7UL) /*!< BUSMASK (Bit 7) */ + #define R_SYSTEM_SYRSTMSK0_BUSMASK_Msk (0x80UL) /*!< BUSMASK (Bitfield-Mask: 0x01) */ +/* ======================================================= SYRSTMSK1 ======================================================= */ + #define R_SYSTEM_SYRSTMSK1_WDT1MASK_Pos (1UL) /*!< WDT1MASK (Bit 1) */ + #define R_SYSTEM_SYRSTMSK1_WDT1MASK_Msk (0x2UL) /*!< WDT1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK1_CLUP1MASK_Pos (4UL) /*!< CLUP1MASK (Bit 4) */ + #define R_SYSTEM_SYRSTMSK1_CLUP1MASK_Msk (0x10UL) /*!< CLUP1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK1_LM1MASK_Pos (5UL) /*!< LM1MASK (Bit 5) */ + #define R_SYSTEM_SYRSTMSK1_LM1MASK_Msk (0x20UL) /*!< LM1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK1_NWMASK_Pos (7UL) /*!< NWMASK (Bit 7) */ + #define R_SYSTEM_SYRSTMSK1_NWMASK_Msk (0x80UL) /*!< NWMASK (Bitfield-Mask: 0x01) */ +/* ======================================================= SYRSTMSK2 ======================================================= */ + #define R_SYSTEM_SYRSTMSK2_LVD1MASK_Pos (0UL) /*!< LVD1MASK (Bit 0) */ + #define R_SYSTEM_SYRSTMSK2_LVD1MASK_Msk (0x1UL) /*!< LVD1MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD2MASK_Pos (1UL) /*!< LVD2MASK (Bit 1) */ + #define R_SYSTEM_SYRSTMSK2_LVD2MASK_Msk (0x2UL) /*!< LVD2MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD3MASK_Pos (2UL) /*!< LVD3MASK (Bit 2) */ + #define R_SYSTEM_SYRSTMSK2_LVD3MASK_Msk (0x4UL) /*!< LVD3MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD4MASK_Pos (3UL) /*!< LVD4MASK (Bit 3) */ + #define R_SYSTEM_SYRSTMSK2_LVD4MASK_Msk (0x8UL) /*!< LVD4MASK (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_SYRSTMSK2_LVD5MASK_Pos (4UL) /*!< LVD5MASK (Bit 4) */ + #define R_SYSTEM_SYRSTMSK2_LVD5MASK_Msk (0x10UL) /*!< LVD5MASK (Bitfield-Mask: 0x01) */ +/* ======================================================= PLL1LDOCR ======================================================= */ + #define R_SYSTEM_PLL1LDOCR_LDOSTP_Pos (0UL) /*!< LDOSTP (Bit 0) */ + #define R_SYSTEM_PLL1LDOCR_LDOSTP_Msk (0x1UL) /*!< LDOSTP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLL1LDOCR_SKEEP_Pos (1UL) /*!< SKEEP (Bit 1) */ + #define R_SYSTEM_PLL1LDOCR_SKEEP_Msk (0x2UL) /*!< SKEEP (Bitfield-Mask: 0x01) */ +/* ======================================================= PLL2LDOCR ======================================================= */ + #define R_SYSTEM_PLL2LDOCR_LDOSTP_Pos (0UL) /*!< LDOSTP (Bit 0) */ + #define R_SYSTEM_PLL2LDOCR_LDOSTP_Msk (0x1UL) /*!< LDOSTP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_PLL2LDOCR_SKEEP_Pos (1UL) /*!< SKEEP (Bit 1) */ + #define R_SYSTEM_PLL2LDOCR_SKEEP_Msk (0x2UL) /*!< SKEEP (Bitfield-Mask: 0x01) */ +/* ======================================================= HOCOLDOCR ======================================================= */ + #define R_SYSTEM_HOCOLDOCR_LDOSTP_Pos (0UL) /*!< LDOSTP (Bit 0) */ + #define R_SYSTEM_HOCOLDOCR_LDOSTP_Msk (0x1UL) /*!< LDOSTP (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_HOCOLDOCR_SKEEP_Pos (1UL) /*!< SKEEP (Bit 1) */ + #define R_SYSTEM_HOCOLDOCR_SKEEP_Msk (0x2UL) /*!< SKEEP (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD1FCR ======================================================== */ + #define R_SYSTEM_LVD1FCR_RHSEL_Pos (0UL) /*!< RHSEL (Bit 0) */ + #define R_SYSTEM_LVD1FCR_RHSEL_Msk (0x1UL) /*!< RHSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== LVD2FCR ======================================================== */ + #define R_SYSTEM_LVD2FCR_RHSEL_Pos (0UL) /*!< RHSEL (Bit 0) */ + #define R_SYSTEM_LVD2FCR_RHSEL_Msk (0x1UL) /*!< RHSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== SOSCCR ========================================================= */ + #define R_SYSTEM_SOSCCR_SOSTP_Pos (0UL) /*!< SOSTP (Bit 0) */ + #define R_SYSTEM_SOSCCR_SOSTP_Msk (0x1UL) /*!< SOSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= SOMCR ========================================================= */ + #define R_SYSTEM_SOMCR_SODRV_Pos (0UL) /*!< SODRV (Bit 0) */ + #define R_SYSTEM_SOMCR_SODRV_Msk (0x3UL) /*!< SODRV (Bitfield-Mask: 0x03) */ + #define R_SYSTEM_SOMCR_SOSEL_Pos (6UL) /*!< SOSEL (Bit 6) */ + #define R_SYSTEM_SOMCR_SOSEL_Msk (0x40UL) /*!< SOSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBER ========================================================= */ + #define R_SYSTEM_VBTBER_VBAE_Pos (3UL) /*!< VBAE (Bit 3) */ + #define R_SYSTEM_VBTBER_VBAE_Msk (0x8UL) /*!< VBAE (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTBPCR2 ======================================================== */ + #define R_SYSTEM_VBTBPCR2_VDETLVL_Pos (0UL) /*!< VDETLVL (Bit 0) */ + #define R_SYSTEM_VBTBPCR2_VDETLVL_Msk (0x7UL) /*!< VDETLVL (Bitfield-Mask: 0x07) */ + #define R_SYSTEM_VBTBPCR2_VDETE_Pos (4UL) /*!< VDETE (Bit 4) */ + #define R_SYSTEM_VBTBPCR2_VDETE_Msk (0x10UL) /*!< VDETE (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBPSR ======================================================== */ + #define R_SYSTEM_VBTBPSR_VBPORF_Pos (0UL) /*!< VBPORF (Bit 0) */ + #define R_SYSTEM_VBTBPSR_VBPORF_Msk (0x1UL) /*!< VBPORF (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTBPSR_VBPORM_Pos (4UL) /*!< VBPORM (Bit 4) */ + #define R_SYSTEM_VBTBPSR_VBPORM_Msk (0x10UL) /*!< VBPORM (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTBPSR_BPWSWM_Pos (5UL) /*!< BPWSWM (Bit 5) */ + #define R_SYSTEM_VBTBPSR_BPWSWM_Msk (0x20UL) /*!< BPWSWM (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTADSR ======================================================== */ + #define R_SYSTEM_VBTADSR_VBTADF0_Pos (0UL) /*!< VBTADF0 (Bit 0) */ + #define R_SYSTEM_VBTADSR_VBTADF0_Msk (0x1UL) /*!< VBTADF0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADSR_VBTADF1_Pos (1UL) /*!< VBTADF1 (Bit 1) */ + #define R_SYSTEM_VBTADSR_VBTADF1_Msk (0x2UL) /*!< VBTADF1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADSR_VBTADF2_Pos (2UL) /*!< VBTADF2 (Bit 2) */ + #define R_SYSTEM_VBTADSR_VBTADF2_Msk (0x4UL) /*!< VBTADF2 (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTADCR1 ======================================================== */ + #define R_SYSTEM_VBTADCR1_VBTADIE0_Pos (0UL) /*!< VBTADIE0 (Bit 0) */ + #define R_SYSTEM_VBTADCR1_VBTADIE0_Msk (0x1UL) /*!< VBTADIE0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADIE1_Pos (1UL) /*!< VBTADIE1 (Bit 1) */ + #define R_SYSTEM_VBTADCR1_VBTADIE1_Msk (0x2UL) /*!< VBTADIE1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADIE2_Pos (2UL) /*!< VBTADIE2 (Bit 2) */ + #define R_SYSTEM_VBTADCR1_VBTADIE2_Msk (0x4UL) /*!< VBTADIE2 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE0_Pos (4UL) /*!< VBTADCLE0 (Bit 4) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE0_Msk (0x10UL) /*!< VBTADCLE0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE1_Pos (5UL) /*!< VBTADCLE1 (Bit 5) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE1_Msk (0x20UL) /*!< VBTADCLE1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE2_Pos (6UL) /*!< VBTADCLE2 (Bit 6) */ + #define R_SYSTEM_VBTADCR1_VBTADCLE2_Msk (0x40UL) /*!< VBTADCLE2 (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTADCR2 ======================================================== */ + #define R_SYSTEM_VBTADCR2_VBRTCES0_Pos (0UL) /*!< VBRTCES0 (Bit 0) */ + #define R_SYSTEM_VBTADCR2_VBRTCES0_Msk (0x1UL) /*!< VBRTCES0 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR2_VBRTCES1_Pos (1UL) /*!< VBRTCES1 (Bit 1) */ + #define R_SYSTEM_VBTADCR2_VBRTCES1_Msk (0x2UL) /*!< VBRTCES1 (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTADCR2_VBRTCES2_Pos (2UL) /*!< VBRTCES2 (Bit 2) */ + #define R_SYSTEM_VBTADCR2_VBRTCES2_Msk (0x4UL) /*!< VBRTCES2 (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTICTLR ======================================================== */ + #define R_SYSTEM_VBTICTLR_VCH0INEN_Pos (0UL) /*!< VCH0INEN (Bit 0) */ + #define R_SYSTEM_VBTICTLR_VCH0INEN_Msk (0x1UL) /*!< VCH0INEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR_VCH1INEN_Pos (1UL) /*!< VCH1INEN (Bit 1) */ + #define R_SYSTEM_VBTICTLR_VCH1INEN_Msk (0x2UL) /*!< VCH1INEN (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR_VCH2INEN_Pos (2UL) /*!< VCH2INEN (Bit 2) */ + #define R_SYSTEM_VBTICTLR_VCH2INEN_Msk (0x4UL) /*!< VCH2INEN (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTICTLR2 ======================================================= */ + #define R_SYSTEM_VBTICTLR2_VCH0NCE_Pos (0UL) /*!< VCH0NCE (Bit 0) */ + #define R_SYSTEM_VBTICTLR2_VCH0NCE_Msk (0x1UL) /*!< VCH0NCE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH1NCE_Pos (1UL) /*!< VCH1NCE (Bit 1) */ + #define R_SYSTEM_VBTICTLR2_VCH1NCE_Msk (0x2UL) /*!< VCH1NCE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH2NCE_Pos (2UL) /*!< VCH2NCE (Bit 2) */ + #define R_SYSTEM_VBTICTLR2_VCH2NCE_Msk (0x4UL) /*!< VCH2NCE (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH0EG_Pos (4UL) /*!< VCH0EG (Bit 4) */ + #define R_SYSTEM_VBTICTLR2_VCH0EG_Msk (0x10UL) /*!< VCH0EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH1EG_Pos (5UL) /*!< VCH1EG (Bit 5) */ + #define R_SYSTEM_VBTICTLR2_VCH1EG_Msk (0x20UL) /*!< VCH1EG (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTICTLR2_VCH2EG_Pos (6UL) /*!< VCH2EG (Bit 6) */ + #define R_SYSTEM_VBTICTLR2_VCH2EG_Msk (0x40UL) /*!< VCH2EG (Bitfield-Mask: 0x01) */ +/* ======================================================= VBTIMONR ======================================================== */ + #define R_SYSTEM_VBTIMONR_VCH0MON_Pos (0UL) /*!< VCH0MON (Bit 0) */ + #define R_SYSTEM_VBTIMONR_VCH0MON_Msk (0x1UL) /*!< VCH0MON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTIMONR_VCH1MON_Pos (1UL) /*!< VCH1MON (Bit 1) */ + #define R_SYSTEM_VBTIMONR_VCH1MON_Msk (0x2UL) /*!< VCH1MON (Bitfield-Mask: 0x01) */ + #define R_SYSTEM_VBTIMONR_VCH2MON_Pos (2UL) /*!< VCH2MON (Bit 2) */ + #define R_SYSTEM_VBTIMONR_VCH2MON_Msk (0x4UL) /*!< VCH2MON (Bitfield-Mask: 0x01) */ +/* ======================================================== VBTBKR0 ======================================================== */ + #define R_SYSTEM_VBTBKR0_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR0_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR1 ======================================================== */ + #define R_SYSTEM_VBTBKR1_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR1_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR2 ======================================================== */ + #define R_SYSTEM_VBTBKR2_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR2_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR3 ======================================================== */ + #define R_SYSTEM_VBTBKR3_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR3_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR4 ======================================================== */ + #define R_SYSTEM_VBTBKR4_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR4_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR5 ======================================================== */ + #define R_SYSTEM_VBTBKR5_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR5_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR6 ======================================================== */ + #define R_SYSTEM_VBTBKR6_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR6_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR7 ======================================================== */ + #define R_SYSTEM_VBTBKR7_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR7_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR8 ======================================================== */ + #define R_SYSTEM_VBTBKR8_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR8_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================== VBTBKR9 ======================================================== */ + #define R_SYSTEM_VBTBKR9_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR9_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR10 ======================================================== */ + #define R_SYSTEM_VBTBKR10_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR10_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR11 ======================================================== */ + #define R_SYSTEM_VBTBKR11_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR11_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR12 ======================================================== */ + #define R_SYSTEM_VBTBKR12_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR12_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR13 ======================================================== */ + #define R_SYSTEM_VBTBKR13_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR13_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR14 ======================================================== */ + #define R_SYSTEM_VBTBKR14_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR14_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR15 ======================================================== */ + #define R_SYSTEM_VBTBKR15_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR15_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR16 ======================================================== */ + #define R_SYSTEM_VBTBKR16_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR16_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR17 ======================================================== */ + #define R_SYSTEM_VBTBKR17_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR17_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR18 ======================================================== */ + #define R_SYSTEM_VBTBKR18_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR18_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR19 ======================================================== */ + #define R_SYSTEM_VBTBKR19_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR19_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR20 ======================================================== */ + #define R_SYSTEM_VBTBKR20_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR20_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR21 ======================================================== */ + #define R_SYSTEM_VBTBKR21_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR21_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR22 ======================================================== */ + #define R_SYSTEM_VBTBKR22_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR22_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR23 ======================================================== */ + #define R_SYSTEM_VBTBKR23_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR23_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR24 ======================================================== */ + #define R_SYSTEM_VBTBKR24_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR24_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR25 ======================================================== */ + #define R_SYSTEM_VBTBKR25_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR25_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR26 ======================================================== */ + #define R_SYSTEM_VBTBKR26_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR26_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR27 ======================================================== */ + #define R_SYSTEM_VBTBKR27_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR27_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR28 ======================================================== */ + #define R_SYSTEM_VBTBKR28_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR28_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR29 ======================================================== */ + #define R_SYSTEM_VBTBKR29_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR29_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR30 ======================================================== */ + #define R_SYSTEM_VBTBKR30_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR30_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR31 ======================================================== */ + #define R_SYSTEM_VBTBKR31_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR31_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR32 ======================================================== */ + #define R_SYSTEM_VBTBKR32_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR32_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR33 ======================================================== */ + #define R_SYSTEM_VBTBKR33_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR33_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR34 ======================================================== */ + #define R_SYSTEM_VBTBKR34_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR34_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR35 ======================================================== */ + #define R_SYSTEM_VBTBKR35_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR35_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR36 ======================================================== */ + #define R_SYSTEM_VBTBKR36_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR36_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR37 ======================================================== */ + #define R_SYSTEM_VBTBKR37_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR37_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR38 ======================================================== */ + #define R_SYSTEM_VBTBKR38_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR38_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR39 ======================================================== */ + #define R_SYSTEM_VBTBKR39_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR39_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR40 ======================================================== */ + #define R_SYSTEM_VBTBKR40_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR40_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR41 ======================================================== */ + #define R_SYSTEM_VBTBKR41_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR41_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR42 ======================================================== */ + #define R_SYSTEM_VBTBKR42_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR42_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR43 ======================================================== */ + #define R_SYSTEM_VBTBKR43_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR43_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR44 ======================================================== */ + #define R_SYSTEM_VBTBKR44_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR44_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR45 ======================================================== */ + #define R_SYSTEM_VBTBKR45_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR45_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR46 ======================================================== */ + #define R_SYSTEM_VBTBKR46_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR46_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR47 ======================================================== */ + #define R_SYSTEM_VBTBKR47_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR47_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR48 ======================================================== */ + #define R_SYSTEM_VBTBKR48_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR48_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR49 ======================================================== */ + #define R_SYSTEM_VBTBKR49_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR49_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR50 ======================================================== */ + #define R_SYSTEM_VBTBKR50_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR50_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR51 ======================================================== */ + #define R_SYSTEM_VBTBKR51_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR51_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR52 ======================================================== */ + #define R_SYSTEM_VBTBKR52_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR52_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR53 ======================================================== */ + #define R_SYSTEM_VBTBKR53_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR53_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR54 ======================================================== */ + #define R_SYSTEM_VBTBKR54_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR54_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR55 ======================================================== */ + #define R_SYSTEM_VBTBKR55_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR55_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR56 ======================================================== */ + #define R_SYSTEM_VBTBKR56_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR56_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR57 ======================================================== */ + #define R_SYSTEM_VBTBKR57_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR57_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR58 ======================================================== */ + #define R_SYSTEM_VBTBKR58_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR58_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR59 ======================================================== */ + #define R_SYSTEM_VBTBKR59_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR59_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR60 ======================================================== */ + #define R_SYSTEM_VBTBKR60_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR60_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR61 ======================================================== */ + #define R_SYSTEM_VBTBKR61_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR61_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR62 ======================================================== */ + #define R_SYSTEM_VBTBKR62_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR62_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR63 ======================================================== */ + #define R_SYSTEM_VBTBKR63_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR63_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR64 ======================================================== */ + #define R_SYSTEM_VBTBKR64_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR64_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR65 ======================================================== */ + #define R_SYSTEM_VBTBKR65_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR65_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR66 ======================================================== */ + #define R_SYSTEM_VBTBKR66_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR66_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR67 ======================================================== */ + #define R_SYSTEM_VBTBKR67_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR67_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR68 ======================================================== */ + #define R_SYSTEM_VBTBKR68_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR68_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR69 ======================================================== */ + #define R_SYSTEM_VBTBKR69_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR69_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR70 ======================================================== */ + #define R_SYSTEM_VBTBKR70_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR70_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR71 ======================================================== */ + #define R_SYSTEM_VBTBKR71_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR71_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR72 ======================================================== */ + #define R_SYSTEM_VBTBKR72_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR72_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR73 ======================================================== */ + #define R_SYSTEM_VBTBKR73_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR73_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR74 ======================================================== */ + #define R_SYSTEM_VBTBKR74_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR74_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR75 ======================================================== */ + #define R_SYSTEM_VBTBKR75_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR75_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR76 ======================================================== */ + #define R_SYSTEM_VBTBKR76_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR76_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR77 ======================================================== */ + #define R_SYSTEM_VBTBKR77_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR77_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR78 ======================================================== */ + #define R_SYSTEM_VBTBKR78_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR78_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR79 ======================================================== */ + #define R_SYSTEM_VBTBKR79_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR79_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR80 ======================================================== */ + #define R_SYSTEM_VBTBKR80_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR80_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR81 ======================================================== */ + #define R_SYSTEM_VBTBKR81_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR81_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR82 ======================================================== */ + #define R_SYSTEM_VBTBKR82_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR82_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR83 ======================================================== */ + #define R_SYSTEM_VBTBKR83_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR83_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR84 ======================================================== */ + #define R_SYSTEM_VBTBKR84_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR84_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR85 ======================================================== */ + #define R_SYSTEM_VBTBKR85_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR85_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR86 ======================================================== */ + #define R_SYSTEM_VBTBKR86_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR86_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR87 ======================================================== */ + #define R_SYSTEM_VBTBKR87_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR87_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR88 ======================================================== */ + #define R_SYSTEM_VBTBKR88_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR88_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR89 ======================================================== */ + #define R_SYSTEM_VBTBKR89_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR89_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR90 ======================================================== */ + #define R_SYSTEM_VBTBKR90_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR90_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR91 ======================================================== */ + #define R_SYSTEM_VBTBKR91_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR91_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR92 ======================================================== */ + #define R_SYSTEM_VBTBKR92_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR92_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR93 ======================================================== */ + #define R_SYSTEM_VBTBKR93_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR93_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR94 ======================================================== */ + #define R_SYSTEM_VBTBKR94_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR94_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR95 ======================================================== */ + #define R_SYSTEM_VBTBKR95_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR95_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR96 ======================================================== */ + #define R_SYSTEM_VBTBKR96_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR96_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR97 ======================================================== */ + #define R_SYSTEM_VBTBKR97_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR97_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR98 ======================================================== */ + #define R_SYSTEM_VBTBKR98_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR98_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR99 ======================================================== */ + #define R_SYSTEM_VBTBKR99_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR99_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR100 ======================================================= */ + #define R_SYSTEM_VBTBKR100_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR100_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR101 ======================================================= */ + #define R_SYSTEM_VBTBKR101_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR101_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR102 ======================================================= */ + #define R_SYSTEM_VBTBKR102_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR102_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR103 ======================================================= */ + #define R_SYSTEM_VBTBKR103_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR103_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR104 ======================================================= */ + #define R_SYSTEM_VBTBKR104_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR104_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR105 ======================================================= */ + #define R_SYSTEM_VBTBKR105_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR105_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR106 ======================================================= */ + #define R_SYSTEM_VBTBKR106_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR106_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR107 ======================================================= */ + #define R_SYSTEM_VBTBKR107_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR107_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR108 ======================================================= */ + #define R_SYSTEM_VBTBKR108_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR108_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR109 ======================================================= */ + #define R_SYSTEM_VBTBKR109_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR109_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR110 ======================================================= */ + #define R_SYSTEM_VBTBKR110_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR110_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR111 ======================================================= */ + #define R_SYSTEM_VBTBKR111_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR111_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR112 ======================================================= */ + #define R_SYSTEM_VBTBKR112_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR112_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR113 ======================================================= */ + #define R_SYSTEM_VBTBKR113_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR113_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR114 ======================================================= */ + #define R_SYSTEM_VBTBKR114_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR114_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR115 ======================================================= */ + #define R_SYSTEM_VBTBKR115_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR115_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR116 ======================================================= */ + #define R_SYSTEM_VBTBKR116_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR116_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR117 ======================================================= */ + #define R_SYSTEM_VBTBKR117_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR117_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR118 ======================================================= */ + #define R_SYSTEM_VBTBKR118_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR118_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR119 ======================================================= */ + #define R_SYSTEM_VBTBKR119_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR119_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR120 ======================================================= */ + #define R_SYSTEM_VBTBKR120_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR120_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR121 ======================================================= */ + #define R_SYSTEM_VBTBKR121_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR121_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR122 ======================================================= */ + #define R_SYSTEM_VBTBKR122_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR122_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR123 ======================================================= */ + #define R_SYSTEM_VBTBKR123_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR123_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR124 ======================================================= */ + #define R_SYSTEM_VBTBKR124_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR124_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR125 ======================================================= */ + #define R_SYSTEM_VBTBKR125_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR125_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR126 ======================================================= */ + #define R_SYSTEM_VBTBKR126_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR126_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ +/* ======================================================= VBTBKR127 ======================================================= */ + #define R_SYSTEM_VBTBKR127_VBTBKR_Pos (0UL) /*!< VBTBKR (Bit 0) */ + #define R_SYSTEM_VBTBKR127_VBTBKR_Msk (0xffUL) /*!< VBTBKR (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CAL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TSCDR ========================================================= */ + #define R_TSN_CAL_TSCDR_TSCDR_Pos (0UL) /*!< TSCDR (Bit 0) */ + #define R_TSN_CAL_TSCDR_TSCDR_Msk (0xffffffffUL) /*!< TSCDR (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_TSN_CTRL ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TSCR ========================================================== */ + #define R_TSN_CTRL_TSCR_TSEN_Pos (7UL) /*!< TSEN (Bit 7) */ + #define R_TSN_CTRL_TSCR_TSEN_Msk (0x80UL) /*!< TSEN (Bitfield-Mask: 0x01) */ + #define R_TSN_CTRL_TSCR_TSOE_Pos (4UL) /*!< TSOE (Bit 4) */ + #define R_TSN_CTRL_TSCR_TSOE_Msk (0x10UL) /*!< TSOE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_FS0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SYSCFG ========================================================= */ + #define R_USB_FS0_SYSCFG_SCKE_Pos (10UL) /*!< SCKE (Bit 10) */ + #define R_USB_FS0_SYSCFG_SCKE_Msk (0x400UL) /*!< SCKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_CNEN_Pos (8UL) /*!< CNEN (Bit 8) */ + #define R_USB_FS0_SYSCFG_CNEN_Msk (0x100UL) /*!< CNEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DCFM_Pos (6UL) /*!< DCFM (Bit 6) */ + #define R_USB_FS0_SYSCFG_DCFM_Msk (0x40UL) /*!< DCFM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DRPD_Pos (5UL) /*!< DRPD (Bit 5) */ + #define R_USB_FS0_SYSCFG_DRPD_Msk (0x20UL) /*!< DRPD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DPRPU_Pos (4UL) /*!< DPRPU (Bit 4) */ + #define R_USB_FS0_SYSCFG_DPRPU_Msk (0x10UL) /*!< DPRPU (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_DMRPU_Pos (3UL) /*!< DMRPU (Bit 3) */ + #define R_USB_FS0_SYSCFG_DMRPU_Msk (0x8UL) /*!< DMRPU (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSCFG_USBE_Pos (0UL) /*!< USBE (Bit 0) */ + #define R_USB_FS0_SYSCFG_USBE_Msk (0x1UL) /*!< USBE (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSWAIT ======================================================== */ + #define R_USB_FS0_BUSWAIT_BWAIT_Pos (0UL) /*!< BWAIT (Bit 0) */ + #define R_USB_FS0_BUSWAIT_BWAIT_Msk (0xfUL) /*!< BWAIT (Bitfield-Mask: 0x0f) */ +/* ======================================================== SYSSTS0 ======================================================== */ + #define R_USB_FS0_SYSSTS0_OVCMON_Pos (14UL) /*!< OVCMON (Bit 14) */ + #define R_USB_FS0_SYSSTS0_OVCMON_Msk (0xc000UL) /*!< OVCMON (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_SYSSTS0_HTACT_Pos (6UL) /*!< HTACT (Bit 6) */ + #define R_USB_FS0_SYSSTS0_HTACT_Msk (0x40UL) /*!< HTACT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSSTS0_SOFEA_Pos (5UL) /*!< SOFEA (Bit 5) */ + #define R_USB_FS0_SYSSTS0_SOFEA_Msk (0x20UL) /*!< SOFEA (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSSTS0_IDMON_Pos (2UL) /*!< IDMON (Bit 2) */ + #define R_USB_FS0_SYSSTS0_IDMON_Msk (0x4UL) /*!< IDMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SYSSTS0_LNST_Pos (0UL) /*!< LNST (Bit 0) */ + #define R_USB_FS0_SYSSTS0_LNST_Msk (0x3UL) /*!< LNST (Bitfield-Mask: 0x03) */ +/* ======================================================== PLLSTA ========================================================= */ + #define R_USB_FS0_PLLSTA_PLLLOCK_Pos (0UL) /*!< PLLLOCK (Bit 0) */ + #define R_USB_FS0_PLLSTA_PLLLOCK_Msk (0x1UL) /*!< PLLLOCK (Bitfield-Mask: 0x01) */ +/* ======================================================= DVSTCTR0 ======================================================== */ + #define R_USB_FS0_DVSTCTR0_HNPBTOA_Pos (11UL) /*!< HNPBTOA (Bit 11) */ + #define R_USB_FS0_DVSTCTR0_HNPBTOA_Msk (0x800UL) /*!< HNPBTOA (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_EXICEN_Pos (10UL) /*!< EXICEN (Bit 10) */ + #define R_USB_FS0_DVSTCTR0_EXICEN_Msk (0x400UL) /*!< EXICEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_VBUSEN_Pos (9UL) /*!< VBUSEN (Bit 9) */ + #define R_USB_FS0_DVSTCTR0_VBUSEN_Msk (0x200UL) /*!< VBUSEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_WKUP_Pos (8UL) /*!< WKUP (Bit 8) */ + #define R_USB_FS0_DVSTCTR0_WKUP_Msk (0x100UL) /*!< WKUP (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_RWUPE_Pos (7UL) /*!< RWUPE (Bit 7) */ + #define R_USB_FS0_DVSTCTR0_RWUPE_Msk (0x80UL) /*!< RWUPE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_USBRST_Pos (6UL) /*!< USBRST (Bit 6) */ + #define R_USB_FS0_DVSTCTR0_USBRST_Msk (0x40UL) /*!< USBRST (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_RESUME_Pos (5UL) /*!< RESUME (Bit 5) */ + #define R_USB_FS0_DVSTCTR0_RESUME_Msk (0x20UL) /*!< RESUME (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_UACT_Pos (4UL) /*!< UACT (Bit 4) */ + #define R_USB_FS0_DVSTCTR0_UACT_Msk (0x10UL) /*!< UACT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DVSTCTR0_RHST_Pos (0UL) /*!< RHST (Bit 0) */ + #define R_USB_FS0_DVSTCTR0_RHST_Msk (0x7UL) /*!< RHST (Bitfield-Mask: 0x07) */ +/* ======================================================= TESTMODE ======================================================== */ + #define R_USB_FS0_TESTMODE_UTST_Pos (0UL) /*!< UTST (Bit 0) */ + #define R_USB_FS0_TESTMODE_UTST_Msk (0xfUL) /*!< UTST (Bitfield-Mask: 0x0f) */ +/* ======================================================== CFIFOL ========================================================= */ +/* ======================================================== CFIFOLL ======================================================== */ +/* ========================================================= CFIFO ========================================================= */ +/* ======================================================== CFIFOH ========================================================= */ +/* ======================================================== CFIFOHH ======================================================== */ +/* ======================================================== D0FIFOL ======================================================== */ +/* ======================================================= D0FIFOLL ======================================================== */ +/* ======================================================== D0FIFO ========================================================= */ +/* ======================================================== D0FIFOH ======================================================== */ +/* ======================================================= D0FIFOHH ======================================================== */ +/* ======================================================== D1FIFOL ======================================================== */ +/* ======================================================= D1FIFOLL ======================================================== */ +/* ======================================================== D1FIFO ========================================================= */ +/* ======================================================== D1FIFOH ======================================================== */ +/* ======================================================= D1FIFOHH ======================================================== */ +/* ======================================================= CFIFOSEL ======================================================== */ + #define R_USB_FS0_CFIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_FS0_CFIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_FS0_CFIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_FS0_CFIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_CFIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_FS0_CFIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_ISEL_Pos (5UL) /*!< ISEL (Bit 5) */ + #define R_USB_FS0_CFIFOSEL_ISEL_Msk (0x20UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_FS0_CFIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFIFOCTR ======================================================== */ + #define R_USB_FS0_CFIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_FS0_CFIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_FS0_CFIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_FS0_CFIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_CFIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_FS0_CFIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D0FIFOSEL ======================================================= */ + #define R_USB_FS0_D0FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_FS0_D0FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_FS0_D0FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_FS0_D0FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_FS0_D0FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_FS0_D0FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_D0FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_FS0_D0FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_FS0_D0FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D0FIFOCTR ======================================================= */ + #define R_USB_FS0_D0FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_FS0_D0FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_FS0_D0FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_FS0_D0FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D0FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_FS0_D0FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D1FIFOSEL ======================================================= */ + #define R_USB_FS0_D1FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_FS0_D1FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_FS0_D1FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_FS0_D1FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_FS0_D1FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_FS0_D1FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_D1FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_FS0_D1FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_FS0_D1FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D1FIFOCTR ======================================================= */ + #define R_USB_FS0_D1FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_FS0_D1FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_FS0_D1FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_FS0_D1FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_D1FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_FS0_D1FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================== INTENB0 ======================================================== */ + #define R_USB_FS0_INTENB0_VBSE_Pos (15UL) /*!< VBSE (Bit 15) */ + #define R_USB_FS0_INTENB0_VBSE_Msk (0x8000UL) /*!< VBSE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_RSME_Pos (14UL) /*!< RSME (Bit 14) */ + #define R_USB_FS0_INTENB0_RSME_Msk (0x4000UL) /*!< RSME (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_SOFE_Pos (13UL) /*!< SOFE (Bit 13) */ + #define R_USB_FS0_INTENB0_SOFE_Msk (0x2000UL) /*!< SOFE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_DVSE_Pos (12UL) /*!< DVSE (Bit 12) */ + #define R_USB_FS0_INTENB0_DVSE_Msk (0x1000UL) /*!< DVSE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_CTRE_Pos (11UL) /*!< CTRE (Bit 11) */ + #define R_USB_FS0_INTENB0_CTRE_Msk (0x800UL) /*!< CTRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_BEMPE_Pos (10UL) /*!< BEMPE (Bit 10) */ + #define R_USB_FS0_INTENB0_BEMPE_Msk (0x400UL) /*!< BEMPE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_NRDYE_Pos (9UL) /*!< NRDYE (Bit 9) */ + #define R_USB_FS0_INTENB0_NRDYE_Msk (0x200UL) /*!< NRDYE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB0_BRDYE_Pos (8UL) /*!< BRDYE (Bit 8) */ + #define R_USB_FS0_INTENB0_BRDYE_Msk (0x100UL) /*!< BRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== INTENB1 ======================================================== */ + #define R_USB_FS0_INTENB1_OVRCRE_Pos (15UL) /*!< OVRCRE (Bit 15) */ + #define R_USB_FS0_INTENB1_OVRCRE_Msk (0x8000UL) /*!< OVRCRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_BCHGE_Pos (14UL) /*!< BCHGE (Bit 14) */ + #define R_USB_FS0_INTENB1_BCHGE_Msk (0x4000UL) /*!< BCHGE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_DTCHE_Pos (12UL) /*!< DTCHE (Bit 12) */ + #define R_USB_FS0_INTENB1_DTCHE_Msk (0x1000UL) /*!< DTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_ATTCHE_Pos (11UL) /*!< ATTCHE (Bit 11) */ + #define R_USB_FS0_INTENB1_ATTCHE_Msk (0x800UL) /*!< ATTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_EOFERRE_Pos (6UL) /*!< EOFERRE (Bit 6) */ + #define R_USB_FS0_INTENB1_EOFERRE_Msk (0x40UL) /*!< EOFERRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_SIGNE_Pos (5UL) /*!< SIGNE (Bit 5) */ + #define R_USB_FS0_INTENB1_SIGNE_Msk (0x20UL) /*!< SIGNE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_SACKE_Pos (4UL) /*!< SACKE (Bit 4) */ + #define R_USB_FS0_INTENB1_SACKE_Msk (0x10UL) /*!< SACKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTENB1_PDDETINTE0_Pos (0UL) /*!< PDDETINTE0 (Bit 0) */ + #define R_USB_FS0_INTENB1_PDDETINTE0_Msk (0x1UL) /*!< PDDETINTE0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYENB ======================================================== */ + #define R_USB_FS0_BRDYENB_PIPEBRDYE_Pos (0UL) /*!< PIPEBRDYE (Bit 0) */ + #define R_USB_FS0_BRDYENB_PIPEBRDYE_Msk (0x1UL) /*!< PIPEBRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== NRDYENB ======================================================== */ + #define R_USB_FS0_NRDYENB_PIPENRDYE_Pos (0UL) /*!< PIPENRDYE (Bit 0) */ + #define R_USB_FS0_NRDYENB_PIPENRDYE_Msk (0x1UL) /*!< PIPENRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== BEMPENB ======================================================== */ + #define R_USB_FS0_BEMPENB_PIPEBEMPE_Pos (0UL) /*!< PIPEBEMPE (Bit 0) */ + #define R_USB_FS0_BEMPENB_PIPEBEMPE_Msk (0x1UL) /*!< PIPEBEMPE (Bitfield-Mask: 0x01) */ +/* ======================================================== SOFCFG ========================================================= */ + #define R_USB_FS0_SOFCFG_TRNENSEL_Pos (8UL) /*!< TRNENSEL (Bit 8) */ + #define R_USB_FS0_SOFCFG_TRNENSEL_Msk (0x100UL) /*!< TRNENSEL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SOFCFG_BRDYM_Pos (6UL) /*!< BRDYM (Bit 6) */ + #define R_USB_FS0_SOFCFG_BRDYM_Msk (0x40UL) /*!< BRDYM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SOFCFG_INTL_Pos (5UL) /*!< INTL (Bit 5) */ + #define R_USB_FS0_SOFCFG_INTL_Msk (0x20UL) /*!< INTL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_SOFCFG_EDGESTS_Pos (4UL) /*!< EDGESTS (Bit 4) */ + #define R_USB_FS0_SOFCFG_EDGESTS_Msk (0x10UL) /*!< EDGESTS (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYSET ========================================================= */ + #define R_USB_FS0_PHYSET_HSEB_Pos (15UL) /*!< HSEB (Bit 15) */ + #define R_USB_FS0_PHYSET_HSEB_Msk (0x8000UL) /*!< HSEB (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_REPSTART_Pos (11UL) /*!< REPSTART (Bit 11) */ + #define R_USB_FS0_PHYSET_REPSTART_Msk (0x800UL) /*!< REPSTART (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_REPSEL_Pos (8UL) /*!< REPSEL (Bit 8) */ + #define R_USB_FS0_PHYSET_REPSEL_Msk (0x300UL) /*!< REPSEL (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PHYSET_CLKSEL_Pos (4UL) /*!< CLKSEL (Bit 4) */ + #define R_USB_FS0_PHYSET_CLKSEL_Msk (0x30UL) /*!< CLKSEL (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PHYSET_CDPEN_Pos (3UL) /*!< CDPEN (Bit 3) */ + #define R_USB_FS0_PHYSET_CDPEN_Msk (0x8UL) /*!< CDPEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_PLLRESET_Pos (1UL) /*!< PLLRESET (Bit 1) */ + #define R_USB_FS0_PHYSET_PLLRESET_Msk (0x2UL) /*!< PLLRESET (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSET_DIRPD_Pos (0UL) /*!< DIRPD (Bit 0) */ + #define R_USB_FS0_PHYSET_DIRPD_Msk (0x1UL) /*!< DIRPD (Bitfield-Mask: 0x01) */ +/* ======================================================== INTSTS0 ======================================================== */ + #define R_USB_FS0_INTSTS0_VBINT_Pos (15UL) /*!< VBINT (Bit 15) */ + #define R_USB_FS0_INTSTS0_VBINT_Msk (0x8000UL) /*!< VBINT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_RESM_Pos (14UL) /*!< RESM (Bit 14) */ + #define R_USB_FS0_INTSTS0_RESM_Msk (0x4000UL) /*!< RESM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_SOFR_Pos (13UL) /*!< SOFR (Bit 13) */ + #define R_USB_FS0_INTSTS0_SOFR_Msk (0x2000UL) /*!< SOFR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_DVST_Pos (12UL) /*!< DVST (Bit 12) */ + #define R_USB_FS0_INTSTS0_DVST_Msk (0x1000UL) /*!< DVST (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_CTRT_Pos (11UL) /*!< CTRT (Bit 11) */ + #define R_USB_FS0_INTSTS0_CTRT_Msk (0x800UL) /*!< CTRT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_BEMP_Pos (10UL) /*!< BEMP (Bit 10) */ + #define R_USB_FS0_INTSTS0_BEMP_Msk (0x400UL) /*!< BEMP (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_NRDY_Pos (9UL) /*!< NRDY (Bit 9) */ + #define R_USB_FS0_INTSTS0_NRDY_Msk (0x200UL) /*!< NRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_BRDY_Pos (8UL) /*!< BRDY (Bit 8) */ + #define R_USB_FS0_INTSTS0_BRDY_Msk (0x100UL) /*!< BRDY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_VBSTS_Pos (7UL) /*!< VBSTS (Bit 7) */ + #define R_USB_FS0_INTSTS0_VBSTS_Msk (0x80UL) /*!< VBSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_FS0_INTSTS0_DVSQ_Msk (0x70UL) /*!< DVSQ (Bitfield-Mask: 0x07) */ + #define R_USB_FS0_INTSTS0_VALID_Pos (3UL) /*!< VALID (Bit 3) */ + #define R_USB_FS0_INTSTS0_VALID_Msk (0x8UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS0_CTSQ_Pos (0UL) /*!< CTSQ (Bit 0) */ + #define R_USB_FS0_INTSTS0_CTSQ_Msk (0x7UL) /*!< CTSQ (Bitfield-Mask: 0x07) */ +/* ======================================================== INTSTS1 ======================================================== */ + #define R_USB_FS0_INTSTS1_OVRCR_Pos (15UL) /*!< OVRCR (Bit 15) */ + #define R_USB_FS0_INTSTS1_OVRCR_Msk (0x8000UL) /*!< OVRCR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_BCHG_Pos (14UL) /*!< BCHG (Bit 14) */ + #define R_USB_FS0_INTSTS1_BCHG_Msk (0x4000UL) /*!< BCHG (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_DTCH_Pos (12UL) /*!< DTCH (Bit 12) */ + #define R_USB_FS0_INTSTS1_DTCH_Msk (0x1000UL) /*!< DTCH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_ATTCH_Pos (11UL) /*!< ATTCH (Bit 11) */ + #define R_USB_FS0_INTSTS1_ATTCH_Msk (0x800UL) /*!< ATTCH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_L1RSMEND_Pos (9UL) /*!< L1RSMEND (Bit 9) */ + #define R_USB_FS0_INTSTS1_L1RSMEND_Msk (0x200UL) /*!< L1RSMEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_LPMEND_Pos (8UL) /*!< LPMEND (Bit 8) */ + #define R_USB_FS0_INTSTS1_LPMEND_Msk (0x100UL) /*!< LPMEND (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_EOFERR_Pos (6UL) /*!< EOFERR (Bit 6) */ + #define R_USB_FS0_INTSTS1_EOFERR_Msk (0x40UL) /*!< EOFERR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_SIGN_Pos (5UL) /*!< SIGN (Bit 5) */ + #define R_USB_FS0_INTSTS1_SIGN_Msk (0x20UL) /*!< SIGN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_SACK_Pos (4UL) /*!< SACK (Bit 4) */ + #define R_USB_FS0_INTSTS1_SACK_Msk (0x10UL) /*!< SACK (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_INTSTS1_PDDETINT0_Pos (0UL) /*!< PDDETINT0 (Bit 0) */ + #define R_USB_FS0_INTSTS1_PDDETINT0_Msk (0x1UL) /*!< PDDETINT0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYSTS ======================================================== */ + #define R_USB_FS0_BRDYSTS_PIPEBRDY_Pos (0UL) /*!< PIPEBRDY (Bit 0) */ + #define R_USB_FS0_BRDYSTS_PIPEBRDY_Msk (0x1UL) /*!< PIPEBRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== NRDYSTS ======================================================== */ + #define R_USB_FS0_NRDYSTS_PIPENRDY_Pos (0UL) /*!< PIPENRDY (Bit 0) */ + #define R_USB_FS0_NRDYSTS_PIPENRDY_Msk (0x1UL) /*!< PIPENRDY (Bitfield-Mask: 0x01) */ +/* ======================================================== BEMPSTS ======================================================== */ + #define R_USB_FS0_BEMPSTS_PIPEBEMP_Pos (0UL) /*!< PIPEBEMP (Bit 0) */ + #define R_USB_FS0_BEMPSTS_PIPEBEMP_Msk (0x1UL) /*!< PIPEBEMP (Bitfield-Mask: 0x01) */ +/* ======================================================== FRMNUM ========================================================= */ + #define R_USB_FS0_FRMNUM_OVRN_Pos (15UL) /*!< OVRN (Bit 15) */ + #define R_USB_FS0_FRMNUM_OVRN_Msk (0x8000UL) /*!< OVRN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_FRMNUM_CRCE_Pos (14UL) /*!< CRCE (Bit 14) */ + #define R_USB_FS0_FRMNUM_CRCE_Msk (0x4000UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_FRMNUM_FRNM_Pos (0UL) /*!< FRNM (Bit 0) */ + #define R_USB_FS0_FRMNUM_FRNM_Msk (0x7ffUL) /*!< FRNM (Bitfield-Mask: 0x7ff) */ +/* ======================================================== UFRMNUM ======================================================== */ + #define R_USB_FS0_UFRMNUM_DVCHG_Pos (15UL) /*!< DVCHG (Bit 15) */ + #define R_USB_FS0_UFRMNUM_DVCHG_Msk (0x8000UL) /*!< DVCHG (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_UFRMNUM_UFRNM_Pos (0UL) /*!< UFRNM (Bit 0) */ + #define R_USB_FS0_UFRMNUM_UFRNM_Msk (0x7UL) /*!< UFRNM (Bitfield-Mask: 0x07) */ +/* ======================================================== USBADDR ======================================================== */ + #define R_USB_FS0_USBADDR_STSRECOV0_Pos (8UL) /*!< STSRECOV0 (Bit 8) */ + #define R_USB_FS0_USBADDR_STSRECOV0_Msk (0x700UL) /*!< STSRECOV0 (Bitfield-Mask: 0x07) */ + #define R_USB_FS0_USBADDR_USBADDR_Pos (0UL) /*!< USBADDR (Bit 0) */ + #define R_USB_FS0_USBADDR_USBADDR_Msk (0x7fUL) /*!< USBADDR (Bitfield-Mask: 0x7f) */ +/* ======================================================== USBREQ ========================================================= */ + #define R_USB_FS0_USBREQ_BREQUEST_Pos (8UL) /*!< BREQUEST (Bit 8) */ + #define R_USB_FS0_USBREQ_BREQUEST_Msk (0xff00UL) /*!< BREQUEST (Bitfield-Mask: 0xff) */ + #define R_USB_FS0_USBREQ_BMREQUESTTYPE_Pos (0UL) /*!< BMREQUESTTYPE (Bit 0) */ + #define R_USB_FS0_USBREQ_BMREQUESTTYPE_Msk (0xffUL) /*!< BMREQUESTTYPE (Bitfield-Mask: 0xff) */ +/* ======================================================== USBVAL ========================================================= */ + #define R_USB_FS0_USBVAL_WVALUE_Pos (0UL) /*!< WVALUE (Bit 0) */ + #define R_USB_FS0_USBVAL_WVALUE_Msk (0xffffUL) /*!< WVALUE (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBINDX ======================================================== */ + #define R_USB_FS0_USBINDX_WINDEX_Pos (0UL) /*!< WINDEX (Bit 0) */ + #define R_USB_FS0_USBINDX_WINDEX_Msk (0xffffUL) /*!< WINDEX (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBLENG ======================================================== */ + #define R_USB_FS0_USBLENG_WLENGTH_Pos (0UL) /*!< WLENGTH (Bit 0) */ + #define R_USB_FS0_USBLENG_WLENGTH_Msk (0xffffUL) /*!< WLENGTH (Bitfield-Mask: 0xffff) */ +/* ======================================================== DCPCFG ========================================================= */ + #define R_USB_FS0_DCPCFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USB_FS0_DCPCFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_FS0_DCPCFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_FS0_DCPCFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ +/* ======================================================== DCPMAXP ======================================================== */ + #define R_USB_FS0_DCPMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_FS0_DCPMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_DCPMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_FS0_DCPMAXP_MXPS_Msk (0x7fUL) /*!< MXPS (Bitfield-Mask: 0x7f) */ +/* ======================================================== DCPCTR ========================================================= */ + #define R_USB_FS0_DCPCTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_FS0_DCPCTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SUREQ_Pos (14UL) /*!< SUREQ (Bit 14) */ + #define R_USB_FS0_DCPCTR_SUREQ_Msk (0x4000UL) /*!< SUREQ (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SUREQCLR_Pos (11UL) /*!< SUREQCLR (Bit 11) */ + #define R_USB_FS0_DCPCTR_SUREQCLR_Msk (0x800UL) /*!< SUREQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_FS0_DCPCTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_FS0_DCPCTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_FS0_DCPCTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_FS0_DCPCTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_CCPL_Pos (2UL) /*!< CCPL (Bit 2) */ + #define R_USB_FS0_DCPCTR_CCPL_Msk (0x4UL) /*!< CCPL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DCPCTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_FS0_DCPCTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== PIPESEL ======================================================== */ + #define R_USB_FS0_PIPESEL_PIPESEL_Pos (0UL) /*!< PIPESEL (Bit 0) */ + #define R_USB_FS0_PIPESEL_PIPESEL_Msk (0xfUL) /*!< PIPESEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== PIPECFG ======================================================== */ + #define R_USB_FS0_PIPECFG_TYPE_Pos (14UL) /*!< TYPE (Bit 14) */ + #define R_USB_FS0_PIPECFG_TYPE_Msk (0xc000UL) /*!< TYPE (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PIPECFG_BFRE_Pos (10UL) /*!< BFRE (Bit 10) */ + #define R_USB_FS0_PIPECFG_BFRE_Msk (0x400UL) /*!< BFRE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_DBLB_Pos (9UL) /*!< DBLB (Bit 9) */ + #define R_USB_FS0_PIPECFG_DBLB_Msk (0x200UL) /*!< DBLB (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_FS0_PIPECFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_FS0_PIPECFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPECFG_EPNUM_Pos (0UL) /*!< EPNUM (Bit 0) */ + #define R_USB_FS0_PIPECFG_EPNUM_Msk (0xfUL) /*!< EPNUM (Bitfield-Mask: 0x0f) */ +/* ======================================================= PIPEMAXP ======================================================== */ + #define R_USB_FS0_PIPEMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_FS0_PIPEMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_PIPEMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_FS0_PIPEMAXP_MXPS_Msk (0x1ffUL) /*!< MXPS (Bitfield-Mask: 0x1ff) */ +/* ======================================================= PIPEPERI ======================================================== */ + #define R_USB_FS0_PIPEPERI_IFIS_Pos (12UL) /*!< IFIS (Bit 12) */ + #define R_USB_FS0_PIPEPERI_IFIS_Msk (0x1000UL) /*!< IFIS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPEPERI_IITV_Pos (0UL) /*!< IITV (Bit 0) */ + #define R_USB_FS0_PIPEPERI_IITV_Msk (0x7UL) /*!< IITV (Bitfield-Mask: 0x07) */ +/* ======================================================= PIPE_CTR ======================================================== */ + #define R_USB_FS0_PIPE_CTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_FS0_PIPE_CTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_INBUFM_Pos (14UL) /*!< INBUFM (Bit 14) */ + #define R_USB_FS0_PIPE_CTR_INBUFM_Msk (0x4000UL) /*!< INBUFM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_CSCLR_Pos (13UL) /*!< CSCLR (Bit 13) */ + #define R_USB_FS0_PIPE_CTR_CSCLR_Msk (0x2000UL) /*!< CSCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_CSSTS_Pos (12UL) /*!< CSSTS (Bit 12) */ + #define R_USB_FS0_PIPE_CTR_CSSTS_Msk (0x1000UL) /*!< CSSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_ATREPM_Pos (10UL) /*!< ATREPM (Bit 10) */ + #define R_USB_FS0_PIPE_CTR_ATREPM_Msk (0x400UL) /*!< ATREPM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_ACLRM_Pos (9UL) /*!< ACLRM (Bit 9) */ + #define R_USB_FS0_PIPE_CTR_ACLRM_Msk (0x200UL) /*!< ACLRM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_FS0_PIPE_CTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_FS0_PIPE_CTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_FS0_PIPE_CTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_FS0_PIPE_CTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PIPE_CTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_FS0_PIPE_CTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== DEVADD ========================================================= */ + #define R_USB_FS0_DEVADD_UPPHUB_Pos (11UL) /*!< UPPHUB (Bit 11) */ + #define R_USB_FS0_DEVADD_UPPHUB_Msk (0x7800UL) /*!< UPPHUB (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_DEVADD_HUBPORT_Pos (8UL) /*!< HUBPORT (Bit 8) */ + #define R_USB_FS0_DEVADD_HUBPORT_Msk (0x700UL) /*!< HUBPORT (Bitfield-Mask: 0x07) */ + #define R_USB_FS0_DEVADD_USBSPD_Pos (6UL) /*!< USBSPD (Bit 6) */ + #define R_USB_FS0_DEVADD_USBSPD_Msk (0xc0UL) /*!< USBSPD (Bitfield-Mask: 0x03) */ +/* ====================================================== USBBCCTRL0 ======================================================= */ + #define R_USB_FS0_USBBCCTRL0_PDDETSTS0_Pos (9UL) /*!< PDDETSTS0 (Bit 9) */ + #define R_USB_FS0_USBBCCTRL0_PDDETSTS0_Msk (0x200UL) /*!< PDDETSTS0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_CHGDETSTS0_Pos (8UL) /*!< CHGDETSTS0 (Bit 8) */ + #define R_USB_FS0_USBBCCTRL0_CHGDETSTS0_Msk (0x100UL) /*!< CHGDETSTS0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_BATCHGE0_Pos (7UL) /*!< BATCHGE0 (Bit 7) */ + #define R_USB_FS0_USBBCCTRL0_BATCHGE0_Msk (0x80UL) /*!< BATCHGE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_VDMSRCE0_Pos (5UL) /*!< VDMSRCE0 (Bit 5) */ + #define R_USB_FS0_USBBCCTRL0_VDMSRCE0_Msk (0x20UL) /*!< VDMSRCE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_IDPSINKE0_Pos (4UL) /*!< IDPSINKE0 (Bit 4) */ + #define R_USB_FS0_USBBCCTRL0_IDPSINKE0_Msk (0x10UL) /*!< IDPSINKE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_VDPSRCE0_Pos (3UL) /*!< VDPSRCE0 (Bit 3) */ + #define R_USB_FS0_USBBCCTRL0_VDPSRCE0_Msk (0x8UL) /*!< VDPSRCE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_IDMSINKE0_Pos (2UL) /*!< IDMSINKE0 (Bit 2) */ + #define R_USB_FS0_USBBCCTRL0_IDMSINKE0_Msk (0x4UL) /*!< IDMSINKE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_IDPSRCE0_Pos (1UL) /*!< IDPSRCE0 (Bit 1) */ + #define R_USB_FS0_USBBCCTRL0_IDPSRCE0_Msk (0x2UL) /*!< IDPSRCE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBBCCTRL0_RPDME0_Pos (0UL) /*!< RPDME0 (Bit 0) */ + #define R_USB_FS0_USBBCCTRL0_RPDME0_Msk (0x1UL) /*!< RPDME0 (Bitfield-Mask: 0x01) */ +/* ======================================================== UCKSEL ========================================================= */ + #define R_USB_FS0_UCKSEL_UCKSELC_Pos (0UL) /*!< UCKSELC (Bit 0) */ + #define R_USB_FS0_UCKSEL_UCKSELC_Msk (0x1UL) /*!< UCKSELC (Bitfield-Mask: 0x01) */ +/* ========================================================= USBMC ========================================================= */ + #define R_USB_FS0_USBMC_VDCEN_Pos (7UL) /*!< VDCEN (Bit 7) */ + #define R_USB_FS0_USBMC_VDCEN_Msk (0x80UL) /*!< VDCEN (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_USBMC_VDDUSBE_Pos (0UL) /*!< VDDUSBE (Bit 0) */ + #define R_USB_FS0_USBMC_VDDUSBE_Msk (0x1UL) /*!< VDDUSBE (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYSLEW ======================================================== */ + #define R_USB_FS0_PHYSLEW_SLEWF01_Pos (3UL) /*!< SLEWF01 (Bit 3) */ + #define R_USB_FS0_PHYSLEW_SLEWF01_Msk (0x8UL) /*!< SLEWF01 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSLEW_SLEWF00_Pos (2UL) /*!< SLEWF00 (Bit 2) */ + #define R_USB_FS0_PHYSLEW_SLEWF00_Msk (0x4UL) /*!< SLEWF00 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSLEW_SLEWR01_Pos (1UL) /*!< SLEWR01 (Bit 1) */ + #define R_USB_FS0_PHYSLEW_SLEWR01_Msk (0x2UL) /*!< SLEWR01 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PHYSLEW_SLEWR00_Pos (0UL) /*!< SLEWR00 (Bit 0) */ + #define R_USB_FS0_PHYSLEW_SLEWR00_Msk (0x1UL) /*!< SLEWR00 (Bitfield-Mask: 0x01) */ +/* ======================================================== LPCTRL ========================================================= */ + #define R_USB_FS0_LPCTRL_HWUPM_Pos (7UL) /*!< HWUPM (Bit 7) */ + #define R_USB_FS0_LPCTRL_HWUPM_Msk (0x80UL) /*!< HWUPM (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSTS ========================================================= */ + #define R_USB_FS0_LPSTS_SUSPENDM_Pos (14UL) /*!< SUSPENDM (Bit 14) */ + #define R_USB_FS0_LPSTS_SUSPENDM_Msk (0x4000UL) /*!< SUSPENDM (Bitfield-Mask: 0x01) */ +/* ======================================================== BCCTRL ========================================================= */ + #define R_USB_FS0_BCCTRL_PDDETSTS_Pos (9UL) /*!< PDDETSTS (Bit 9) */ + #define R_USB_FS0_BCCTRL_PDDETSTS_Msk (0x200UL) /*!< PDDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_CHGDETSTS_Pos (8UL) /*!< CHGDETSTS (Bit 8) */ + #define R_USB_FS0_BCCTRL_CHGDETSTS_Msk (0x100UL) /*!< CHGDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_DCPMODE_Pos (5UL) /*!< DCPMODE (Bit 5) */ + #define R_USB_FS0_BCCTRL_DCPMODE_Msk (0x20UL) /*!< DCPMODE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_VDMSRCE_Pos (4UL) /*!< VDMSRCE (Bit 4) */ + #define R_USB_FS0_BCCTRL_VDMSRCE_Msk (0x10UL) /*!< VDMSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_IDPSINKE_Pos (3UL) /*!< IDPSINKE (Bit 3) */ + #define R_USB_FS0_BCCTRL_IDPSINKE_Msk (0x8UL) /*!< IDPSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_VDPSRCE_Pos (2UL) /*!< VDPSRCE (Bit 2) */ + #define R_USB_FS0_BCCTRL_VDPSRCE_Msk (0x4UL) /*!< VDPSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_IDMSINKE_Pos (1UL) /*!< IDMSINKE (Bit 1) */ + #define R_USB_FS0_BCCTRL_IDMSINKE_Msk (0x2UL) /*!< IDMSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_BCCTRL_IDPSRCE_Pos (0UL) /*!< IDPSRCE (Bit 0) */ + #define R_USB_FS0_BCCTRL_IDPSRCE_Msk (0x1UL) /*!< IDPSRCE (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL1 ======================================================== */ + #define R_USB_FS0_PL1CTRL1_L1EXTMD_Pos (14UL) /*!< L1EXTMD (Bit 14) */ + #define R_USB_FS0_PL1CTRL1_L1EXTMD_Msk (0x4000UL) /*!< L1EXTMD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PL1CTRL1_HIRDTHR_Pos (8UL) /*!< HIRDTHR (Bit 8) */ + #define R_USB_FS0_PL1CTRL1_HIRDTHR_Msk (0xf00UL) /*!< HIRDTHR (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_PL1CTRL1_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_FS0_PL1CTRL1_DVSQ_Msk (0xf0UL) /*!< DVSQ (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_PL1CTRL1_L1NEGOMD_Pos (3UL) /*!< L1NEGOMD (Bit 3) */ + #define R_USB_FS0_PL1CTRL1_L1NEGOMD_Msk (0x8UL) /*!< L1NEGOMD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PL1CTRL1_L1RESPMD_Pos (1UL) /*!< L1RESPMD (Bit 1) */ + #define R_USB_FS0_PL1CTRL1_L1RESPMD_Msk (0x6UL) /*!< L1RESPMD (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_PL1CTRL1_L1RESPEN_Pos (0UL) /*!< L1RESPEN (Bit 0) */ + #define R_USB_FS0_PL1CTRL1_L1RESPEN_Msk (0x1UL) /*!< L1RESPEN (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL2 ======================================================== */ + #define R_USB_FS0_PL1CTRL2_RWEMON_Pos (12UL) /*!< RWEMON (Bit 12) */ + #define R_USB_FS0_PL1CTRL2_RWEMON_Msk (0x1000UL) /*!< RWEMON (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_PL1CTRL2_HIRDMON_Pos (8UL) /*!< HIRDMON (Bit 8) */ + #define R_USB_FS0_PL1CTRL2_HIRDMON_Msk (0xf00UL) /*!< HIRDMON (Bitfield-Mask: 0x0f) */ +/* ======================================================= HL1CTRL1 ======================================================== */ + #define R_USB_FS0_HL1CTRL1_L1STATUS_Pos (1UL) /*!< L1STATUS (Bit 1) */ + #define R_USB_FS0_HL1CTRL1_L1STATUS_Msk (0x6UL) /*!< L1STATUS (Bitfield-Mask: 0x03) */ + #define R_USB_FS0_HL1CTRL1_L1REQ_Pos (0UL) /*!< L1REQ (Bit 0) */ + #define R_USB_FS0_HL1CTRL1_L1REQ_Msk (0x1UL) /*!< L1REQ (Bitfield-Mask: 0x01) */ +/* ======================================================= HL1CTRL2 ======================================================== */ + #define R_USB_FS0_HL1CTRL2_BESL_Pos (15UL) /*!< BESL (Bit 15) */ + #define R_USB_FS0_HL1CTRL2_BESL_Msk (0x8000UL) /*!< BESL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_HL1CTRL2_L1RWE_Pos (12UL) /*!< L1RWE (Bit 12) */ + #define R_USB_FS0_HL1CTRL2_L1RWE_Msk (0x1000UL) /*!< L1RWE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_HL1CTRL2_HIRD_Pos (8UL) /*!< HIRD (Bit 8) */ + #define R_USB_FS0_HL1CTRL2_HIRD_Msk (0xf00UL) /*!< HIRD (Bitfield-Mask: 0x0f) */ + #define R_USB_FS0_HL1CTRL2_L1ADDR_Pos (0UL) /*!< L1ADDR (Bit 0) */ + #define R_USB_FS0_HL1CTRL2_L1ADDR_Msk (0xfUL) /*!< L1ADDR (Bitfield-Mask: 0x0f) */ +/* ======================================================== DPUSR0R ======================================================== */ + #define R_USB_FS0_DPUSR0R_DVBSTSHM_Pos (23UL) /*!< DVBSTSHM (Bit 23) */ + #define R_USB_FS0_DPUSR0R_DVBSTSHM_Msk (0x800000UL) /*!< DVBSTSHM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_DOVCBHM_Pos (21UL) /*!< DOVCBHM (Bit 21) */ + #define R_USB_FS0_DPUSR0R_DOVCBHM_Msk (0x200000UL) /*!< DOVCBHM (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_DOVCAHM_Pos (20UL) /*!< DOVCAHM (Bit 20) */ + #define R_USB_FS0_DPUSR0R_DOVCAHM_Msk (0x100000UL) /*!< DOVCAHM (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR1R ======================================================== */ + #define R_USB_FS0_DPUSR1R_DVBSTSH_Pos (23UL) /*!< DVBSTSH (Bit 23) */ + #define R_USB_FS0_DPUSR1R_DVBSTSH_Msk (0x800000UL) /*!< DVBSTSH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCBH_Pos (21UL) /*!< DOVCBH (Bit 21) */ + #define R_USB_FS0_DPUSR1R_DOVCBH_Msk (0x200000UL) /*!< DOVCBH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCAH_Pos (20UL) /*!< DOVCAH (Bit 20) */ + #define R_USB_FS0_DPUSR1R_DOVCAH_Msk (0x100000UL) /*!< DOVCAH (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DVBSTSHE_Pos (7UL) /*!< DVBSTSHE (Bit 7) */ + #define R_USB_FS0_DPUSR1R_DVBSTSHE_Msk (0x80UL) /*!< DVBSTSHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCBHE_Pos (5UL) /*!< DOVCBHE (Bit 5) */ + #define R_USB_FS0_DPUSR1R_DOVCBHE_Msk (0x20UL) /*!< DOVCBHE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_DOVCAHE_Pos (4UL) /*!< DOVCAHE (Bit 4) */ + #define R_USB_FS0_DPUSR1R_DOVCAHE_Msk (0x10UL) /*!< DOVCAHE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR2R ======================================================== */ + #define R_USB_FS0_DPUSR2R_DMINTE_Pos (9UL) /*!< DMINTE (Bit 9) */ + #define R_USB_FS0_DPUSR2R_DMINTE_Msk (0x200UL) /*!< DMINTE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DPINTE_Pos (8UL) /*!< DPINTE (Bit 8) */ + #define R_USB_FS0_DPUSR2R_DPINTE_Msk (0x100UL) /*!< DPINTE (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DMVAL_Pos (5UL) /*!< DMVAL (Bit 5) */ + #define R_USB_FS0_DPUSR2R_DMVAL_Msk (0x20UL) /*!< DMVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DPVAL_Pos (4UL) /*!< DPVAL (Bit 4) */ + #define R_USB_FS0_DPUSR2R_DPVAL_Msk (0x10UL) /*!< DPVAL (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DMINT_Pos (1UL) /*!< DMINT (Bit 1) */ + #define R_USB_FS0_DPUSR2R_DMINT_Msk (0x2UL) /*!< DMINT (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR2R_DPINT_Pos (0UL) /*!< DPINT (Bit 0) */ + #define R_USB_FS0_DPUSR2R_DPINT_Msk (0x1UL) /*!< DPINT (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSRCR ======================================================== */ + #define R_USB_FS0_DPUSRCR_FIXPHYPD_Pos (1UL) /*!< FIXPHYPD (Bit 1) */ + #define R_USB_FS0_DPUSRCR_FIXPHYPD_Msk (0x2UL) /*!< FIXPHYPD (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSRCR_FIXPHY_Pos (0UL) /*!< FIXPHY (Bit 0) */ + #define R_USB_FS0_DPUSRCR_FIXPHY_Msk (0x1UL) /*!< FIXPHY (Bitfield-Mask: 0x01) */ +/* ====================================================== DPUSR0R_FS ======================================================= */ + #define R_USB_FS0_DPUSR0R_FS_DVBSTS0_Pos (23UL) /*!< DVBSTS0 (Bit 23) */ + #define R_USB_FS0_DPUSR0R_FS_DVBSTS0_Msk (0x800000UL) /*!< DVBSTS0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCB0_Pos (21UL) /*!< DOVCB0 (Bit 21) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCB0_Msk (0x200000UL) /*!< DOVCB0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCA0_Pos (20UL) /*!< DOVCA0 (Bit 20) */ + #define R_USB_FS0_DPUSR0R_FS_DOVCA0_Msk (0x100000UL) /*!< DOVCA0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DM0_Pos (17UL) /*!< DM0 (Bit 17) */ + #define R_USB_FS0_DPUSR0R_FS_DM0_Msk (0x20000UL) /*!< DM0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DP0_Pos (16UL) /*!< DP0 (Bit 16) */ + #define R_USB_FS0_DPUSR0R_FS_DP0_Msk (0x10000UL) /*!< DP0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_FIXPHY0_Pos (4UL) /*!< FIXPHY0 (Bit 4) */ + #define R_USB_FS0_DPUSR0R_FS_FIXPHY0_Msk (0x10UL) /*!< FIXPHY0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_DRPD0_Pos (3UL) /*!< DRPD0 (Bit 3) */ + #define R_USB_FS0_DPUSR0R_FS_DRPD0_Msk (0x8UL) /*!< DRPD0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_RPUE0_Pos (1UL) /*!< RPUE0 (Bit 1) */ + #define R_USB_FS0_DPUSR0R_FS_RPUE0_Msk (0x2UL) /*!< RPUE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR0R_FS_SRPC0_Pos (0UL) /*!< SRPC0 (Bit 0) */ + #define R_USB_FS0_DPUSR0R_FS_SRPC0_Msk (0x1UL) /*!< SRPC0 (Bitfield-Mask: 0x01) */ +/* ====================================================== DPUSR1R_FS ======================================================= */ + #define R_USB_FS0_DPUSR1R_FS_DVBINT0_Pos (23UL) /*!< DVBINT0 (Bit 23) */ + #define R_USB_FS0_DPUSR1R_FS_DVBINT0_Msk (0x800000UL) /*!< DVBINT0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRB0_Pos (21UL) /*!< DOVRCRB0 (Bit 21) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRB0_Msk (0x200000UL) /*!< DOVRCRB0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRA0_Pos (20UL) /*!< DOVRCRA0 (Bit 20) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRA0_Msk (0x100000UL) /*!< DOVRCRA0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DMINT0_Pos (17UL) /*!< DMINT0 (Bit 17) */ + #define R_USB_FS0_DPUSR1R_FS_DMINT0_Msk (0x20000UL) /*!< DMINT0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DPINT0_Pos (16UL) /*!< DPINT0 (Bit 16) */ + #define R_USB_FS0_DPUSR1R_FS_DPINT0_Msk (0x10000UL) /*!< DPINT0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DVBSE0_Pos (7UL) /*!< DVBSE0 (Bit 7) */ + #define R_USB_FS0_DPUSR1R_FS_DVBSE0_Msk (0x80UL) /*!< DVBSE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRBE0_Pos (5UL) /*!< DOVRCRBE0 (Bit 5) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRBE0_Msk (0x20UL) /*!< DOVRCRBE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRAE0_Pos (4UL) /*!< DOVRCRAE0 (Bit 4) */ + #define R_USB_FS0_DPUSR1R_FS_DOVRCRAE0_Msk (0x10UL) /*!< DOVRCRAE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DMINTE0_Pos (1UL) /*!< DMINTE0 (Bit 1) */ + #define R_USB_FS0_DPUSR1R_FS_DMINTE0_Msk (0x2UL) /*!< DMINTE0 (Bitfield-Mask: 0x01) */ + #define R_USB_FS0_DPUSR1R_FS_DPINTE0_Pos (0UL) /*!< DPINTE0 (Bit 0) */ + #define R_USB_FS0_DPUSR1R_FS_DPINTE0_Msk (0x1UL) /*!< DPINTE0 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_WDT ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= WDTRR ========================================================= */ + #define R_WDT_WDTRR_WDTRR_Pos (0UL) /*!< WDTRR (Bit 0) */ + #define R_WDT_WDTRR_WDTRR_Msk (0xffUL) /*!< WDTRR (Bitfield-Mask: 0xff) */ +/* ========================================================= WDTCR ========================================================= */ + #define R_WDT_WDTCR_RPSS_Pos (12UL) /*!< RPSS (Bit 12) */ + #define R_WDT_WDTCR_RPSS_Msk (0x3000UL) /*!< RPSS (Bitfield-Mask: 0x03) */ + #define R_WDT_WDTCR_RPES_Pos (8UL) /*!< RPES (Bit 8) */ + #define R_WDT_WDTCR_RPES_Msk (0x300UL) /*!< RPES (Bitfield-Mask: 0x03) */ + #define R_WDT_WDTCR_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_WDT_WDTCR_CKS_Msk (0xf0UL) /*!< CKS (Bitfield-Mask: 0x0f) */ + #define R_WDT_WDTCR_TOPS_Pos (0UL) /*!< TOPS (Bit 0) */ + #define R_WDT_WDTCR_TOPS_Msk (0x3UL) /*!< TOPS (Bitfield-Mask: 0x03) */ +/* ========================================================= WDTSR ========================================================= */ + #define R_WDT_WDTSR_REFEF_Pos (15UL) /*!< REFEF (Bit 15) */ + #define R_WDT_WDTSR_REFEF_Msk (0x8000UL) /*!< REFEF (Bitfield-Mask: 0x01) */ + #define R_WDT_WDTSR_UNDFF_Pos (14UL) /*!< UNDFF (Bit 14) */ + #define R_WDT_WDTSR_UNDFF_Msk (0x4000UL) /*!< UNDFF (Bitfield-Mask: 0x01) */ + #define R_WDT_WDTSR_CNTVAL_Pos (0UL) /*!< CNTVAL (Bit 0) */ + #define R_WDT_WDTSR_CNTVAL_Msk (0x3fffUL) /*!< CNTVAL (Bitfield-Mask: 0x3fff) */ +/* ======================================================== WDTRCR ========================================================= */ + #define R_WDT_WDTRCR_RSTIRQS_Pos (7UL) /*!< RSTIRQS (Bit 7) */ + #define R_WDT_WDTRCR_RSTIRQS_Msk (0x80UL) /*!< RSTIRQS (Bitfield-Mask: 0x01) */ +/* ======================================================= WDTCSTPR ======================================================== */ + #define R_WDT_WDTCSTPR_SLCSTP_Pos (7UL) /*!< SLCSTP (Bit 7) */ + #define R_WDT_WDTCSTPR_SLCSTP_Msk (0x80UL) /*!< SLCSTP (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_TZF ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== TZFOAD ========================================================= */ + #define R_TZF_TZFOAD_OAD_Pos (0UL) /*!< OAD (Bit 0) */ + #define R_TZF_TZFOAD_OAD_Msk (0x1UL) /*!< OAD (Bitfield-Mask: 0x01) */ + #define R_TZF_TZFOAD_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_TZF_TZFOAD_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ +/* ========================================================= TZFPT ========================================================= */ + #define R_TZF_TZFPT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_TZF_TZFPT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ + #define R_TZF_TZFPT_KEY_Pos (8UL) /*!< KEY (Bit 8) */ + #define R_TZF_TZFPT_KEY_Msk (0xff00UL) /*!< KEY (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_CPSCU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CSAR ========================================================== */ + #define R_CPSCU_CSAR_CACHESA_Pos (0UL) /*!< CACHESA (Bit 0) */ + #define R_CPSCU_CSAR_CACHESA_Msk (0x1UL) /*!< CACHESA (Bitfield-Mask: 0x01) */ + #define R_CPSCU_CSAR_CACHELSA_Pos (1UL) /*!< CACHELSA (Bit 1) */ + #define R_CPSCU_CSAR_CACHELSA_Msk (0x2UL) /*!< CACHELSA (Bitfield-Mask: 0x01) */ + #define R_CPSCU_CSAR_CACHEESA_Pos (2UL) /*!< CACHEESA (Bit 2) */ + #define R_CPSCU_CSAR_CACHEESA_Msk (0x4UL) /*!< CACHEESA (Bitfield-Mask: 0x01) */ +/* ======================================================== SRAMSAR ======================================================== */ + #define R_CPSCU_SRAMSAR_SRAMSA0_Pos (0UL) /*!< SRAMSA0 (Bit 0) */ + #define R_CPSCU_SRAMSAR_SRAMSA0_Msk (0x1UL) /*!< SRAMSA0 (Bitfield-Mask: 0x01) */ + #define R_CPSCU_SRAMSAR_SRAMSA1_Pos (1UL) /*!< SRAMSA1 (Bit 1) */ + #define R_CPSCU_SRAMSAR_SRAMSA1_Msk (0x2UL) /*!< SRAMSA1 (Bitfield-Mask: 0x01) */ + #define R_CPSCU_SRAMSAR_SRAMSA2_Pos (2UL) /*!< SRAMSA2 (Bit 2) */ + #define R_CPSCU_SRAMSAR_SRAMSA2_Msk (0x4UL) /*!< SRAMSA2 (Bitfield-Mask: 0x01) */ +/* ======================================================= STBRAMSAR ======================================================= */ + #define R_CPSCU_STBRAMSAR_NSBSTBR_Pos (0UL) /*!< NSBSTBR (Bit 0) */ + #define R_CPSCU_STBRAMSAR_NSBSTBR_Msk (0xfUL) /*!< NSBSTBR (Bitfield-Mask: 0x0f) */ +/* ======================================================== DTCSAR ========================================================= */ + #define R_CPSCU_DTCSAR_DTCSTSA_Pos (0UL) /*!< DTCSTSA (Bit 0) */ + #define R_CPSCU_DTCSAR_DTCSTSA_Msk (0x1UL) /*!< DTCSTSA (Bitfield-Mask: 0x01) */ +/* ======================================================== DMACSAR ======================================================== */ + #define R_CPSCU_DMACSAR_DMASTSA_Pos (0UL) /*!< DMASTSA (Bit 0) */ + #define R_CPSCU_DMACSAR_DMASTSA_Msk (0x1UL) /*!< DMASTSA (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARA ======================================================== */ + #define R_CPSCU_ICUSARA_SAIRQCRn_Pos (0UL) /*!< SAIRQCRn (Bit 0) */ + #define R_CPSCU_ICUSARA_SAIRQCRn_Msk (0xffffUL) /*!< SAIRQCRn (Bitfield-Mask: 0xffff) */ +/* ======================================================== ICUSARB ======================================================== */ + #define R_CPSCU_ICUSARB_SANMI_Pos (0UL) /*!< SANMI (Bit 0) */ + #define R_CPSCU_ICUSARB_SANMI_Msk (0x1UL) /*!< SANMI (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARC ======================================================== */ + #define R_CPSCU_ICUSARC_SADMACn_Pos (0UL) /*!< SADMACn (Bit 0) */ + #define R_CPSCU_ICUSARC_SADMACn_Msk (0xffUL) /*!< SADMACn (Bitfield-Mask: 0xff) */ +/* ======================================================== ICUSARD ======================================================== */ + #define R_CPSCU_ICUSARD_SASELSR0_Pos (0UL) /*!< SASELSR0 (Bit 0) */ + #define R_CPSCU_ICUSARD_SASELSR0_Msk (0x1UL) /*!< SASELSR0 (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARE ======================================================== */ + #define R_CPSCU_ICUSARE_SAIWDTWUP_Pos (16UL) /*!< SAIWDTWUP (Bit 16) */ + #define R_CPSCU_ICUSARE_SAIWDTWUP_Msk (0x10000UL) /*!< SAIWDTWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SALVD1WUP_Pos (18UL) /*!< SALVD1WUP (Bit 18) */ + #define R_CPSCU_ICUSARE_SALVD1WUP_Msk (0x40000UL) /*!< SALVD1WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SALVD2WUP_Pos (19UL) /*!< SALVD2WUP (Bit 19) */ + #define R_CPSCU_ICUSARE_SALVD2WUP_Msk (0x80000UL) /*!< SALVD2WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAVBATTWUP_Pos (20UL) /*!< SAVBATTWUP (Bit 20) */ + #define R_CPSCU_ICUSARE_SAVBATTWUP_Msk (0x100000UL) /*!< SAVBATTWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SARTCALMWUP_Pos (24UL) /*!< SARTCALMWUP (Bit 24) */ + #define R_CPSCU_ICUSARE_SARTCALMWUP_Msk (0x1000000UL) /*!< SARTCALMWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SARTCPRDWUP_Pos (25UL) /*!< SARTCPRDWUP (Bit 25) */ + #define R_CPSCU_ICUSARE_SARTCPRDWUP_Msk (0x2000000UL) /*!< SARTCPRDWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAUSBFS0WUP_Pos (27UL) /*!< SAUSBFS0WUP (Bit 27) */ + #define R_CPSCU_ICUSARE_SAUSBFS0WUP_Msk (0x8000000UL) /*!< SAUSBFS0WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAAGT1UDWUP_Pos (28UL) /*!< SAAGT1UDWUP (Bit 28) */ + #define R_CPSCU_ICUSARE_SAAGT1UDWUP_Msk (0x10000000UL) /*!< SAAGT1UDWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAAGT1CAWUP_Pos (29UL) /*!< SAAGT1CAWUP (Bit 29) */ + #define R_CPSCU_ICUSARE_SAAGT1CAWUP_Msk (0x20000000UL) /*!< SAAGT1CAWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAAGT1CBWUP_Pos (30UL) /*!< SAAGT1CBWUP (Bit 30) */ + #define R_CPSCU_ICUSARE_SAAGT1CBWUP_Msk (0x40000000UL) /*!< SAAGT1CBWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARE_SAIIC0WUP_Pos (31UL) /*!< SAIIC0WUP (Bit 31) */ + #define R_CPSCU_ICUSARE_SAIIC0WUP_Msk (0x80000000UL) /*!< SAIIC0WUP (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARF ======================================================== */ + #define R_CPSCU_ICUSARF_SAAGT3UDWUP_Pos (0UL) /*!< SAAGT3UDWUP (Bit 0) */ + #define R_CPSCU_ICUSARF_SAAGT3UDWUP_Msk (0x1UL) /*!< SAAGT3UDWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAAGT3CAWUP_Pos (1UL) /*!< SAAGT3CAWUP (Bit 1) */ + #define R_CPSCU_ICUSARF_SAAGT3CAWUP_Msk (0x2UL) /*!< SAAGT3CAWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAAGT3CBWUP_Pos (2UL) /*!< SAAGT3CBWUP (Bit 2) */ + #define R_CPSCU_ICUSARF_SAAGT3CBWUP_Msk (0x4UL) /*!< SAAGT3CBWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SACOMPHS0WUP_Pos (3UL) /*!< SACOMPHS0WUP (Bit 3) */ + #define R_CPSCU_ICUSARF_SACOMPHS0WUP_Msk (0x8UL) /*!< SACOMPHS0WUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP0UWUP_Pos (8UL) /*!< SAULP0UWUP (Bit 8) */ + #define R_CPSCU_ICUSARF_SAULP0UWUP_Msk (0x100UL) /*!< SAULP0UWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP0AWUP_Pos (9UL) /*!< SAULP0AWUP (Bit 9) */ + #define R_CPSCU_ICUSARF_SAULP0AWUP_Msk (0x200UL) /*!< SAULP0AWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP0BWUP_Pos (10UL) /*!< SAULP0BWUP (Bit 10) */ + #define R_CPSCU_ICUSARF_SAULP0BWUP_Msk (0x400UL) /*!< SAULP0BWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAI3CWUP_Pos (11UL) /*!< SAI3CWUP (Bit 11) */ + #define R_CPSCU_ICUSARF_SAI3CWUP_Msk (0x800UL) /*!< SAI3CWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP1UWUP_Pos (12UL) /*!< SAULP1UWUP (Bit 12) */ + #define R_CPSCU_ICUSARF_SAULP1UWUP_Msk (0x1000UL) /*!< SAULP1UWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP1AWUP_Pos (13UL) /*!< SAULP1AWUP (Bit 13) */ + #define R_CPSCU_ICUSARF_SAULP1AWUP_Msk (0x2000UL) /*!< SAULP1AWUP (Bitfield-Mask: 0x01) */ + #define R_CPSCU_ICUSARF_SAULP1BWUP_Pos (14UL) /*!< SAULP1BWUP (Bit 14) */ + #define R_CPSCU_ICUSARF_SAULP1BWUP_Msk (0x4000UL) /*!< SAULP1BWUP (Bitfield-Mask: 0x01) */ +/* ======================================================== ICUSARG ======================================================== */ + #define R_CPSCU_ICUSARG_SAIELSRn_Pos (0UL) /*!< SAIELSRn (Bit 0) */ + #define R_CPSCU_ICUSARG_SAIELSRn_Msk (0xffffffffUL) /*!< SAIELSRn (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ICUSARH ======================================================== */ + #define R_CPSCU_ICUSARH_SAIELSRn_Pos (0UL) /*!< SAIELSRn (Bit 0) */ + #define R_CPSCU_ICUSARH_SAIELSRn_Msk (0xffffffffUL) /*!< SAIELSRn (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ICUSARI ======================================================== */ + #define R_CPSCU_ICUSARI_SAIELSRn_Pos (0UL) /*!< SAIELSRn (Bit 0) */ + #define R_CPSCU_ICUSARI_SAIELSRn_Msk (0xffffffffUL) /*!< SAIELSRn (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== BUSSARA ======================================================== */ + #define R_CPSCU_BUSSARA_BUSSA0_Pos (0UL) /*!< BUSSA0 (Bit 0) */ + #define R_CPSCU_BUSSARA_BUSSA0_Msk (0x1UL) /*!< BUSSA0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSSARB ======================================================== */ + #define R_CPSCU_BUSSARB_BUSSB0_Pos (0UL) /*!< BUSSB0 (Bit 0) */ + #define R_CPSCU_BUSSARB_BUSSB0_Msk (0x1UL) /*!< BUSSB0 (Bitfield-Mask: 0x01) */ +/* ======================================================= MMPUSARA ======================================================== */ + #define R_CPSCU_MMPUSARA_MMPUAnSA_Pos (0UL) /*!< MMPUAnSA (Bit 0) */ + #define R_CPSCU_MMPUSARA_MMPUAnSA_Msk (0xffUL) /*!< MMPUAnSA (Bitfield-Mask: 0xff) */ +/* ======================================================= MMPUSARB ======================================================== */ + #define R_CPSCU_MMPUSARB_MMPUB0SA_Pos (0UL) /*!< MMPUB0SA (Bit 0) */ + #define R_CPSCU_MMPUSARB_MMPUB0SA_Msk (0x1UL) /*!< MMPUB0SA (Bitfield-Mask: 0x01) */ +/* ======================================================= DMACCHSAR ======================================================= */ + #define R_CPSCU_DMACCHSAR_DMACCHSARn_Pos (0UL) /*!< DMACCHSARn (Bit 0) */ + #define R_CPSCU_DMACCHSAR_DMACCHSARn_Msk (0xffUL) /*!< DMACCHSARn (Bitfield-Mask: 0xff) */ +/* ======================================================== CPUDSAR ======================================================== */ + #define R_CPSCU_CPUDSAR_CPUDSA0_Pos (0UL) /*!< CPUDSA0 (Bit 0) */ + #define R_CPSCU_CPUDSAR_CPUDSA0_Msk (0x1UL) /*!< CPUDSA0 (Bitfield-Mask: 0x01) */ +/* ====================================================== SRAMSABAR0 ======================================================= */ + #define R_CPSCU_SRAMSABAR0_SRAMSABAR_Pos (13UL) /*!< SRAMSABAR (Bit 13) */ + #define R_CPSCU_SRAMSABAR0_SRAMSABAR_Msk (0x1fe000UL) /*!< SRAMSABAR (Bitfield-Mask: 0xff) */ +/* ====================================================== SRAMSABAR1 ======================================================= */ + #define R_CPSCU_SRAMSABAR1_SRAMSABAR_Pos (13UL) /*!< SRAMSABAR (Bit 13) */ + #define R_CPSCU_SRAMSABAR1_SRAMSABAR_Msk (0x1fe000UL) /*!< SRAMSABAR (Bitfield-Mask: 0xff) */ +/* ======================================================== TEVTRCR ======================================================== */ + #define R_CPSCU_TEVTRCR_TEVTE_Pos (0UL) /*!< TEVTE (Bit 0) */ + #define R_CPSCU_TEVTRCR_TEVTE_Msk (0x1UL) /*!< TEVTE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC_B ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DOCR ========================================================== */ + #define R_DOC_B_DOCR_OMS_Pos (0UL) /*!< OMS (Bit 0) */ + #define R_DOC_B_DOCR_OMS_Msk (0x3UL) /*!< OMS (Bitfield-Mask: 0x03) */ + #define R_DOC_B_DOCR_DOBW_Pos (3UL) /*!< DOBW (Bit 3) */ + #define R_DOC_B_DOCR_DOBW_Msk (0x8UL) /*!< DOBW (Bitfield-Mask: 0x01) */ + #define R_DOC_B_DOCR_DCSEL_Pos (4UL) /*!< DCSEL (Bit 4) */ + #define R_DOC_B_DOCR_DCSEL_Msk (0x70UL) /*!< DCSEL (Bitfield-Mask: 0x07) */ +/* ========================================================= DOSR ========================================================== */ + #define R_DOC_B_DOSR_DOPCF_Pos (0UL) /*!< DOPCF (Bit 0) */ + #define R_DOC_B_DOSR_DOPCF_Msk (0x1UL) /*!< DOPCF (Bitfield-Mask: 0x01) */ +/* ========================================================= DOSCR ========================================================= */ + #define R_DOC_B_DOSCR_DOPCFCL_Pos (0UL) /*!< DOPCFCL (Bit 0) */ + #define R_DOC_B_DOSCR_DOPCFCL_Msk (0x1UL) /*!< DOPCFCL (Bitfield-Mask: 0x01) */ +/* ========================================================= DODIR ========================================================= */ +/* ======================================================== DODSR0 ========================================================= */ +/* ======================================================== DODSR1 ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_SCI_B0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== RDR ========================================================== */ + #define R_SCI_B0_RDR_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI_B0_RDR_RDAT_Msk (0x1ffUL) /*!< RDAT (Bitfield-Mask: 0x1ff) */ + #define R_SCI_B0_RDR_MPB_Pos (9UL) /*!< MPB (Bit 9) */ + #define R_SCI_B0_RDR_MPB_Msk (0x200UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_DR_Pos (10UL) /*!< DR (Bit 10) */ + #define R_SCI_B0_RDR_DR_Msk (0x400UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_FPER_Pos (11UL) /*!< FPER (Bit 11) */ + #define R_SCI_B0_RDR_FPER_Msk (0x800UL) /*!< FPER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_FFER_Pos (12UL) /*!< FFER (Bit 12) */ + #define R_SCI_B0_RDR_FFER_Msk (0x1000UL) /*!< FFER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_ORER_Pos (24UL) /*!< ORER (Bit 24) */ + #define R_SCI_B0_RDR_ORER_Msk (0x1000000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_PER_Pos (27UL) /*!< PER (Bit 27) */ + #define R_SCI_B0_RDR_PER_Msk (0x8000000UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_RDR_FER_Pos (28UL) /*!< FER (Bit 28) */ + #define R_SCI_B0_RDR_FER_Msk (0x10000000UL) /*!< FER (Bitfield-Mask: 0x01) */ +/* ======================================================== RDR_BY ========================================================= */ + #define R_SCI_B0_RDR_BY_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI_B0_RDR_BY_RDAT_Msk (0xffUL) /*!< RDAT (Bitfield-Mask: 0xff) */ +/* ========================================================== TDR ========================================================== */ + #define R_SCI_B0_TDR_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI_B0_TDR_TDAT_Msk (0x1ffUL) /*!< TDAT (Bitfield-Mask: 0x1ff) */ + #define R_SCI_B0_TDR_MPBT_Pos (9UL) /*!< MPBT (Bit 9) */ + #define R_SCI_B0_TDR_MPBT_Msk (0x200UL) /*!< MPBT (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_TDR_TSYNC_Pos (12UL) /*!< TSYNC (Bit 12) */ + #define R_SCI_B0_TDR_TSYNC_Msk (0x1000UL) /*!< TSYNC (Bitfield-Mask: 0x01) */ +/* ======================================================== TDR_BY ========================================================= */ + #define R_SCI_B0_TDR_BY_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI_B0_TDR_BY_TDAT_Msk (0xffUL) /*!< TDAT (Bitfield-Mask: 0xff) */ +/* ========================================================= CCR0 ========================================================== */ + #define R_SCI_B0_CCR0_RE_Pos (0UL) /*!< RE (Bit 0) */ + #define R_SCI_B0_CCR0_RE_Msk (0x1UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_TE_Pos (4UL) /*!< TE (Bit 4) */ + #define R_SCI_B0_CCR0_TE_Msk (0x10UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_MPIE_Pos (8UL) /*!< MPIE (Bit 8) */ + #define R_SCI_B0_CCR0_MPIE_Msk (0x100UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_DCME_Pos (9UL) /*!< DCME (Bit 9) */ + #define R_SCI_B0_CCR0_DCME_Msk (0x200UL) /*!< DCME (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_IDSEL_Pos (10UL) /*!< IDSEL (Bit 10) */ + #define R_SCI_B0_CCR0_IDSEL_Msk (0x400UL) /*!< IDSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_RIE_Pos (16UL) /*!< RIE (Bit 16) */ + #define R_SCI_B0_CCR0_RIE_Msk (0x10000UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_TIE_Pos (20UL) /*!< TIE (Bit 20) */ + #define R_SCI_B0_CCR0_TIE_Msk (0x100000UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_TEIE_Pos (21UL) /*!< TEIE (Bit 21) */ + #define R_SCI_B0_CCR0_TEIE_Msk (0x200000UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR0_SSE_Pos (24UL) /*!< SSE (Bit 24) */ + #define R_SCI_B0_CCR0_SSE_Msk (0x1000000UL) /*!< SSE (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR1 ========================================================== */ + #define R_SCI_B0_CCR1_CTSE_Pos (0UL) /*!< CTSE (Bit 0) */ + #define R_SCI_B0_CCR1_CTSE_Msk (0x1UL) /*!< CTSE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_CTSPEN_Pos (1UL) /*!< CTSPEN (Bit 1) */ + #define R_SCI_B0_CCR1_CTSPEN_Msk (0x2UL) /*!< CTSPEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SPB2DT_Pos (4UL) /*!< SPB2DT (Bit 4) */ + #define R_SCI_B0_CCR1_SPB2DT_Msk (0x10UL) /*!< SPB2DT (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SPB2IO_Pos (5UL) /*!< SPB2IO (Bit 5) */ + #define R_SCI_B0_CCR1_SPB2IO_Msk (0x20UL) /*!< SPB2IO (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_PE_Pos (8UL) /*!< PE (Bit 8) */ + #define R_SCI_B0_CCR1_PE_Msk (0x100UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_PM_Pos (9UL) /*!< PM (Bit 9) */ + #define R_SCI_B0_CCR1_PM_Msk (0x200UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_TINV_Pos (12UL) /*!< TINV (Bit 12) */ + #define R_SCI_B0_CCR1_TINV_Msk (0x1000UL) /*!< TINV (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_RINV_Pos (13UL) /*!< RINV (Bit 13) */ + #define R_SCI_B0_CCR1_RINV_Msk (0x2000UL) /*!< RINV (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SPLP_Pos (16UL) /*!< SPLP (Bit 16) */ + #define R_SCI_B0_CCR1_SPLP_Msk (0x10000UL) /*!< SPLP (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_SHARPS_Pos (20UL) /*!< SHARPS (Bit 20) */ + #define R_SCI_B0_CCR1_SHARPS_Msk (0x100000UL) /*!< SHARPS (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR1_NFCS_Pos (24UL) /*!< NFCS (Bit 24) */ + #define R_SCI_B0_CCR1_NFCS_Msk (0x7000000UL) /*!< NFCS (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR1_NFEN_Pos (28UL) /*!< NFEN (Bit 28) */ + #define R_SCI_B0_CCR1_NFEN_Msk (0x10000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR2 ========================================================== */ + #define R_SCI_B0_CCR2_BCP_Pos (0UL) /*!< BCP (Bit 0) */ + #define R_SCI_B0_CCR2_BCP_Msk (0x7UL) /*!< BCP (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR2_BGDM_Pos (4UL) /*!< BGDM (Bit 4) */ + #define R_SCI_B0_CCR2_BGDM_Msk (0x10UL) /*!< BGDM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_ABCS_Pos (5UL) /*!< ABCS (Bit 5) */ + #define R_SCI_B0_CCR2_ABCS_Msk (0x20UL) /*!< ABCS (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_ABCSE_Pos (6UL) /*!< ABCSE (Bit 6) */ + #define R_SCI_B0_CCR2_ABCSE_Msk (0x40UL) /*!< ABCSE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_BRR_Pos (8UL) /*!< BRR (Bit 8) */ + #define R_SCI_B0_CCR2_BRR_Msk (0xff00UL) /*!< BRR (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_CCR2_BRME_Pos (16UL) /*!< BRME (Bit 16) */ + #define R_SCI_B0_CCR2_BRME_Msk (0x10000UL) /*!< BRME (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR2_CKS_Pos (20UL) /*!< CKS (Bit 20) */ + #define R_SCI_B0_CCR2_CKS_Msk (0x300000UL) /*!< CKS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_CCR2_MDDR_Pos (24UL) /*!< MDDR (Bit 24) */ + #define R_SCI_B0_CCR2_MDDR_Msk (0xff000000UL) /*!< MDDR (Bitfield-Mask: 0xff) */ +/* ========================================================= CCR3 ========================================================== */ + #define R_SCI_B0_CCR3_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SCI_B0_CCR3_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SCI_B0_CCR3_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_BPEN_Pos (7UL) /*!< BPEN (Bit 7) */ + #define R_SCI_B0_CCR3_BPEN_Msk (0x80UL) /*!< BPEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_CHR_Pos (8UL) /*!< CHR (Bit 8) */ + #define R_SCI_B0_CCR3_CHR_Msk (0x300UL) /*!< CHR (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_CCR3_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SCI_B0_CCR3_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_SINV_Pos (13UL) /*!< SINV (Bit 13) */ + #define R_SCI_B0_CCR3_SINV_Msk (0x2000UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_STP_Pos (14UL) /*!< STP (Bit 14) */ + #define R_SCI_B0_CCR3_STP_Msk (0x4000UL) /*!< STP (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_RXDESEL_Pos (15UL) /*!< RXDESEL (Bit 15) */ + #define R_SCI_B0_CCR3_RXDESEL_Msk (0x8000UL) /*!< RXDESEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_MOD_Pos (16UL) /*!< MOD (Bit 16) */ + #define R_SCI_B0_CCR3_MOD_Msk (0x70000UL) /*!< MOD (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR3_MP_Pos (19UL) /*!< MP (Bit 19) */ + #define R_SCI_B0_CCR3_MP_Msk (0x80000UL) /*!< MP (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_FM_Pos (20UL) /*!< FM (Bit 20) */ + #define R_SCI_B0_CCR3_FM_Msk (0x100000UL) /*!< FM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_DEN_Pos (21UL) /*!< DEN (Bit 21) */ + #define R_SCI_B0_CCR3_DEN_Msk (0x200000UL) /*!< DEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_CKE_Pos (24UL) /*!< CKE (Bit 24) */ + #define R_SCI_B0_CCR3_CKE_Msk (0x3000000UL) /*!< CKE (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_CCR3_GM_Pos (28UL) /*!< GM (Bit 28) */ + #define R_SCI_B0_CCR3_GM_Msk (0x10000000UL) /*!< GM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR3_BLK_Pos (29UL) /*!< BLK (Bit 29) */ + #define R_SCI_B0_CCR3_BLK_Msk (0x20000000UL) /*!< BLK (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR4 ========================================================== */ + #define R_SCI_B0_CCR4_CMPD_Pos (0UL) /*!< CMPD (Bit 0) */ + #define R_SCI_B0_CCR4_CMPD_Msk (0x1ffUL) /*!< CMPD (Bitfield-Mask: 0x1ff) */ + #define R_SCI_B0_CCR4_ASEN_Pos (16UL) /*!< ASEN (Bit 16) */ + #define R_SCI_B0_CCR4_ASEN_Msk (0x10000UL) /*!< ASEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_ATEN_Pos (17UL) /*!< ATEN (Bit 17) */ + #define R_SCI_B0_CCR4_ATEN_Msk (0x20000UL) /*!< ATEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_SCKSEL_Pos (19UL) /*!< SCKSEL (Bit 19) */ + #define R_SCI_B0_CCR4_SCKSEL_Msk (0x80000UL) /*!< SCKSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_AST_Pos (24UL) /*!< AST (Bit 24) */ + #define R_SCI_B0_CCR4_AST_Msk (0x7000000UL) /*!< AST (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR4_AJD_Pos (27UL) /*!< AJD (Bit 27) */ + #define R_SCI_B0_CCR4_AJD_Msk (0x8000000UL) /*!< AJD (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CCR4_ATT_Pos (28UL) /*!< ATT (Bit 28) */ + #define R_SCI_B0_CCR4_ATT_Msk (0x70000000UL) /*!< ATT (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_CCR4_AET_Pos (31UL) /*!< AET (Bit 31) */ + #define R_SCI_B0_CCR4_AET_Msk (0x80000000UL) /*!< AET (Bitfield-Mask: 0x01) */ +/* ========================================================= CESR ========================================================== */ + #define R_SCI_B0_CESR_RIST_Pos (0UL) /*!< RIST (Bit 0) */ + #define R_SCI_B0_CESR_RIST_Msk (0x1UL) /*!< RIST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CESR_TIST_Pos (4UL) /*!< TIST (Bit 4) */ + #define R_SCI_B0_CESR_TIST_Msk (0x10UL) /*!< TIST (Bitfield-Mask: 0x01) */ +/* ========================================================== ICR ========================================================== */ + #define R_SCI_B0_ICR_IICDL_Pos (0UL) /*!< IICDL (Bit 0) */ + #define R_SCI_B0_ICR_IICDL_Msk (0x1fUL) /*!< IICDL (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_ICR_IICINTM_Pos (8UL) /*!< IICINTM (Bit 8) */ + #define R_SCI_B0_ICR_IICINTM_Msk (0x100UL) /*!< IICINTM (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICCSC_Pos (9UL) /*!< IICCSC (Bit 9) */ + #define R_SCI_B0_ICR_IICCSC_Msk (0x200UL) /*!< IICCSC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICACKT_Pos (13UL) /*!< IICACKT (Bit 13) */ + #define R_SCI_B0_ICR_IICACKT_Msk (0x2000UL) /*!< IICACKT (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICSTAREQ_Pos (16UL) /*!< IICSTAREQ (Bit 16) */ + #define R_SCI_B0_ICR_IICSTAREQ_Msk (0x10000UL) /*!< IICSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICRSTAREQ_Pos (17UL) /*!< IICRSTAREQ (Bit 17) */ + #define R_SCI_B0_ICR_IICRSTAREQ_Msk (0x20000UL) /*!< IICRSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICSTPREQ_Pos (18UL) /*!< IICSTPREQ (Bit 18) */ + #define R_SCI_B0_ICR_IICSTPREQ_Msk (0x40000UL) /*!< IICSTPREQ (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ICR_IICSDAS_Pos (20UL) /*!< IICSDAS (Bit 20) */ + #define R_SCI_B0_ICR_IICSDAS_Msk (0x300000UL) /*!< IICSDAS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_ICR_IICSCLS_Pos (22UL) /*!< IICSCLS (Bit 22) */ + #define R_SCI_B0_ICR_IICSCLS_Msk (0xc00000UL) /*!< IICSCLS (Bitfield-Mask: 0x03) */ +/* ========================================================== FCR ========================================================== */ + #define R_SCI_B0_FCR_DRES_Pos (0UL) /*!< DRES (Bit 0) */ + #define R_SCI_B0_FCR_DRES_Msk (0x1UL) /*!< DRES (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FCR_TTRG_Pos (8UL) /*!< TTRG (Bit 8) */ + #define R_SCI_B0_FCR_TTRG_Msk (0x1f00UL) /*!< TTRG (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_FCR_TFRST_Pos (15UL) /*!< TFRST (Bit 15) */ + #define R_SCI_B0_FCR_TFRST_Msk (0x8000UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FCR_RTRG_Pos (16UL) /*!< RTRG (Bit 16) */ + #define R_SCI_B0_FCR_RTRG_Msk (0x1f0000UL) /*!< RTRG (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_FCR_RFRST_Pos (23UL) /*!< RFRST (Bit 23) */ + #define R_SCI_B0_FCR_RFRST_Msk (0x800000UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FCR_RSTRG_Pos (24UL) /*!< RSTRG (Bit 24) */ + #define R_SCI_B0_FCR_RSTRG_Msk (0x1f000000UL) /*!< RSTRG (Bitfield-Mask: 0x1f) */ +/* ========================================================== MCR ========================================================== */ + #define R_SCI_B0_MCR_RMPOL_Pos (0UL) /*!< RMPOL (Bit 0) */ + #define R_SCI_B0_MCR_RMPOL_Msk (0x1UL) /*!< RMPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_TMPOL_Pos (1UL) /*!< TMPOL (Bit 1) */ + #define R_SCI_B0_MCR_TMPOL_Msk (0x2UL) /*!< TMPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_ERTEN_Pos (2UL) /*!< ERTEN (Bit 2) */ + #define R_SCI_B0_MCR_ERTEN_Msk (0x4UL) /*!< ERTEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SYNVAL_Pos (4UL) /*!< SYNVAL (Bit 4) */ + #define R_SCI_B0_MCR_SYNVAL_Msk (0x10UL) /*!< SYNVAL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SYNSEL_Pos (5UL) /*!< SYNSEL (Bit 5) */ + #define R_SCI_B0_MCR_SYNSEL_Msk (0x20UL) /*!< SYNSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SBSEL_Pos (6UL) /*!< SBSEL (Bit 6) */ + #define R_SCI_B0_MCR_SBSEL_Msk (0x40UL) /*!< SBSEL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_TPLEN_Pos (8UL) /*!< TPLEN (Bit 8) */ + #define R_SCI_B0_MCR_TPLEN_Msk (0xf00UL) /*!< TPLEN (Bitfield-Mask: 0x0f) */ + #define R_SCI_B0_MCR_TPPAT_Pos (12UL) /*!< TPPAT (Bit 12) */ + #define R_SCI_B0_MCR_TPPAT_Msk (0x3000UL) /*!< TPPAT (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_MCR_RPLEN_Pos (16UL) /*!< RPLEN (Bit 16) */ + #define R_SCI_B0_MCR_RPLEN_Msk (0xf0000UL) /*!< RPLEN (Bitfield-Mask: 0x0f) */ + #define R_SCI_B0_MCR_RPPAT_Pos (20UL) /*!< RPPAT (Bit 20) */ + #define R_SCI_B0_MCR_RPPAT_Msk (0x300000UL) /*!< RPPAT (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_MCR_PFEREN_Pos (24UL) /*!< PFEREN (Bit 24) */ + #define R_SCI_B0_MCR_PFEREN_Msk (0x1000000UL) /*!< PFEREN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SYEREN_Pos (25UL) /*!< SYEREN (Bit 25) */ + #define R_SCI_B0_MCR_SYEREN_Msk (0x2000000UL) /*!< SYEREN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MCR_SBEREN_Pos (26UL) /*!< SBEREN (Bit 26) */ + #define R_SCI_B0_MCR_SBEREN_Msk (0x4000000UL) /*!< SBEREN (Bitfield-Mask: 0x01) */ +/* ========================================================== DCR ========================================================== */ + #define R_SCI_B0_DCR_DEPOL_Pos (0UL) /*!< DEPOL (Bit 0) */ + #define R_SCI_B0_DCR_DEPOL_Msk (0x1UL) /*!< DEPOL (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_DCR_DEAST_Pos (8UL) /*!< DEAST (Bit 8) */ + #define R_SCI_B0_DCR_DEAST_Msk (0x1f00UL) /*!< DEAST (Bitfield-Mask: 0x1f) */ + #define R_SCI_B0_DCR_DENGT_Pos (16UL) /*!< DENGT (Bit 16) */ + #define R_SCI_B0_DCR_DENGT_Msk (0x1f0000UL) /*!< DENGT (Bitfield-Mask: 0x1f) */ +/* ========================================================= XCR0 ========================================================== */ + #define R_SCI_B0_XCR0_TCSS_Pos (0UL) /*!< TCSS (Bit 0) */ + #define R_SCI_B0_XCR0_TCSS_Msk (0x3UL) /*!< TCSS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_XCR0_BFE_Pos (8UL) /*!< BFE (Bit 8) */ + #define R_SCI_B0_XCR0_BFE_Msk (0x100UL) /*!< BFE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_CF0RE_Pos (9UL) /*!< CF0RE (Bit 9) */ + #define R_SCI_B0_XCR0_CF0RE_Msk (0x200UL) /*!< CF0RE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_CF1DS_Pos (10UL) /*!< CF1DS (Bit 10) */ + #define R_SCI_B0_XCR0_CF1DS_Msk (0xc00UL) /*!< CF1DS (Bitfield-Mask: 0x03) */ + #define R_SCI_B0_XCR0_PIBE_Pos (12UL) /*!< PIBE (Bit 12) */ + #define R_SCI_B0_XCR0_PIBE_Msk (0x1000UL) /*!< PIBE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_PIBS_Pos (13UL) /*!< PIBS (Bit 13) */ + #define R_SCI_B0_XCR0_PIBS_Msk (0xe000UL) /*!< PIBS (Bitfield-Mask: 0x07) */ + #define R_SCI_B0_XCR0_BFOIE_Pos (16UL) /*!< BFOIE (Bit 16) */ + #define R_SCI_B0_XCR0_BFOIE_Msk (0x10000UL) /*!< BFOIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_BCDIE_Pos (17UL) /*!< BCDIE (Bit 17) */ + #define R_SCI_B0_XCR0_BCDIE_Msk (0x20000UL) /*!< BCDIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_BFDIE_Pos (20UL) /*!< BFDIE (Bit 20) */ + #define R_SCI_B0_XCR0_BFDIE_Msk (0x100000UL) /*!< BFDIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_COFIE_Pos (21UL) /*!< COFIE (Bit 21) */ + #define R_SCI_B0_XCR0_COFIE_Msk (0x200000UL) /*!< COFIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_AEDIE_Pos (22UL) /*!< AEDIE (Bit 22) */ + #define R_SCI_B0_XCR0_AEDIE_Msk (0x400000UL) /*!< AEDIE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR0_BCCS_Pos (24UL) /*!< BCCS (Bit 24) */ + #define R_SCI_B0_XCR0_BCCS_Msk (0x3000000UL) /*!< BCCS (Bitfield-Mask: 0x03) */ +/* ========================================================= XCR1 ========================================================== */ + #define R_SCI_B0_XCR1_TCST_Pos (0UL) /*!< TCST (Bit 0) */ + #define R_SCI_B0_XCR1_TCST_Msk (0x1UL) /*!< TCST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR1_SDST_Pos (4UL) /*!< SDST (Bit 4) */ + #define R_SCI_B0_XCR1_SDST_Msk (0x10UL) /*!< SDST (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR1_BMEN_Pos (5UL) /*!< BMEN (Bit 5) */ + #define R_SCI_B0_XCR1_BMEN_Msk (0x20UL) /*!< BMEN (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XCR1_PCF1D_Pos (8UL) /*!< PCF1D (Bit 8) */ + #define R_SCI_B0_XCR1_PCF1D_Msk (0xff00UL) /*!< PCF1D (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR1_SCF1D_Pos (16UL) /*!< SCF1D (Bit 16) */ + #define R_SCI_B0_XCR1_SCF1D_Msk (0xff0000UL) /*!< SCF1D (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR1_CF1CE_Pos (24UL) /*!< CF1CE (Bit 24) */ + #define R_SCI_B0_XCR1_CF1CE_Msk (0xff000000UL) /*!< CF1CE (Bitfield-Mask: 0xff) */ +/* ========================================================= XCR2 ========================================================== */ + #define R_SCI_B0_XCR2_CF0D_Pos (0UL) /*!< CF0D (Bit 0) */ + #define R_SCI_B0_XCR2_CF0D_Msk (0xffUL) /*!< CF0D (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR2_CF0CE_Pos (8UL) /*!< CF0CE (Bit 8) */ + #define R_SCI_B0_XCR2_CF0CE_Msk (0xff00UL) /*!< CF0CE (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XCR2_BFLW_Pos (16UL) /*!< BFLW (Bit 16) */ + #define R_SCI_B0_XCR2_BFLW_Msk (0xffff0000UL) /*!< BFLW (Bitfield-Mask: 0xffff) */ +/* ========================================================== CSR ========================================================== */ + #define R_SCI_B0_CSR_ERS_Pos (4UL) /*!< ERS (Bit 4) */ + #define R_SCI_B0_CSR_ERS_Msk (0x10UL) /*!< ERS (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_RXDMON_Pos (15UL) /*!< RXDMON (Bit 15) */ + #define R_SCI_B0_CSR_RXDMON_Msk (0x8000UL) /*!< RXDMON (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_DCMF_Pos (16UL) /*!< DCMF (Bit 16) */ + #define R_SCI_B0_CSR_DCMF_Msk (0x10000UL) /*!< DCMF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_DPER_Pos (17UL) /*!< DPER (Bit 17) */ + #define R_SCI_B0_CSR_DPER_Msk (0x20000UL) /*!< DPER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_DFER_Pos (18UL) /*!< DFER (Bit 18) */ + #define R_SCI_B0_CSR_DFER_Msk (0x40000UL) /*!< DFER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_ORER_Pos (24UL) /*!< ORER (Bit 24) */ + #define R_SCI_B0_CSR_ORER_Msk (0x1000000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_MFF_Pos (26UL) /*!< MFF (Bit 26) */ + #define R_SCI_B0_CSR_MFF_Msk (0x4000000UL) /*!< MFF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_PER_Pos (27UL) /*!< PER (Bit 27) */ + #define R_SCI_B0_CSR_PER_Msk (0x8000000UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_FER_Pos (28UL) /*!< FER (Bit 28) */ + #define R_SCI_B0_CSR_FER_Msk (0x10000000UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_TDRE_Pos (29UL) /*!< TDRE (Bit 29) */ + #define R_SCI_B0_CSR_TDRE_Msk (0x20000000UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_TEND_Pos (30UL) /*!< TEND (Bit 30) */ + #define R_SCI_B0_CSR_TEND_Msk (0x40000000UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CSR_RDRF_Pos (31UL) /*!< RDRF (Bit 31) */ + #define R_SCI_B0_CSR_RDRF_Msk (0x80000000UL) /*!< RDRF (Bitfield-Mask: 0x01) */ +/* ========================================================== ISR ========================================================== */ + #define R_SCI_B0_ISR_IICACKR_Pos (0UL) /*!< IICACKR (Bit 0) */ + #define R_SCI_B0_ISR_IICACKR_Msk (0x1UL) /*!< IICACKR (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_ISR_IICSTIF_Pos (3UL) /*!< IICSTIF (Bit 3) */ + #define R_SCI_B0_ISR_IICSTIF_Msk (0x8UL) /*!< IICSTIF (Bitfield-Mask: 0x01) */ +/* ========================================================= FRSR ========================================================== */ + #define R_SCI_B0_FRSR_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_SCI_B0_FRSR_DR_Msk (0x1UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_FRSR_R_Pos (8UL) /*!< R (Bit 8) */ + #define R_SCI_B0_FRSR_R_Msk (0x3f00UL) /*!< R (Bitfield-Mask: 0x3f) */ + #define R_SCI_B0_FRSR_PNUM_Pos (16UL) /*!< PNUM (Bit 16) */ + #define R_SCI_B0_FRSR_PNUM_Msk (0x3f0000UL) /*!< PNUM (Bitfield-Mask: 0x3f) */ + #define R_SCI_B0_FRSR_FNUM_Pos (24UL) /*!< FNUM (Bit 24) */ + #define R_SCI_B0_FRSR_FNUM_Msk (0x3f000000UL) /*!< FNUM (Bitfield-Mask: 0x3f) */ +/* ========================================================= FTSR ========================================================== */ + #define R_SCI_B0_FTSR_T_Pos (0UL) /*!< T (Bit 0) */ + #define R_SCI_B0_FTSR_T_Msk (0x3fUL) /*!< T (Bitfield-Mask: 0x3f) */ +/* ========================================================== MSR ========================================================== */ + #define R_SCI_B0_MSR_PFER_Pos (0UL) /*!< PFER (Bit 0) */ + #define R_SCI_B0_MSR_PFER_Msk (0x1UL) /*!< PFER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_SYER_Pos (1UL) /*!< SYER (Bit 1) */ + #define R_SCI_B0_MSR_SYER_Msk (0x2UL) /*!< SYER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_SBER_Pos (2UL) /*!< SBER (Bit 2) */ + #define R_SCI_B0_MSR_SBER_Msk (0x4UL) /*!< SBER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_MER_Pos (4UL) /*!< MER (Bit 4) */ + #define R_SCI_B0_MSR_MER_Msk (0x10UL) /*!< MER (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MSR_RSYNC_Pos (6UL) /*!< RSYNC (Bit 6) */ + #define R_SCI_B0_MSR_RSYNC_Msk (0x40UL) /*!< RSYNC (Bitfield-Mask: 0x01) */ +/* ========================================================= XSR0 ========================================================== */ + #define R_SCI_B0_XSR0_SFSF_Pos (0UL) /*!< SFSF (Bit 0) */ + #define R_SCI_B0_XSR0_SFSF_Msk (0x1UL) /*!< SFSF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_RXDSF_Pos (1UL) /*!< RXDSF (Bit 1) */ + #define R_SCI_B0_XSR0_RXDSF_Msk (0x2UL) /*!< RXDSF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_BFOF_Pos (8UL) /*!< BFOF (Bit 8) */ + #define R_SCI_B0_XSR0_BFOF_Msk (0x100UL) /*!< BFOF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_BCDF_Pos (9UL) /*!< BCDF (Bit 9) */ + #define R_SCI_B0_XSR0_BCDF_Msk (0x200UL) /*!< BCDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_BFDF_Pos (10UL) /*!< BFDF (Bit 10) */ + #define R_SCI_B0_XSR0_BFDF_Msk (0x400UL) /*!< BFDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_CF0MF_Pos (11UL) /*!< CF0MF (Bit 11) */ + #define R_SCI_B0_XSR0_CF0MF_Msk (0x800UL) /*!< CF0MF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_CF1MF_Pos (12UL) /*!< CF1MF (Bit 12) */ + #define R_SCI_B0_XSR0_CF1MF_Msk (0x1000UL) /*!< CF1MF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_PIBDF_Pos (13UL) /*!< PIBDF (Bit 13) */ + #define R_SCI_B0_XSR0_PIBDF_Msk (0x2000UL) /*!< PIBDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_COF_Pos (14UL) /*!< COF (Bit 14) */ + #define R_SCI_B0_XSR0_COF_Msk (0x4000UL) /*!< COF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_AEDF_Pos (15UL) /*!< AEDF (Bit 15) */ + #define R_SCI_B0_XSR0_AEDF_Msk (0x8000UL) /*!< AEDF (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XSR0_CF0RD_Pos (16UL) /*!< CF0RD (Bit 16) */ + #define R_SCI_B0_XSR0_CF0RD_Msk (0xff0000UL) /*!< CF0RD (Bitfield-Mask: 0xff) */ + #define R_SCI_B0_XSR0_CF1RD_Pos (24UL) /*!< CF1RD (Bit 24) */ + #define R_SCI_B0_XSR0_CF1RD_Msk (0xff000000UL) /*!< CF1RD (Bitfield-Mask: 0xff) */ +/* ========================================================= XSR1 ========================================================== */ + #define R_SCI_B0_XSR1_TCNT_Pos (0UL) /*!< TCNT (Bit 0) */ + #define R_SCI_B0_XSR1_TCNT_Msk (0xffffUL) /*!< TCNT (Bitfield-Mask: 0xffff) */ +/* ========================================================= CFCLR ========================================================= */ + #define R_SCI_B0_CFCLR_ERSC_Pos (4UL) /*!< ERSC (Bit 4) */ + #define R_SCI_B0_CFCLR_ERSC_Msk (0x10UL) /*!< ERSC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_DCMFC_Pos (16UL) /*!< DCMFC (Bit 16) */ + #define R_SCI_B0_CFCLR_DCMFC_Msk (0x10000UL) /*!< DCMFC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_DPERC_Pos (17UL) /*!< DPERC (Bit 17) */ + #define R_SCI_B0_CFCLR_DPERC_Msk (0x20000UL) /*!< DPERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_DFERC_Pos (18UL) /*!< DFERC (Bit 18) */ + #define R_SCI_B0_CFCLR_DFERC_Msk (0x40000UL) /*!< DFERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_ORERC_Pos (24UL) /*!< ORERC (Bit 24) */ + #define R_SCI_B0_CFCLR_ORERC_Msk (0x1000000UL) /*!< ORERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_MFFC_Pos (26UL) /*!< MFFC (Bit 26) */ + #define R_SCI_B0_CFCLR_MFFC_Msk (0x4000000UL) /*!< MFFC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_PERC_Pos (27UL) /*!< PERC (Bit 27) */ + #define R_SCI_B0_CFCLR_PERC_Msk (0x8000000UL) /*!< PERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_FERC_Pos (28UL) /*!< FERC (Bit 28) */ + #define R_SCI_B0_CFCLR_FERC_Msk (0x10000000UL) /*!< FERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_TDREC_Pos (29UL) /*!< TDREC (Bit 29) */ + #define R_SCI_B0_CFCLR_TDREC_Msk (0x20000000UL) /*!< TDREC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_CFCLR_RDRFC_Pos (31UL) /*!< RDRFC (Bit 31) */ + #define R_SCI_B0_CFCLR_RDRFC_Msk (0x80000000UL) /*!< RDRFC (Bitfield-Mask: 0x01) */ +/* ======================================================== ICFCLR ========================================================= */ + #define R_SCI_B0_ICFCLR_IICSTIFC_Pos (3UL) /*!< IICSTIFC (Bit 3) */ + #define R_SCI_B0_ICFCLR_IICSTIFC_Msk (0x8UL) /*!< IICSTIFC (Bitfield-Mask: 0x01) */ +/* ========================================================= FFCLR ========================================================= */ + #define R_SCI_B0_FFCLR_DRC_Pos (0UL) /*!< DRC (Bit 0) */ + #define R_SCI_B0_FFCLR_DRC_Msk (0x1UL) /*!< DRC (Bitfield-Mask: 0x01) */ +/* ========================================================= MFCLR ========================================================= */ + #define R_SCI_B0_MFCLR_PFERC_Pos (0UL) /*!< PFERC (Bit 0) */ + #define R_SCI_B0_MFCLR_PFERC_Msk (0x1UL) /*!< PFERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MFCLR_SYERC_Pos (1UL) /*!< SYERC (Bit 1) */ + #define R_SCI_B0_MFCLR_SYERC_Msk (0x2UL) /*!< SYERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MFCLR_SBERC_Pos (2UL) /*!< SBERC (Bit 2) */ + #define R_SCI_B0_MFCLR_SBERC_Msk (0x4UL) /*!< SBERC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_MFCLR_MERC_Pos (4UL) /*!< MERC (Bit 4) */ + #define R_SCI_B0_MFCLR_MERC_Msk (0x10UL) /*!< MERC (Bitfield-Mask: 0x01) */ +/* ========================================================= XFCLR ========================================================= */ + #define R_SCI_B0_XFCLR_BFOC_Pos (8UL) /*!< BFOC (Bit 8) */ + #define R_SCI_B0_XFCLR_BFOC_Msk (0x100UL) /*!< BFOC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_BCDC_Pos (9UL) /*!< BCDC (Bit 9) */ + #define R_SCI_B0_XFCLR_BCDC_Msk (0x200UL) /*!< BCDC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_BFDC_Pos (10UL) /*!< BFDC (Bit 10) */ + #define R_SCI_B0_XFCLR_BFDC_Msk (0x400UL) /*!< BFDC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_CF0MC_Pos (11UL) /*!< CF0MC (Bit 11) */ + #define R_SCI_B0_XFCLR_CF0MC_Msk (0x800UL) /*!< CF0MC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_CF1MC_Pos (12UL) /*!< CF1MC (Bit 12) */ + #define R_SCI_B0_XFCLR_CF1MC_Msk (0x1000UL) /*!< CF1MC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_PIBDC_Pos (13UL) /*!< PIBDC (Bit 13) */ + #define R_SCI_B0_XFCLR_PIBDC_Msk (0x2000UL) /*!< PIBDC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_COFC_Pos (14UL) /*!< COFC (Bit 14) */ + #define R_SCI_B0_XFCLR_COFC_Msk (0x4000UL) /*!< COFC (Bitfield-Mask: 0x01) */ + #define R_SCI_B0_XFCLR_AEDC_Pos (15UL) /*!< AEDC (Bit 15) */ + #define R_SCI_B0_XFCLR_AEDC_Msk (0x8000UL) /*!< AEDC (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI_B0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SPDR ========================================================== */ +/* ======================================================== SPDECR ========================================================= */ + #define R_SPI_B0_SPDECR_SCKDL_Pos (0UL) /*!< SCKDL (Bit 0) */ + #define R_SPI_B0_SPDECR_SCKDL_Msk (0x7UL) /*!< SCKDL (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPDECR_SLNDL_Pos (8UL) /*!< SLNDL (Bit 8) */ + #define R_SPI_B0_SPDECR_SLNDL_Msk (0x700UL) /*!< SLNDL (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPDECR_SPNDL_Pos (16UL) /*!< SPNDL (Bit 16) */ + #define R_SPI_B0_SPDECR_SPNDL_Msk (0x70000UL) /*!< SPNDL (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPDECR_ARST_Pos (24UL) /*!< ARST (Bit 24) */ + #define R_SPI_B0_SPDECR_ARST_Msk (0x7000000UL) /*!< ARST (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR ========================================================== */ + #define R_SPI_B0_SPCR_SPE_Pos (0UL) /*!< SPE (Bit 0) */ + #define R_SPI_B0_SPCR_SPE_Msk (0x1UL) /*!< SPE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPSCKSEL_Pos (7UL) /*!< SPSCKSEL (Bit 7) */ + #define R_SPI_B0_SPCR_SPSCKSEL_Msk (0x80UL) /*!< SPSCKSEL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPPE_Pos (8UL) /*!< SPPE (Bit 8) */ + #define R_SPI_B0_SPCR_SPPE_Msk (0x100UL) /*!< SPPE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPOE_Pos (9UL) /*!< SPOE (Bit 9) */ + #define R_SPI_B0_SPCR_SPOE_Msk (0x200UL) /*!< SPOE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_PTE_Pos (11UL) /*!< PTE (Bit 11) */ + #define R_SPI_B0_SPCR_PTE_Msk (0x800UL) /*!< PTE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SCKASE_Pos (12UL) /*!< SCKASE (Bit 12) */ + #define R_SPI_B0_SPCR_SCKASE_Msk (0x1000UL) /*!< SCKASE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_BFDS_Pos (13UL) /*!< BFDS (Bit 13) */ + #define R_SPI_B0_SPCR_BFDS_Msk (0x2000UL) /*!< BFDS (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_MODFEN_Pos (14UL) /*!< MODFEN (Bit 14) */ + #define R_SPI_B0_SPCR_MODFEN_Msk (0x4000UL) /*!< MODFEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPEIE_Pos (16UL) /*!< SPEIE (Bit 16) */ + #define R_SPI_B0_SPCR_SPEIE_Msk (0x10000UL) /*!< SPEIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPRIE_Pos (17UL) /*!< SPRIE (Bit 17) */ + #define R_SPI_B0_SPCR_SPRIE_Msk (0x20000UL) /*!< SPRIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPIIE_Pos (18UL) /*!< SPIIE (Bit 18) */ + #define R_SPI_B0_SPCR_SPIIE_Msk (0x40000UL) /*!< SPIIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPDRES_Pos (19UL) /*!< SPDRES (Bit 19) */ + #define R_SPI_B0_SPCR_SPDRES_Msk (0x80000UL) /*!< SPDRES (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPTIE_Pos (20UL) /*!< SPTIE (Bit 20) */ + #define R_SPI_B0_SPCR_SPTIE_Msk (0x100000UL) /*!< SPTIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_CENDIE_Pos (21UL) /*!< CENDIE (Bit 21) */ + #define R_SPI_B0_SPCR_CENDIE_Msk (0x200000UL) /*!< CENDIE (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPMS_Pos (24UL) /*!< SPMS (Bit 24) */ + #define R_SPI_B0_SPCR_SPMS_Msk (0x1000000UL) /*!< SPMS (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_SPFRF_Pos (25UL) /*!< SPFRF (Bit 25) */ + #define R_SPI_B0_SPCR_SPFRF_Msk (0x2000000UL) /*!< SPFRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_TXMD_Pos (28UL) /*!< TXMD (Bit 28) */ + #define R_SPI_B0_SPCR_TXMD_Msk (0x30000000UL) /*!< TXMD (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCR_MSTR_Pos (30UL) /*!< MSTR (Bit 30) */ + #define R_SPI_B0_SPCR_MSTR_Msk (0x40000000UL) /*!< MSTR (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR_BPEN_Pos (31UL) /*!< BPEN (Bit 31) */ + #define R_SPI_B0_SPCR_BPEN_Msk (0x80000000UL) /*!< BPEN (Bitfield-Mask: 0x01) */ +/* ========================================================= SPCR2 ========================================================= */ + #define R_SPI_B0_SPCR2_RMFM_Pos (0UL) /*!< RMFM (Bit 0) */ + #define R_SPI_B0_SPCR2_RMFM_Msk (0x1fUL) /*!< RMFM (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCR2_RMEDTG_Pos (6UL) /*!< RMEDTG (Bit 6) */ + #define R_SPI_B0_SPCR2_RMEDTG_Msk (0x40UL) /*!< RMEDTG (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_RMSTTG_Pos (7UL) /*!< RMSTTG (Bit 7) */ + #define R_SPI_B0_SPCR2_RMSTTG_Msk (0x80UL) /*!< RMSTTG (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_SPDRC_Pos (8UL) /*!< SPDRC (Bit 8) */ + #define R_SPI_B0_SPCR2_SPDRC_Msk (0xff00UL) /*!< SPDRC (Bitfield-Mask: 0xff) */ + #define R_SPI_B0_SPCR2_SPLP_Pos (16UL) /*!< SPLP (Bit 16) */ + #define R_SPI_B0_SPCR2_SPLP_Msk (0x10000UL) /*!< SPLP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_SPLP2_Pos (17UL) /*!< SPLP2 (Bit 17) */ + #define R_SPI_B0_SPCR2_SPLP2_Msk (0x20000UL) /*!< SPLP2 (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_MOIFV_Pos (20UL) /*!< MOIFV (Bit 20) */ + #define R_SPI_B0_SPCR2_MOIFV_Msk (0x100000UL) /*!< MOIFV (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR2_MOIFE_Pos (21UL) /*!< MOIFE (Bit 21) */ + #define R_SPI_B0_SPCR2_MOIFE_Msk (0x200000UL) /*!< MOIFE (Bitfield-Mask: 0x01) */ +/* ========================================================= SPCR3 ========================================================= */ + #define R_SPI_B0_SPCR3_SSL0P_Pos (0UL) /*!< SSL0P (Bit 0) */ + #define R_SPI_B0_SPCR3_SSL0P_Msk (0x1UL) /*!< SSL0P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SSL1P_Pos (1UL) /*!< SSL1P (Bit 1) */ + #define R_SPI_B0_SPCR3_SSL1P_Msk (0x2UL) /*!< SSL1P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SSL2P_Pos (2UL) /*!< SSL2P (Bit 2) */ + #define R_SPI_B0_SPCR3_SSL2P_Msk (0x4UL) /*!< SSL2P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SSL3P_Pos (3UL) /*!< SSL3P (Bit 3) */ + #define R_SPI_B0_SPCR3_SSL3P_Msk (0x8UL) /*!< SSL3P (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCR3_SPBR_Pos (8UL) /*!< SPBR (Bit 8) */ + #define R_SPI_B0_SPCR3_SPBR_Msk (0xff00UL) /*!< SPBR (Bitfield-Mask: 0xff) */ + #define R_SPI_B0_SPCR3_SPSLN_Pos (24UL) /*!< SPSLN (Bit 24) */ + #define R_SPI_B0_SPCR3_SPSLN_Msk (0x7000000UL) /*!< SPSLN (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD0 ========================================================= */ + #define R_SPI_B0_SPCMD0_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD0_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD0_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD0_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD0_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD0_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD0_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD0_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD0_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD0_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD0_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD0_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD0_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD0_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD1 ========================================================= */ + #define R_SPI_B0_SPCMD1_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD1_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD1_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD1_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD1_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD1_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD1_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD1_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD1_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD1_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD1_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD1_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD1_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD1_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD2 ========================================================= */ + #define R_SPI_B0_SPCMD2_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD2_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD2_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD2_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD2_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD2_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD2_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD2_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD2_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD2_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD2_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD2_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD2_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD2_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD3 ========================================================= */ + #define R_SPI_B0_SPCMD3_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD3_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD3_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD3_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD3_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD3_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD3_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD3_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD3_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD3_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD3_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD3_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD3_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD3_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD4 ========================================================= */ + #define R_SPI_B0_SPCMD4_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD4_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD4_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD4_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD4_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD4_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD4_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD4_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD4_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD4_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD4_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD4_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD4_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD4_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD5 ========================================================= */ + #define R_SPI_B0_SPCMD5_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD5_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD5_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD5_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD5_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD5_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD5_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD5_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD5_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD5_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD5_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD5_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD5_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD5_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD6 ========================================================= */ + #define R_SPI_B0_SPCMD6_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD6_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD6_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD6_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD6_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD6_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD6_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD6_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD6_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD6_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD6_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD6_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD6_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD6_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ======================================================== SPCMD7 ========================================================= */ + #define R_SPI_B0_SPCMD7_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI_B0_SPCMD7_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SPI_B0_SPCMD7_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI_B0_SPCMD7_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPCMD7_SSLKP_Pos (7UL) /*!< SSLKP (Bit 7) */ + #define R_SPI_B0_SPCMD7_SSLKP_Msk (0x80UL) /*!< SSLKP (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI_B0_SPCMD7_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SPNDEN_Pos (13UL) /*!< SPNDEN (Bit 13) */ + #define R_SPI_B0_SPCMD7_SPNDEN_Msk (0x2000UL) /*!< SPNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI_B0_SPCMD7_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SCKDEN_Pos (15UL) /*!< SCKDEN (Bit 15) */ + #define R_SPI_B0_SPCMD7_SCKDEN_Msk (0x8000UL) /*!< SCKDEN (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPCMD7_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI_B0_SPCMD7_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI_B0_SPCMD7_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI_B0_SPCMD7_SSLA_Msk (0x7000000UL) /*!< SSLA (Bitfield-Mask: 0x07) */ +/* ========================================================= SPDCR ========================================================= */ + #define R_SPI_B0_SPDCR_BYSW_Pos (0UL) /*!< BYSW (Bit 0) */ + #define R_SPI_B0_SPDCR_BYSW_Msk (0x1UL) /*!< BYSW (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPDCR_SPRDTD_Pos (3UL) /*!< SPRDTD (Bit 3) */ + #define R_SPI_B0_SPDCR_SPRDTD_Msk (0x8UL) /*!< SPRDTD (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPDCR_SINV_Pos (4UL) /*!< SINV (Bit 4) */ + #define R_SPI_B0_SPDCR_SINV_Msk (0x10UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPDCR_SPFC_Pos (8UL) /*!< SPFC (Bit 8) */ + #define R_SPI_B0_SPDCR_SPFC_Msk (0x300UL) /*!< SPFC (Bitfield-Mask: 0x03) */ +/* ======================================================== SPDCR2 ========================================================= */ + #define R_SPI_B0_SPDCR2_RTRG_Pos (0UL) /*!< RTRG (Bit 0) */ + #define R_SPI_B0_SPDCR2_RTRG_Msk (0x3UL) /*!< RTRG (Bitfield-Mask: 0x03) */ + #define R_SPI_B0_SPDCR2_TTRG_Pos (8UL) /*!< TTRG (Bit 8) */ + #define R_SPI_B0_SPDCR2_TTRG_Msk (0x300UL) /*!< TTRG (Bitfield-Mask: 0x03) */ +/* ========================================================= SPSR ========================================================== */ + #define R_SPI_B0_SPSR_SPCP_Pos (8UL) /*!< SPCP (Bit 8) */ + #define R_SPI_B0_SPSR_SPCP_Msk (0x700UL) /*!< SPCP (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPSR_SPECM_Pos (12UL) /*!< SPECM (Bit 12) */ + #define R_SPI_B0_SPSR_SPECM_Msk (0x7000UL) /*!< SPECM (Bitfield-Mask: 0x07) */ + #define R_SPI_B0_SPSR_SPDRF_Pos (23UL) /*!< SPDRF (Bit 23) */ + #define R_SPI_B0_SPSR_SPDRF_Msk (0x800000UL) /*!< SPDRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_OVRF_Pos (24UL) /*!< OVRF (Bit 24) */ + #define R_SPI_B0_SPSR_OVRF_Msk (0x1000000UL) /*!< OVRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_IDLNF_Pos (25UL) /*!< IDLNF (Bit 25) */ + #define R_SPI_B0_SPSR_IDLNF_Msk (0x2000000UL) /*!< IDLNF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_MODF_Pos (26UL) /*!< MODF (Bit 26) */ + #define R_SPI_B0_SPSR_MODF_Msk (0x4000000UL) /*!< MODF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_PERF_Pos (27UL) /*!< PERF (Bit 27) */ + #define R_SPI_B0_SPSR_PERF_Msk (0x8000000UL) /*!< PERF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_UDRF_Pos (28UL) /*!< UDRF (Bit 28) */ + #define R_SPI_B0_SPSR_UDRF_Msk (0x10000000UL) /*!< UDRF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_SPTEF_Pos (29UL) /*!< SPTEF (Bit 29) */ + #define R_SPI_B0_SPSR_SPTEF_Msk (0x20000000UL) /*!< SPTEF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_CENDF_Pos (30UL) /*!< CENDF (Bit 30) */ + #define R_SPI_B0_SPSR_CENDF_Msk (0x40000000UL) /*!< CENDF (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSR_SPRF_Pos (31UL) /*!< SPRF (Bit 31) */ + #define R_SPI_B0_SPSR_SPRF_Msk (0x80000000UL) /*!< SPRF (Bitfield-Mask: 0x01) */ +/* ======================================================== SPTFSR ========================================================= */ + #define R_SPI_B0_SPTFSR_TFDN_Pos (0UL) /*!< TFDN (Bit 0) */ + #define R_SPI_B0_SPTFSR_TFDN_Msk (0x7UL) /*!< TFDN (Bitfield-Mask: 0x07) */ +/* ======================================================== SPRFSR ========================================================= */ + #define R_SPI_B0_SPRFSR_RFDN_Pos (0UL) /*!< RFDN (Bit 0) */ + #define R_SPI_B0_SPRFSR_RFDN_Msk (0x7UL) /*!< RFDN (Bitfield-Mask: 0x07) */ +/* ========================================================= SPPSR ========================================================= */ + #define R_SPI_B0_SPPSR_SPEPS_Pos (0UL) /*!< SPEPS (Bit 0) */ + #define R_SPI_B0_SPPSR_SPEPS_Msk (0x1UL) /*!< SPEPS (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSRC ========================================================= */ + #define R_SPI_B0_SPSRC_SPDRFC_Pos (23UL) /*!< SPDRFC (Bit 23) */ + #define R_SPI_B0_SPSRC_SPDRFC_Msk (0x800000UL) /*!< SPDRFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_OVRFC_Pos (24UL) /*!< OVRFC (Bit 24) */ + #define R_SPI_B0_SPSRC_OVRFC_Msk (0x1000000UL) /*!< OVRFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_MODFC_Pos (26UL) /*!< MODFC (Bit 26) */ + #define R_SPI_B0_SPSRC_MODFC_Msk (0x4000000UL) /*!< MODFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_PERFC_Pos (27UL) /*!< PERFC (Bit 27) */ + #define R_SPI_B0_SPSRC_PERFC_Msk (0x8000000UL) /*!< PERFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_UDRFC_Pos (28UL) /*!< UDRFC (Bit 28) */ + #define R_SPI_B0_SPSRC_UDRFC_Msk (0x10000000UL) /*!< UDRFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_SPTEFC_Pos (29UL) /*!< SPTEFC (Bit 29) */ + #define R_SPI_B0_SPSRC_SPTEFC_Msk (0x20000000UL) /*!< SPTEFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_CENDFC_Pos (30UL) /*!< CENDFC (Bit 30) */ + #define R_SPI_B0_SPSRC_CENDFC_Msk (0x40000000UL) /*!< CENDFC (Bitfield-Mask: 0x01) */ + #define R_SPI_B0_SPSRC_SPRFC_Pos (31UL) /*!< SPRFC (Bit 31) */ + #define R_SPI_B0_SPSRC_SPRFC_Msk (0x80000000UL) /*!< SPRFC (Bitfield-Mask: 0x01) */ +/* ========================================================= SPFCR ========================================================= */ + #define R_SPI_B0_SPFCR_SPFRST_Pos (0UL) /*!< SPFRST (Bit 0) */ + #define R_SPI_B0_SPFCR_SPFRST_Msk (0x1UL) /*!< SPFRST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_USB_HS0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SYSCFG ========================================================= */ + #define R_USB_HS0_SYSCFG_CNEN_Pos (8UL) /*!< CNEN (Bit 8) */ + #define R_USB_HS0_SYSCFG_CNEN_Msk (0x100UL) /*!< CNEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_HSE_Pos (7UL) /*!< HSE (Bit 7) */ + #define R_USB_HS0_SYSCFG_HSE_Msk (0x80UL) /*!< HSE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_DCFM_Pos (6UL) /*!< DCFM (Bit 6) */ + #define R_USB_HS0_SYSCFG_DCFM_Msk (0x40UL) /*!< DCFM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_DRPD_Pos (5UL) /*!< DRPD (Bit 5) */ + #define R_USB_HS0_SYSCFG_DRPD_Msk (0x20UL) /*!< DRPD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_DPRPU_Pos (4UL) /*!< DPRPU (Bit 4) */ + #define R_USB_HS0_SYSCFG_DPRPU_Msk (0x10UL) /*!< DPRPU (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSCFG_USBE_Pos (0UL) /*!< USBE (Bit 0) */ + #define R_USB_HS0_SYSCFG_USBE_Msk (0x1UL) /*!< USBE (Bitfield-Mask: 0x01) */ +/* ======================================================== BUSWAIT ======================================================== */ + #define R_USB_HS0_BUSWAIT_BWAIT_Pos (0UL) /*!< BWAIT (Bit 0) */ + #define R_USB_HS0_BUSWAIT_BWAIT_Msk (0xfUL) /*!< BWAIT (Bitfield-Mask: 0x0f) */ +/* ======================================================== SYSSTS0 ======================================================== */ + #define R_USB_HS0_SYSSTS0_HTACT_Pos (6UL) /*!< HTACT (Bit 6) */ + #define R_USB_HS0_SYSSTS0_HTACT_Msk (0x40UL) /*!< HTACT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSSTS0_SOFEA_Pos (5UL) /*!< SOFEA (Bit 5) */ + #define R_USB_HS0_SYSSTS0_SOFEA_Msk (0x20UL) /*!< SOFEA (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSSTS0_IDMON_Pos (2UL) /*!< IDMON (Bit 2) */ + #define R_USB_HS0_SYSSTS0_IDMON_Msk (0x4UL) /*!< IDMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SYSSTS0_LNST_Pos (0UL) /*!< LNST (Bit 0) */ + #define R_USB_HS0_SYSSTS0_LNST_Msk (0x3UL) /*!< LNST (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_SYSSTS0_OVCMON_Pos (14UL) /*!< OVCMON (Bit 14) */ + #define R_USB_HS0_SYSSTS0_OVCMON_Msk (0xc000UL) /*!< OVCMON (Bitfield-Mask: 0x03) */ +/* ======================================================== PLLSTA ========================================================= */ + #define R_USB_HS0_PLLSTA_PLLLOCK_Pos (0UL) /*!< PLLLOCK (Bit 0) */ + #define R_USB_HS0_PLLSTA_PLLLOCK_Msk (0x1UL) /*!< PLLLOCK (Bitfield-Mask: 0x01) */ +/* ======================================================= DVSTCTR0 ======================================================== */ + #define R_USB_HS0_DVSTCTR0_HNPBTOA_Pos (11UL) /*!< HNPBTOA (Bit 11) */ + #define R_USB_HS0_DVSTCTR0_HNPBTOA_Msk (0x800UL) /*!< HNPBTOA (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_EXICEN_Pos (10UL) /*!< EXICEN (Bit 10) */ + #define R_USB_HS0_DVSTCTR0_EXICEN_Msk (0x400UL) /*!< EXICEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_VBUSEN_Pos (9UL) /*!< VBUSEN (Bit 9) */ + #define R_USB_HS0_DVSTCTR0_VBUSEN_Msk (0x200UL) /*!< VBUSEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_WKUP_Pos (8UL) /*!< WKUP (Bit 8) */ + #define R_USB_HS0_DVSTCTR0_WKUP_Msk (0x100UL) /*!< WKUP (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_RWUPE_Pos (7UL) /*!< RWUPE (Bit 7) */ + #define R_USB_HS0_DVSTCTR0_RWUPE_Msk (0x80UL) /*!< RWUPE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_USBRST_Pos (6UL) /*!< USBRST (Bit 6) */ + #define R_USB_HS0_DVSTCTR0_USBRST_Msk (0x40UL) /*!< USBRST (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_RESUME_Pos (5UL) /*!< RESUME (Bit 5) */ + #define R_USB_HS0_DVSTCTR0_RESUME_Msk (0x20UL) /*!< RESUME (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_UACT_Pos (4UL) /*!< UACT (Bit 4) */ + #define R_USB_HS0_DVSTCTR0_UACT_Msk (0x10UL) /*!< UACT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DVSTCTR0_RHST_Pos (0UL) /*!< RHST (Bit 0) */ + #define R_USB_HS0_DVSTCTR0_RHST_Msk (0x7UL) /*!< RHST (Bitfield-Mask: 0x07) */ +/* ======================================================= TESTMODE ======================================================== */ + #define R_USB_HS0_TESTMODE_UTST_Pos (0UL) /*!< UTST (Bit 0) */ + #define R_USB_HS0_TESTMODE_UTST_Msk (0xfUL) /*!< UTST (Bitfield-Mask: 0x0f) */ +/* ========================================================= CFIFO ========================================================= */ + #define R_USB_HS0_CFIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USB_HS0_CFIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CFIFOL ========================================================= */ +/* ======================================================== CFIFOH ========================================================= */ +/* ======================================================== CFIFOLL ======================================================== */ +/* ======================================================== CFIFOHH ======================================================== */ +/* ======================================================== D0FIFO ========================================================= */ + #define R_USB_HS0_D0FIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USB_HS0_D0FIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== D0FIFOL ======================================================== */ +/* ======================================================== D0FIFOH ======================================================== */ +/* ======================================================= D0FIFOLL ======================================================== */ +/* ======================================================= D0FIFOHH ======================================================== */ +/* ======================================================== D1FIFO ========================================================= */ + #define R_USB_HS0_D1FIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USB_HS0_D1FIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== D1FIFOL ======================================================== */ +/* ======================================================== D1FIFOH ======================================================== */ +/* ======================================================= D1FIFOLL ======================================================== */ +/* ======================================================= D1FIFOHH ======================================================== */ +/* ======================================================= CFIFOSEL ======================================================== */ + #define R_USB_HS0_CFIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_HS0_CFIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_HS0_CFIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_HS0_CFIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_CFIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_HS0_CFIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_ISEL_Pos (5UL) /*!< ISEL (Bit 5) */ + #define R_USB_HS0_CFIFOSEL_ISEL_Msk (0x20UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_HS0_CFIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFIFOCTR ======================================================== */ + #define R_USB_HS0_CFIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_HS0_CFIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_HS0_CFIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_HS0_CFIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_CFIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_HS0_CFIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D0FIFOSEL ======================================================= */ + #define R_USB_HS0_D0FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_HS0_D0FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_HS0_D0FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_HS0_D0FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_HS0_D0FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_HS0_D0FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_D0FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_HS0_D0FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_HS0_D0FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D0FIFOCTR ======================================================= */ + #define R_USB_HS0_D0FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_HS0_D0FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_HS0_D0FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_HS0_D0FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D0FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_HS0_D0FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================= D1FIFOSEL ======================================================= */ + #define R_USB_HS0_D1FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USB_HS0_D1FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USB_HS0_D1FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USB_HS0_D1FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USB_HS0_D1FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USB_HS0_D1FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_D1FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USB_HS0_D1FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USB_HS0_D1FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ +/* ======================================================= D1FIFOCTR ======================================================= */ + #define R_USB_HS0_D1FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USB_HS0_D1FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USB_HS0_D1FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USB_HS0_D1FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_D1FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USB_HS0_D1FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ +/* ======================================================== INTENB0 ======================================================== */ + #define R_USB_HS0_INTENB0_VBSE_Pos (15UL) /*!< VBSE (Bit 15) */ + #define R_USB_HS0_INTENB0_VBSE_Msk (0x8000UL) /*!< VBSE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_RSME_Pos (14UL) /*!< RSME (Bit 14) */ + #define R_USB_HS0_INTENB0_RSME_Msk (0x4000UL) /*!< RSME (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_SOFE_Pos (13UL) /*!< SOFE (Bit 13) */ + #define R_USB_HS0_INTENB0_SOFE_Msk (0x2000UL) /*!< SOFE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_DVSE_Pos (12UL) /*!< DVSE (Bit 12) */ + #define R_USB_HS0_INTENB0_DVSE_Msk (0x1000UL) /*!< DVSE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_CTRE_Pos (11UL) /*!< CTRE (Bit 11) */ + #define R_USB_HS0_INTENB0_CTRE_Msk (0x800UL) /*!< CTRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_BEMPE_Pos (10UL) /*!< BEMPE (Bit 10) */ + #define R_USB_HS0_INTENB0_BEMPE_Msk (0x400UL) /*!< BEMPE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_NRDYE_Pos (9UL) /*!< NRDYE (Bit 9) */ + #define R_USB_HS0_INTENB0_NRDYE_Msk (0x200UL) /*!< NRDYE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB0_BRDYE_Pos (8UL) /*!< BRDYE (Bit 8) */ + #define R_USB_HS0_INTENB0_BRDYE_Msk (0x100UL) /*!< BRDYE (Bitfield-Mask: 0x01) */ +/* ======================================================== INTENB1 ======================================================== */ + #define R_USB_HS0_INTENB1_OVRCRE_Pos (15UL) /*!< OVRCRE (Bit 15) */ + #define R_USB_HS0_INTENB1_OVRCRE_Msk (0x8000UL) /*!< OVRCRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_BCHGE_Pos (14UL) /*!< BCHGE (Bit 14) */ + #define R_USB_HS0_INTENB1_BCHGE_Msk (0x4000UL) /*!< BCHGE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_DTCHE_Pos (12UL) /*!< DTCHE (Bit 12) */ + #define R_USB_HS0_INTENB1_DTCHE_Msk (0x1000UL) /*!< DTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_ATTCHE_Pos (11UL) /*!< ATTCHE (Bit 11) */ + #define R_USB_HS0_INTENB1_ATTCHE_Msk (0x800UL) /*!< ATTCHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_L1RSMENDE_Pos (9UL) /*!< L1RSMENDE (Bit 9) */ + #define R_USB_HS0_INTENB1_L1RSMENDE_Msk (0x200UL) /*!< L1RSMENDE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_LPMENDE_Pos (8UL) /*!< LPMENDE (Bit 8) */ + #define R_USB_HS0_INTENB1_LPMENDE_Msk (0x100UL) /*!< LPMENDE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_EOFERRE_Pos (6UL) /*!< EOFERRE (Bit 6) */ + #define R_USB_HS0_INTENB1_EOFERRE_Msk (0x40UL) /*!< EOFERRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_SIGNE_Pos (5UL) /*!< SIGNE (Bit 5) */ + #define R_USB_HS0_INTENB1_SIGNE_Msk (0x20UL) /*!< SIGNE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_SACKE_Pos (4UL) /*!< SACKE (Bit 4) */ + #define R_USB_HS0_INTENB1_SACKE_Msk (0x10UL) /*!< SACKE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTENB1_PDDETINTE0_Pos (0UL) /*!< PDDETINTE0 (Bit 0) */ + #define R_USB_HS0_INTENB1_PDDETINTE0_Msk (0x1UL) /*!< PDDETINTE0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYENB ======================================================== */ + #define R_USB_HS0_BRDYENB_PIPEBRDYE_Pos (0UL) /*!< PIPEBRDYE (Bit 0) */ + #define R_USB_HS0_BRDYENB_PIPEBRDYE_Msk (0x3ffUL) /*!< PIPEBRDYE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== NRDYENB ======================================================== */ + #define R_USB_HS0_NRDYENB_PIPENRDYE_Pos (0UL) /*!< PIPENRDYE (Bit 0) */ + #define R_USB_HS0_NRDYENB_PIPENRDYE_Msk (0x3ffUL) /*!< PIPENRDYE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BEMPENB ======================================================== */ + #define R_USB_HS0_BEMPENB_PIPEBEMPE_Pos (0UL) /*!< PIPEBEMPE (Bit 0) */ + #define R_USB_HS0_BEMPENB_PIPEBEMPE_Msk (0x3ffUL) /*!< PIPEBEMPE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== SOFCFG ========================================================= */ + #define R_USB_HS0_SOFCFG_TRNENSEL_Pos (8UL) /*!< TRNENSEL (Bit 8) */ + #define R_USB_HS0_SOFCFG_TRNENSEL_Msk (0x100UL) /*!< TRNENSEL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SOFCFG_BRDYM_Pos (6UL) /*!< BRDYM (Bit 6) */ + #define R_USB_HS0_SOFCFG_BRDYM_Msk (0x40UL) /*!< BRDYM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SOFCFG_INTL_Pos (5UL) /*!< INTL (Bit 5) */ + #define R_USB_HS0_SOFCFG_INTL_Msk (0x20UL) /*!< INTL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_SOFCFG_EDGESTS_Pos (4UL) /*!< EDGESTS (Bit 4) */ + #define R_USB_HS0_SOFCFG_EDGESTS_Msk (0x10UL) /*!< EDGESTS (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYSET ========================================================= */ + #define R_USB_HS0_PHYSET_HSEB_Pos (15UL) /*!< HSEB (Bit 15) */ + #define R_USB_HS0_PHYSET_HSEB_Msk (0x8000UL) /*!< HSEB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_REPSTART_Pos (11UL) /*!< REPSTART (Bit 11) */ + #define R_USB_HS0_PHYSET_REPSTART_Msk (0x800UL) /*!< REPSTART (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_REPSEL_Pos (8UL) /*!< REPSEL (Bit 8) */ + #define R_USB_HS0_PHYSET_REPSEL_Msk (0x300UL) /*!< REPSEL (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYSET_CLKSEL_Pos (4UL) /*!< CLKSEL (Bit 4) */ + #define R_USB_HS0_PHYSET_CLKSEL_Msk (0x30UL) /*!< CLKSEL (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYSET_CDPEN_Pos (3UL) /*!< CDPEN (Bit 3) */ + #define R_USB_HS0_PHYSET_CDPEN_Msk (0x8UL) /*!< CDPEN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_PLLRESET_Pos (1UL) /*!< PLLRESET (Bit 1) */ + #define R_USB_HS0_PHYSET_PLLRESET_Msk (0x2UL) /*!< PLLRESET (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYSET_DIRPD_Pos (0UL) /*!< DIRPD (Bit 0) */ + #define R_USB_HS0_PHYSET_DIRPD_Msk (0x1UL) /*!< DIRPD (Bitfield-Mask: 0x01) */ +/* ======================================================== INTSTS0 ======================================================== */ + #define R_USB_HS0_INTSTS0_VBINT_Pos (15UL) /*!< VBINT (Bit 15) */ + #define R_USB_HS0_INTSTS0_VBINT_Msk (0x8000UL) /*!< VBINT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_RESM_Pos (14UL) /*!< RESM (Bit 14) */ + #define R_USB_HS0_INTSTS0_RESM_Msk (0x4000UL) /*!< RESM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_SOFR_Pos (13UL) /*!< SOFR (Bit 13) */ + #define R_USB_HS0_INTSTS0_SOFR_Msk (0x2000UL) /*!< SOFR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_DVST_Pos (12UL) /*!< DVST (Bit 12) */ + #define R_USB_HS0_INTSTS0_DVST_Msk (0x1000UL) /*!< DVST (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_CTRT_Pos (11UL) /*!< CTRT (Bit 11) */ + #define R_USB_HS0_INTSTS0_CTRT_Msk (0x800UL) /*!< CTRT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_BEMP_Pos (10UL) /*!< BEMP (Bit 10) */ + #define R_USB_HS0_INTSTS0_BEMP_Msk (0x400UL) /*!< BEMP (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_NRDY_Pos (9UL) /*!< NRDY (Bit 9) */ + #define R_USB_HS0_INTSTS0_NRDY_Msk (0x200UL) /*!< NRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_BRDY_Pos (8UL) /*!< BRDY (Bit 8) */ + #define R_USB_HS0_INTSTS0_BRDY_Msk (0x100UL) /*!< BRDY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_VBSTS_Pos (7UL) /*!< VBSTS (Bit 7) */ + #define R_USB_HS0_INTSTS0_VBSTS_Msk (0x80UL) /*!< VBSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_HS0_INTSTS0_DVSQ_Msk (0x70UL) /*!< DVSQ (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_INTSTS0_VALID_Pos (3UL) /*!< VALID (Bit 3) */ + #define R_USB_HS0_INTSTS0_VALID_Msk (0x8UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS0_CTSQ_Pos (0UL) /*!< CTSQ (Bit 0) */ + #define R_USB_HS0_INTSTS0_CTSQ_Msk (0x7UL) /*!< CTSQ (Bitfield-Mask: 0x07) */ +/* ======================================================== INTSTS1 ======================================================== */ + #define R_USB_HS0_INTSTS1_OVRCR_Pos (15UL) /*!< OVRCR (Bit 15) */ + #define R_USB_HS0_INTSTS1_OVRCR_Msk (0x8000UL) /*!< OVRCR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_BCHG_Pos (14UL) /*!< BCHG (Bit 14) */ + #define R_USB_HS0_INTSTS1_BCHG_Msk (0x4000UL) /*!< BCHG (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_DTCH_Pos (12UL) /*!< DTCH (Bit 12) */ + #define R_USB_HS0_INTSTS1_DTCH_Msk (0x1000UL) /*!< DTCH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_ATTCH_Pos (11UL) /*!< ATTCH (Bit 11) */ + #define R_USB_HS0_INTSTS1_ATTCH_Msk (0x800UL) /*!< ATTCH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_L1RSMEND_Pos (9UL) /*!< L1RSMEND (Bit 9) */ + #define R_USB_HS0_INTSTS1_L1RSMEND_Msk (0x200UL) /*!< L1RSMEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_LPMEND_Pos (8UL) /*!< LPMEND (Bit 8) */ + #define R_USB_HS0_INTSTS1_LPMEND_Msk (0x100UL) /*!< LPMEND (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_EOFERR_Pos (6UL) /*!< EOFERR (Bit 6) */ + #define R_USB_HS0_INTSTS1_EOFERR_Msk (0x40UL) /*!< EOFERR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_SIGN_Pos (5UL) /*!< SIGN (Bit 5) */ + #define R_USB_HS0_INTSTS1_SIGN_Msk (0x20UL) /*!< SIGN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_SACK_Pos (4UL) /*!< SACK (Bit 4) */ + #define R_USB_HS0_INTSTS1_SACK_Msk (0x10UL) /*!< SACK (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_INTSTS1_PDDETINT0_Pos (0UL) /*!< PDDETINT0 (Bit 0) */ + #define R_USB_HS0_INTSTS1_PDDETINT0_Msk (0x1UL) /*!< PDDETINT0 (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYSTS ======================================================== */ + #define R_USB_HS0_BRDYSTS_PIPEBRDY_Pos (0UL) /*!< PIPEBRDY (Bit 0) */ + #define R_USB_HS0_BRDYSTS_PIPEBRDY_Msk (0x3ffUL) /*!< PIPEBRDY (Bitfield-Mask: 0x3ff) */ +/* ======================================================== NRDYSTS ======================================================== */ + #define R_USB_HS0_NRDYSTS_PIPENRDY_Pos (0UL) /*!< PIPENRDY (Bit 0) */ + #define R_USB_HS0_NRDYSTS_PIPENRDY_Msk (0x3ffUL) /*!< PIPENRDY (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BEMPSTS ======================================================== */ + #define R_USB_HS0_BEMPSTS_PIPEBEMP_Pos (0UL) /*!< PIPEBEMP (Bit 0) */ + #define R_USB_HS0_BEMPSTS_PIPEBEMP_Msk (0x3ffUL) /*!< PIPEBEMP (Bitfield-Mask: 0x3ff) */ +/* ======================================================== FRMNUM ========================================================= */ + #define R_USB_HS0_FRMNUM_OVRN_Pos (15UL) /*!< OVRN (Bit 15) */ + #define R_USB_HS0_FRMNUM_OVRN_Msk (0x8000UL) /*!< OVRN (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_FRMNUM_CRCE_Pos (14UL) /*!< CRCE (Bit 14) */ + #define R_USB_HS0_FRMNUM_CRCE_Msk (0x4000UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_FRMNUM_FRNM_Pos (0UL) /*!< FRNM (Bit 0) */ + #define R_USB_HS0_FRMNUM_FRNM_Msk (0x7ffUL) /*!< FRNM (Bitfield-Mask: 0x7ff) */ +/* ======================================================== UFRMNUM ======================================================== */ + #define R_USB_HS0_UFRMNUM_DVCHG_Pos (15UL) /*!< DVCHG (Bit 15) */ + #define R_USB_HS0_UFRMNUM_DVCHG_Msk (0x8000UL) /*!< DVCHG (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_UFRMNUM_UFRNM_Pos (0UL) /*!< UFRNM (Bit 0) */ + #define R_USB_HS0_UFRMNUM_UFRNM_Msk (0x7UL) /*!< UFRNM (Bitfield-Mask: 0x07) */ +/* ======================================================== USBADDR ======================================================== */ + #define R_USB_HS0_USBADDR_STSRECOV0_Pos (8UL) /*!< STSRECOV0 (Bit 8) */ + #define R_USB_HS0_USBADDR_STSRECOV0_Msk (0x700UL) /*!< STSRECOV0 (Bitfield-Mask: 0x07) */ +/* ======================================================== USBREQ ========================================================= */ + #define R_USB_HS0_USBREQ_BREQUEST_Pos (8UL) /*!< BREQUEST (Bit 8) */ + #define R_USB_HS0_USBREQ_BREQUEST_Msk (0xff00UL) /*!< BREQUEST (Bitfield-Mask: 0xff) */ + #define R_USB_HS0_USBREQ_BMREQUESTTYPE_Pos (0UL) /*!< BMREQUESTTYPE (Bit 0) */ + #define R_USB_HS0_USBREQ_BMREQUESTTYPE_Msk (0xffUL) /*!< BMREQUESTTYPE (Bitfield-Mask: 0xff) */ +/* ======================================================== USBVAL ========================================================= */ + #define R_USB_HS0_USBVAL_WVALUE_Pos (0UL) /*!< WVALUE (Bit 0) */ + #define R_USB_HS0_USBVAL_WVALUE_Msk (0xffffUL) /*!< WVALUE (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBINDX ======================================================== */ + #define R_USB_HS0_USBINDX_WINDEX_Pos (0UL) /*!< WINDEX (Bit 0) */ + #define R_USB_HS0_USBINDX_WINDEX_Msk (0xffffUL) /*!< WINDEX (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBLENG ======================================================== */ + #define R_USB_HS0_USBLENG_WLENGTH_Pos (0UL) /*!< WLENGTH (Bit 0) */ + #define R_USB_HS0_USBLENG_WLENGTH_Msk (0xffffUL) /*!< WLENGTH (Bitfield-Mask: 0xffff) */ +/* ======================================================== DCPCFG ========================================================= */ + #define R_USB_HS0_DCPCFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USB_HS0_DCPCFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_HS0_DCPCFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_HS0_DCPCFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ +/* ======================================================== DCPMAXP ======================================================== */ + #define R_USB_HS0_DCPMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_HS0_DCPMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_DCPMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_HS0_DCPMAXP_MXPS_Msk (0x7fUL) /*!< MXPS (Bitfield-Mask: 0x7f) */ +/* ======================================================== DCPCTR ========================================================= */ + #define R_USB_HS0_DCPCTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_HS0_DCPCTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SUREQ_Pos (14UL) /*!< SUREQ (Bit 14) */ + #define R_USB_HS0_DCPCTR_SUREQ_Msk (0x4000UL) /*!< SUREQ (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_CSCLR_Pos (13UL) /*!< CSCLR (Bit 13) */ + #define R_USB_HS0_DCPCTR_CSCLR_Msk (0x2000UL) /*!< CSCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_CSSTS_Pos (12UL) /*!< CSSTS (Bit 12) */ + #define R_USB_HS0_DCPCTR_CSSTS_Msk (0x1000UL) /*!< CSSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SUREQCLR_Pos (11UL) /*!< SUREQCLR (Bit 11) */ + #define R_USB_HS0_DCPCTR_SUREQCLR_Msk (0x800UL) /*!< SUREQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_HS0_DCPCTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_HS0_DCPCTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_HS0_DCPCTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_HS0_DCPCTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_PINGE_Pos (4UL) /*!< PINGE (Bit 4) */ + #define R_USB_HS0_DCPCTR_PINGE_Msk (0x10UL) /*!< PINGE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_CCPL_Pos (2UL) /*!< CCPL (Bit 2) */ + #define R_USB_HS0_DCPCTR_CCPL_Msk (0x4UL) /*!< CCPL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DCPCTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_HS0_DCPCTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== PIPESEL ======================================================== */ +/* ======================================================== PIPECFG ======================================================== */ + #define R_USB_HS0_PIPECFG_TYPE_Pos (14UL) /*!< TYPE (Bit 14) */ + #define R_USB_HS0_PIPECFG_TYPE_Msk (0xc000UL) /*!< TYPE (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PIPECFG_BFRE_Pos (10UL) /*!< BFRE (Bit 10) */ + #define R_USB_HS0_PIPECFG_BFRE_Msk (0x400UL) /*!< BFRE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_DBLB_Pos (9UL) /*!< DBLB (Bit 9) */ + #define R_USB_HS0_PIPECFG_DBLB_Msk (0x200UL) /*!< DBLB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USB_HS0_PIPECFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USB_HS0_PIPECFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USB_HS0_PIPECFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPECFG_EPNUM_Pos (0UL) /*!< EPNUM (Bit 0) */ + #define R_USB_HS0_PIPECFG_EPNUM_Msk (0xfUL) /*!< EPNUM (Bitfield-Mask: 0x0f) */ +/* ======================================================== PIPEBUF ======================================================== */ + #define R_USB_HS0_PIPEBUF_BUFSIZE_Pos (10UL) /*!< BUFSIZE (Bit 10) */ + #define R_USB_HS0_PIPEBUF_BUFSIZE_Msk (0x7c00UL) /*!< BUFSIZE (Bitfield-Mask: 0x1f) */ + #define R_USB_HS0_PIPEBUF_BUFNMB_Pos (0UL) /*!< BUFNMB (Bit 0) */ + #define R_USB_HS0_PIPEBUF_BUFNMB_Msk (0xffUL) /*!< BUFNMB (Bitfield-Mask: 0xff) */ +/* ======================================================= PIPEMAXP ======================================================== */ + #define R_USB_HS0_PIPEMAXP_DEVSEL_Pos (12UL) /*!< DEVSEL (Bit 12) */ + #define R_USB_HS0_PIPEMAXP_DEVSEL_Msk (0xf000UL) /*!< DEVSEL (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PIPEMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USB_HS0_PIPEMAXP_MXPS_Msk (0x7ffUL) /*!< MXPS (Bitfield-Mask: 0x7ff) */ +/* ======================================================= PIPEPERI ======================================================== */ + #define R_USB_HS0_PIPEPERI_IFIS_Pos (12UL) /*!< IFIS (Bit 12) */ + #define R_USB_HS0_PIPEPERI_IFIS_Msk (0x1000UL) /*!< IFIS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPEPERI_IITV_Pos (0UL) /*!< IITV (Bit 0) */ + #define R_USB_HS0_PIPEPERI_IITV_Msk (0x7UL) /*!< IITV (Bitfield-Mask: 0x07) */ +/* ======================================================= PIPE_CTR ======================================================== */ + #define R_USB_HS0_PIPE_CTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USB_HS0_PIPE_CTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_INBUFM_Pos (14UL) /*!< INBUFM (Bit 14) */ + #define R_USB_HS0_PIPE_CTR_INBUFM_Msk (0x4000UL) /*!< INBUFM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_CSCLR_Pos (13UL) /*!< CSCLR (Bit 13) */ + #define R_USB_HS0_PIPE_CTR_CSCLR_Msk (0x2000UL) /*!< CSCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_CSSTS_Pos (12UL) /*!< CSSTS (Bit 12) */ + #define R_USB_HS0_PIPE_CTR_CSSTS_Msk (0x1000UL) /*!< CSSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_ATREPM_Pos (10UL) /*!< ATREPM (Bit 10) */ + #define R_USB_HS0_PIPE_CTR_ATREPM_Msk (0x400UL) /*!< ATREPM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_ACLRM_Pos (9UL) /*!< ACLRM (Bit 9) */ + #define R_USB_HS0_PIPE_CTR_ACLRM_Msk (0x200UL) /*!< ACLRM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USB_HS0_PIPE_CTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USB_HS0_PIPE_CTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USB_HS0_PIPE_CTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USB_HS0_PIPE_CTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PIPE_CTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USB_HS0_PIPE_CTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ +/* ======================================================== DEVADD ========================================================= */ + #define R_USB_HS0_DEVADD_UPPHUB_Pos (11UL) /*!< UPPHUB (Bit 11) */ + #define R_USB_HS0_DEVADD_UPPHUB_Msk (0x7800UL) /*!< UPPHUB (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_DEVADD_HUBPORT_Pos (8UL) /*!< HUBPORT (Bit 8) */ + #define R_USB_HS0_DEVADD_HUBPORT_Msk (0x700UL) /*!< HUBPORT (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_DEVADD_USBSPD_Pos (6UL) /*!< USBSPD (Bit 6) */ + #define R_USB_HS0_DEVADD_USBSPD_Msk (0xc0UL) /*!< USBSPD (Bitfield-Mask: 0x03) */ +/* ======================================================== LPCTRL ========================================================= */ + #define R_USB_HS0_LPCTRL_HWUPM_Pos (7UL) /*!< HWUPM (Bit 7) */ + #define R_USB_HS0_LPCTRL_HWUPM_Msk (0x80UL) /*!< HWUPM (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSTS ========================================================= */ + #define R_USB_HS0_LPSTS_SUSPENDM_Pos (14UL) /*!< SUSPENDM (Bit 14) */ + #define R_USB_HS0_LPSTS_SUSPENDM_Msk (0x4000UL) /*!< SUSPENDM (Bitfield-Mask: 0x01) */ +/* ======================================================== BCCTRL ========================================================= */ + #define R_USB_HS0_BCCTRL_PDDETSTS_Pos (9UL) /*!< PDDETSTS (Bit 9) */ + #define R_USB_HS0_BCCTRL_PDDETSTS_Msk (0x200UL) /*!< PDDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_CHGDETSTS_Pos (8UL) /*!< CHGDETSTS (Bit 8) */ + #define R_USB_HS0_BCCTRL_CHGDETSTS_Msk (0x100UL) /*!< CHGDETSTS (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_DCPMODE_Pos (5UL) /*!< DCPMODE (Bit 5) */ + #define R_USB_HS0_BCCTRL_DCPMODE_Msk (0x20UL) /*!< DCPMODE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_VDMSRCE_Pos (4UL) /*!< VDMSRCE (Bit 4) */ + #define R_USB_HS0_BCCTRL_VDMSRCE_Msk (0x10UL) /*!< VDMSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_IDPSINKE_Pos (3UL) /*!< IDPSINKE (Bit 3) */ + #define R_USB_HS0_BCCTRL_IDPSINKE_Msk (0x8UL) /*!< IDPSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_VDPSRCE_Pos (2UL) /*!< VDPSRCE (Bit 2) */ + #define R_USB_HS0_BCCTRL_VDPSRCE_Msk (0x4UL) /*!< VDPSRCE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_IDMSINKE_Pos (1UL) /*!< IDMSINKE (Bit 1) */ + #define R_USB_HS0_BCCTRL_IDMSINKE_Msk (0x2UL) /*!< IDMSINKE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_BCCTRL_IDPSRCE_Pos (0UL) /*!< IDPSRCE (Bit 0) */ + #define R_USB_HS0_BCCTRL_IDPSRCE_Msk (0x1UL) /*!< IDPSRCE (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL1 ======================================================== */ + #define R_USB_HS0_PL1CTRL1_L1EXTMD_Pos (14UL) /*!< L1EXTMD (Bit 14) */ + #define R_USB_HS0_PL1CTRL1_L1EXTMD_Msk (0x4000UL) /*!< L1EXTMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PL1CTRL1_HIRDTHR_Pos (8UL) /*!< HIRDTHR (Bit 8) */ + #define R_USB_HS0_PL1CTRL1_HIRDTHR_Msk (0xf00UL) /*!< HIRDTHR (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PL1CTRL1_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USB_HS0_PL1CTRL1_DVSQ_Msk (0xf0UL) /*!< DVSQ (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PL1CTRL1_L1NEGOMD_Pos (3UL) /*!< L1NEGOMD (Bit 3) */ + #define R_USB_HS0_PL1CTRL1_L1NEGOMD_Msk (0x8UL) /*!< L1NEGOMD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PL1CTRL1_L1RESPMD_Pos (1UL) /*!< L1RESPMD (Bit 1) */ + #define R_USB_HS0_PL1CTRL1_L1RESPMD_Msk (0x6UL) /*!< L1RESPMD (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PL1CTRL1_L1RESPEN_Pos (0UL) /*!< L1RESPEN (Bit 0) */ + #define R_USB_HS0_PL1CTRL1_L1RESPEN_Msk (0x1UL) /*!< L1RESPEN (Bitfield-Mask: 0x01) */ +/* ======================================================= PL1CTRL2 ======================================================== */ + #define R_USB_HS0_PL1CTRL2_RWEMON_Pos (12UL) /*!< RWEMON (Bit 12) */ + #define R_USB_HS0_PL1CTRL2_RWEMON_Msk (0x1000UL) /*!< RWEMON (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PL1CTRL2_HIRDMON_Pos (8UL) /*!< HIRDMON (Bit 8) */ + #define R_USB_HS0_PL1CTRL2_HIRDMON_Msk (0xf00UL) /*!< HIRDMON (Bitfield-Mask: 0x0f) */ +/* ======================================================= HL1CTRL1 ======================================================== */ + #define R_USB_HS0_HL1CTRL1_L1STATUS_Pos (1UL) /*!< L1STATUS (Bit 1) */ + #define R_USB_HS0_HL1CTRL1_L1STATUS_Msk (0x6UL) /*!< L1STATUS (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_HL1CTRL1_L1REQ_Pos (0UL) /*!< L1REQ (Bit 0) */ + #define R_USB_HS0_HL1CTRL1_L1REQ_Msk (0x1UL) /*!< L1REQ (Bitfield-Mask: 0x01) */ +/* ======================================================= HL1CTRL2 ======================================================== */ + #define R_USB_HS0_HL1CTRL2_BESL_Pos (15UL) /*!< BESL (Bit 15) */ + #define R_USB_HS0_HL1CTRL2_BESL_Msk (0x8000UL) /*!< BESL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_HL1CTRL2_L1RWE_Pos (12UL) /*!< L1RWE (Bit 12) */ + #define R_USB_HS0_HL1CTRL2_L1RWE_Msk (0x1000UL) /*!< L1RWE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_HL1CTRL2_HIRD_Pos (8UL) /*!< HIRD (Bit 8) */ + #define R_USB_HS0_HL1CTRL2_HIRD_Msk (0xf00UL) /*!< HIRD (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_HL1CTRL2_L1ADDR_Pos (0UL) /*!< L1ADDR (Bit 0) */ + #define R_USB_HS0_HL1CTRL2_L1ADDR_Msk (0xfUL) /*!< L1ADDR (Bitfield-Mask: 0x0f) */ +/* ======================================================= PHYTRIM1 ======================================================== */ + #define R_USB_HS0_PHYTRIM1_IMPOFFSET_Pos (12UL) /*!< IMPOFFSET (Bit 12) */ + #define R_USB_HS0_PHYTRIM1_IMPOFFSET_Msk (0x7000UL) /*!< IMPOFFSET (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_PHYTRIM1_HSIUP_Pos (8UL) /*!< HSIUP (Bit 8) */ + #define R_USB_HS0_PHYTRIM1_HSIUP_Msk (0xf00UL) /*!< HSIUP (Bitfield-Mask: 0x0f) */ + #define R_USB_HS0_PHYTRIM1_PCOMPENB_Pos (7UL) /*!< PCOMPENB (Bit 7) */ + #define R_USB_HS0_PHYTRIM1_PCOMPENB_Msk (0x80UL) /*!< PCOMPENB (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYTRIM1_DFALL_Pos (2UL) /*!< DFALL (Bit 2) */ + #define R_USB_HS0_PHYTRIM1_DFALL_Msk (0xcUL) /*!< DFALL (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYTRIM1_DRISE_Pos (0UL) /*!< DRISE (Bit 0) */ + #define R_USB_HS0_PHYTRIM1_DRISE_Msk (0x3UL) /*!< DRISE (Bitfield-Mask: 0x03) */ +/* ======================================================= PHYTRIM2 ======================================================== */ + #define R_USB_HS0_PHYTRIM2_DIS_Pos (12UL) /*!< DIS (Bit 12) */ + #define R_USB_HS0_PHYTRIM2_DIS_Msk (0x7000UL) /*!< DIS (Bitfield-Mask: 0x07) */ + #define R_USB_HS0_PHYTRIM2_PDR_Pos (8UL) /*!< PDR (Bit 8) */ + #define R_USB_HS0_PHYTRIM2_PDR_Msk (0x300UL) /*!< PDR (Bitfield-Mask: 0x03) */ + #define R_USB_HS0_PHYTRIM2_HSRXENMO_Pos (7UL) /*!< HSRXENMO (Bit 7) */ + #define R_USB_HS0_PHYTRIM2_HSRXENMO_Msk (0x80UL) /*!< HSRXENMO (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_PHYTRIM2_SQU_Pos (0UL) /*!< SQU (Bit 0) */ + #define R_USB_HS0_PHYTRIM2_SQU_Msk (0xfUL) /*!< SQU (Bitfield-Mask: 0x0f) */ +/* ======================================================== DPUSR0R ======================================================== */ + #define R_USB_HS0_DPUSR0R_DVBSTSHM_Pos (23UL) /*!< DVBSTSHM (Bit 23) */ + #define R_USB_HS0_DPUSR0R_DVBSTSHM_Msk (0x800000UL) /*!< DVBSTSHM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR0R_DOVCBHM_Pos (21UL) /*!< DOVCBHM (Bit 21) */ + #define R_USB_HS0_DPUSR0R_DOVCBHM_Msk (0x200000UL) /*!< DOVCBHM (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR0R_DOVCAHM_Pos (20UL) /*!< DOVCAHM (Bit 20) */ + #define R_USB_HS0_DPUSR0R_DOVCAHM_Msk (0x100000UL) /*!< DOVCAHM (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR1R ======================================================== */ + #define R_USB_HS0_DPUSR1R_DVBSTSH_Pos (23UL) /*!< DVBSTSH (Bit 23) */ + #define R_USB_HS0_DPUSR1R_DVBSTSH_Msk (0x800000UL) /*!< DVBSTSH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCBH_Pos (21UL) /*!< DOVCBH (Bit 21) */ + #define R_USB_HS0_DPUSR1R_DOVCBH_Msk (0x200000UL) /*!< DOVCBH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCAH_Pos (20UL) /*!< DOVCAH (Bit 20) */ + #define R_USB_HS0_DPUSR1R_DOVCAH_Msk (0x100000UL) /*!< DOVCAH (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DVBSTSHE_Pos (7UL) /*!< DVBSTSHE (Bit 7) */ + #define R_USB_HS0_DPUSR1R_DVBSTSHE_Msk (0x80UL) /*!< DVBSTSHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCBHE_Pos (5UL) /*!< DOVCBHE (Bit 5) */ + #define R_USB_HS0_DPUSR1R_DOVCBHE_Msk (0x20UL) /*!< DOVCBHE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR1R_DOVCAHE_Pos (4UL) /*!< DOVCAHE (Bit 4) */ + #define R_USB_HS0_DPUSR1R_DOVCAHE_Msk (0x10UL) /*!< DOVCAHE (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSR2R ======================================================== */ + #define R_USB_HS0_DPUSR2R_DMINTE_Pos (9UL) /*!< DMINTE (Bit 9) */ + #define R_USB_HS0_DPUSR2R_DMINTE_Msk (0x200UL) /*!< DMINTE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DPINTE_Pos (8UL) /*!< DPINTE (Bit 8) */ + #define R_USB_HS0_DPUSR2R_DPINTE_Msk (0x100UL) /*!< DPINTE (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DMVAL_Pos (5UL) /*!< DMVAL (Bit 5) */ + #define R_USB_HS0_DPUSR2R_DMVAL_Msk (0x20UL) /*!< DMVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DPVAL_Pos (4UL) /*!< DPVAL (Bit 4) */ + #define R_USB_HS0_DPUSR2R_DPVAL_Msk (0x10UL) /*!< DPVAL (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DMINT_Pos (1UL) /*!< DMINT (Bit 1) */ + #define R_USB_HS0_DPUSR2R_DMINT_Msk (0x2UL) /*!< DMINT (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSR2R_DPINT_Pos (0UL) /*!< DPINT (Bit 0) */ + #define R_USB_HS0_DPUSR2R_DPINT_Msk (0x1UL) /*!< DPINT (Bitfield-Mask: 0x01) */ +/* ======================================================== DPUSRCR ======================================================== */ + #define R_USB_HS0_DPUSRCR_FIXPHYPD_Pos (1UL) /*!< FIXPHYPD (Bit 1) */ + #define R_USB_HS0_DPUSRCR_FIXPHYPD_Msk (0x2UL) /*!< FIXPHYPD (Bitfield-Mask: 0x01) */ + #define R_USB_HS0_DPUSRCR_FIXPHY_Pos (0UL) /*!< FIXPHY (Bit 0) */ + #define R_USB_HS0_DPUSRCR_FIXPHY_Msk (0x1UL) /*!< FIXPHY (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_XSPI ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== WRAPCFG ======================================================== */ + #define R_XSPI_WRAPCFG_CKSFTCS0_Pos (0UL) /*!< CKSFTCS0 (Bit 0) */ + #define R_XSPI_WRAPCFG_CKSFTCS0_Msk (0x1fUL) /*!< CKSFTCS0 (Bitfield-Mask: 0x1f) */ + #define R_XSPI_WRAPCFG_DSSFTCS0_Pos (8UL) /*!< DSSFTCS0 (Bit 8) */ + #define R_XSPI_WRAPCFG_DSSFTCS0_Msk (0x1f00UL) /*!< DSSFTCS0 (Bitfield-Mask: 0x1f) */ + #define R_XSPI_WRAPCFG_CKSFTCS1_Pos (16UL) /*!< CKSFTCS1 (Bit 16) */ + #define R_XSPI_WRAPCFG_CKSFTCS1_Msk (0x1f0000UL) /*!< CKSFTCS1 (Bitfield-Mask: 0x1f) */ + #define R_XSPI_WRAPCFG_DSSFTCS1_Pos (24UL) /*!< DSSFTCS1 (Bit 24) */ + #define R_XSPI_WRAPCFG_DSSFTCS1_Msk (0x1f000000UL) /*!< DSSFTCS1 (Bitfield-Mask: 0x1f) */ +/* ======================================================== COMCFG ========================================================= */ + #define R_XSPI_COMCFG_ARBMD_Pos (0UL) /*!< ARBMD (Bit 0) */ + #define R_XSPI_COMCFG_ARBMD_Msk (0x3UL) /*!< ARBMD (Bitfield-Mask: 0x03) */ + #define R_XSPI_COMCFG_ECSINTOUTEN_Pos (4UL) /*!< ECSINTOUTEN (Bit 4) */ + #define R_XSPI_COMCFG_ECSINTOUTEN_Msk (0x30UL) /*!< ECSINTOUTEN (Bitfield-Mask: 0x03) */ + #define R_XSPI_COMCFG_OEASTEX_Pos (16UL) /*!< OEASTEX (Bit 16) */ + #define R_XSPI_COMCFG_OEASTEX_Msk (0x10000UL) /*!< OEASTEX (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMCFG_OENEGEX_Pos (17UL) /*!< OENEGEX (Bit 17) */ + #define R_XSPI_COMCFG_OENEGEX_Msk (0x20000UL) /*!< OENEGEX (Bitfield-Mask: 0x01) */ +/* ======================================================== BMCFGCH ======================================================== */ + #define R_XSPI_BMCFGCH_WRMD_Pos (0UL) /*!< WRMD (Bit 0) */ + #define R_XSPI_BMCFGCH_WRMD_Msk (0x1UL) /*!< WRMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCFGCH_MWRCOMB_Pos (7UL) /*!< MWRCOMB (Bit 7) */ + #define R_XSPI_BMCFGCH_MWRCOMB_Msk (0x80UL) /*!< MWRCOMB (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCFGCH_MWRSIZE_Pos (8UL) /*!< MWRSIZE (Bit 8) */ + #define R_XSPI_BMCFGCH_MWRSIZE_Msk (0xff00UL) /*!< MWRSIZE (Bitfield-Mask: 0xff) */ + #define R_XSPI_BMCFGCH_PREEN_Pos (16UL) /*!< PREEN (Bit 16) */ + #define R_XSPI_BMCFGCH_PREEN_Msk (0x10000UL) /*!< PREEN (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCFGCH_CMBTIM_Pos (24UL) /*!< CMBTIM (Bit 24) */ + #define R_XSPI_BMCFGCH_CMBTIM_Msk (0xff000000UL) /*!< CMBTIM (Bitfield-Mask: 0xff) */ +/* ======================================================= LIOCFGCS ======================================================== */ + #define R_XSPI_LIOCFGCS_PRTMD_Pos (0UL) /*!< PRTMD (Bit 0) */ + #define R_XSPI_LIOCFGCS_PRTMD_Msk (0x3ffUL) /*!< PRTMD (Bitfield-Mask: 0x3ff) */ + #define R_XSPI_LIOCFGCS_LATEMD_Pos (10UL) /*!< LATEMD (Bit 10) */ + #define R_XSPI_LIOCFGCS_LATEMD_Msk (0x400UL) /*!< LATEMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_WRMSKMD_Pos (11UL) /*!< WRMSKMD (Bit 11) */ + #define R_XSPI_LIOCFGCS_WRMSKMD_Msk (0x800UL) /*!< WRMSKMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_CSMIN_Pos (16UL) /*!< CSMIN (Bit 16) */ + #define R_XSPI_LIOCFGCS_CSMIN_Msk (0xf0000UL) /*!< CSMIN (Bitfield-Mask: 0x0f) */ + #define R_XSPI_LIOCFGCS_CSASTEX_Pos (20UL) /*!< CSASTEX (Bit 20) */ + #define R_XSPI_LIOCFGCS_CSASTEX_Msk (0x100000UL) /*!< CSASTEX (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_CSNEGEX_Pos (21UL) /*!< CSNEGEX (Bit 21) */ + #define R_XSPI_LIOCFGCS_CSNEGEX_Msk (0x200000UL) /*!< CSNEGEX (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_SDRDRV_Pos (22UL) /*!< SDRDRV (Bit 22) */ + #define R_XSPI_LIOCFGCS_SDRDRV_Msk (0x400000UL) /*!< SDRDRV (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_SDRSMPMD_Pos (23UL) /*!< SDRSMPMD (Bit 23) */ + #define R_XSPI_LIOCFGCS_SDRSMPMD_Msk (0x800000UL) /*!< SDRSMPMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCFGCS_SDRSMPSFT_Pos (24UL) /*!< SDRSMPSFT (Bit 24) */ + #define R_XSPI_LIOCFGCS_SDRSMPSFT_Msk (0xf000000UL) /*!< SDRSMPSFT (Bitfield-Mask: 0x0f) */ + #define R_XSPI_LIOCFGCS_DDRSMPEX_Pos (28UL) /*!< DDRSMPEX (Bit 28) */ + #define R_XSPI_LIOCFGCS_DDRSMPEX_Msk (0xf0000000UL) /*!< DDRSMPEX (Bitfield-Mask: 0x0f) */ +/* ======================================================== ABMCFG ========================================================= */ + #define R_XSPI_ABMCFG_ODRMD_Pos (0UL) /*!< ODRMD (Bit 0) */ + #define R_XSPI_ABMCFG_ODRMD_Msk (0x3UL) /*!< ODRMD (Bitfield-Mask: 0x03) */ + #define R_XSPI_ABMCFG_CHSEL_Pos (16UL) /*!< CHSEL (Bit 16) */ + #define R_XSPI_ABMCFG_CHSEL_Msk (0xffff0000UL) /*!< CHSEL (Bitfield-Mask: 0xffff) */ +/* ======================================================== BMCTL0 ========================================================= */ + #define R_XSPI_BMCTL0_CH0CS0ACC_Pos (0UL) /*!< CH0CS0ACC (Bit 0) */ + #define R_XSPI_BMCTL0_CH0CS0ACC_Msk (0x3UL) /*!< CH0CS0ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI_BMCTL0_CH0CS1ACC_Pos (2UL) /*!< CH0CS1ACC (Bit 2) */ + #define R_XSPI_BMCTL0_CH0CS1ACC_Msk (0xcUL) /*!< CH0CS1ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI_BMCTL0_CH1CS0ACC_Pos (4UL) /*!< CH1CS0ACC (Bit 4) */ + #define R_XSPI_BMCTL0_CH1CS0ACC_Msk (0x30UL) /*!< CH1CS0ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI_BMCTL0_CH1CS1ACC_Pos (6UL) /*!< CH1CS1ACC (Bit 6) */ + #define R_XSPI_BMCTL0_CH1CS1ACC_Msk (0xc0UL) /*!< CH1CS1ACC (Bitfield-Mask: 0x03) */ +/* ======================================================== BMCTL1 ========================================================= */ + #define R_XSPI_BMCTL1_MWRPUSHCH_Pos (8UL) /*!< MWRPUSHCH (Bit 8) */ + #define R_XSPI_BMCTL1_MWRPUSHCH_Msk (0x100UL) /*!< MWRPUSHCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_BMCTL1_PBUFCLRCH_Pos (10UL) /*!< PBUFCLRCH (Bit 10) */ + #define R_XSPI_BMCTL1_PBUFCLRCH_Msk (0x400UL) /*!< PBUFCLRCH (Bitfield-Mask: 0x01) */ +/* ======================================================== CMCTLCH ======================================================== */ + #define R_XSPI_CMCTLCH_XIPENCODE_Pos (0UL) /*!< XIPENCODE (Bit 0) */ + #define R_XSPI_CMCTLCH_XIPENCODE_Msk (0xffUL) /*!< XIPENCODE (Bitfield-Mask: 0xff) */ + #define R_XSPI_CMCTLCH_XIPEXCODE_Pos (8UL) /*!< XIPEXCODE (Bit 8) */ + #define R_XSPI_CMCTLCH_XIPEXCODE_Msk (0xff00UL) /*!< XIPEXCODE (Bitfield-Mask: 0xff) */ + #define R_XSPI_CMCTLCH_XIPEN_Pos (16UL) /*!< XIPEN (Bit 16) */ + #define R_XSPI_CMCTLCH_XIPEN_Msk (0x10000UL) /*!< XIPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== CDCTL0 ========================================================= */ + #define R_XSPI_CDCTL0_TRREQ_Pos (0UL) /*!< TRREQ (Bit 0) */ + #define R_XSPI_CDCTL0_TRREQ_Msk (0x1UL) /*!< TRREQ (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDCTL0_PERMD_Pos (1UL) /*!< PERMD (Bit 1) */ + #define R_XSPI_CDCTL0_PERMD_Msk (0x2UL) /*!< PERMD (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDCTL0_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI_CDCTL0_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI_CDCTL0_TRNUM_Pos (4UL) /*!< TRNUM (Bit 4) */ + #define R_XSPI_CDCTL0_TRNUM_Msk (0x30UL) /*!< TRNUM (Bitfield-Mask: 0x03) */ + #define R_XSPI_CDCTL0_PERITV_Pos (16UL) /*!< PERITV (Bit 16) */ + #define R_XSPI_CDCTL0_PERITV_Msk (0x1f0000UL) /*!< PERITV (Bitfield-Mask: 0x1f) */ + #define R_XSPI_CDCTL0_PERREP_Pos (24UL) /*!< PERREP (Bit 24) */ + #define R_XSPI_CDCTL0_PERREP_Msk (0xf000000UL) /*!< PERREP (Bitfield-Mask: 0x0f) */ +/* ======================================================== CDCTL1 ========================================================= */ + #define R_XSPI_CDCTL1_PEREXP_Pos (0UL) /*!< PEREXP (Bit 0) */ + #define R_XSPI_CDCTL1_PEREXP_Msk (0xffffffffUL) /*!< PEREXP (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDCTL2 ========================================================= */ + #define R_XSPI_CDCTL2_PERMSK_Pos (0UL) /*!< PERMSK (Bit 0) */ + #define R_XSPI_CDCTL2_PERMSK_Msk (0xffffffffUL) /*!< PERMSK (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LPCTL0 ========================================================= */ + #define R_XSPI_LPCTL0_PATREQ_Pos (0UL) /*!< PATREQ (Bit 0) */ + #define R_XSPI_LPCTL0_PATREQ_Msk (0x1UL) /*!< PATREQ (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL0_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI_LPCTL0_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL0_XDPIN_Pos (4UL) /*!< XDPIN (Bit 4) */ + #define R_XSPI_LPCTL0_XDPIN_Msk (0x30UL) /*!< XDPIN (Bitfield-Mask: 0x03) */ + #define R_XSPI_LPCTL0_XD1LEN_Pos (16UL) /*!< XD1LEN (Bit 16) */ + #define R_XSPI_LPCTL0_XD1LEN_Msk (0x1f0000UL) /*!< XD1LEN (Bitfield-Mask: 0x1f) */ + #define R_XSPI_LPCTL0_XD1VAL_Pos (23UL) /*!< XD1VAL (Bit 23) */ + #define R_XSPI_LPCTL0_XD1VAL_Msk (0x800000UL) /*!< XD1VAL (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL0_XD2LEN_Pos (24UL) /*!< XD2LEN (Bit 24) */ + #define R_XSPI_LPCTL0_XD2LEN_Msk (0x1f000000UL) /*!< XD2LEN (Bitfield-Mask: 0x1f) */ + #define R_XSPI_LPCTL0_XD2VAL_Pos (31UL) /*!< XD2VAL (Bit 31) */ + #define R_XSPI_LPCTL0_XD2VAL_Msk (0x80000000UL) /*!< XD2VAL (Bitfield-Mask: 0x01) */ +/* ======================================================== LPCTL1 ========================================================= */ + #define R_XSPI_LPCTL1_PATREQ_Pos (0UL) /*!< PATREQ (Bit 0) */ + #define R_XSPI_LPCTL1_PATREQ_Msk (0x3UL) /*!< PATREQ (Bitfield-Mask: 0x03) */ + #define R_XSPI_LPCTL1_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI_LPCTL1_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI_LPCTL1_RSTREP_Pos (4UL) /*!< RSTREP (Bit 4) */ + #define R_XSPI_LPCTL1_RSTREP_Msk (0x30UL) /*!< RSTREP (Bitfield-Mask: 0x03) */ + #define R_XSPI_LPCTL1_RSTWID_Pos (8UL) /*!< RSTWID (Bit 8) */ + #define R_XSPI_LPCTL1_RSTWID_Msk (0x700UL) /*!< RSTWID (Bitfield-Mask: 0x07) */ + #define R_XSPI_LPCTL1_RSTSU_Pos (12UL) /*!< RSTSU (Bit 12) */ + #define R_XSPI_LPCTL1_RSTSU_Msk (0x7000UL) /*!< RSTSU (Bitfield-Mask: 0x07) */ +/* ======================================================== LIOCTL ========================================================= */ + #define R_XSPI_LIOCTL_WPCS_Pos (0UL) /*!< WPCS (Bit 0) */ + #define R_XSPI_LIOCTL_WPCS_Msk (0x1UL) /*!< WPCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_LIOCTL_RSTCS_Pos (16UL) /*!< RSTCS (Bit 16) */ + #define R_XSPI_LIOCTL_RSTCS_Msk (0x10000UL) /*!< RSTCS (Bitfield-Mask: 0x01) */ +/* ======================================================== VERSTT ========================================================= */ + #define R_XSPI_VERSTT_VER_Pos (0UL) /*!< VER (Bit 0) */ + #define R_XSPI_VERSTT_VER_Msk (0xffffffffUL) /*!< VER (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== COMSTT ========================================================= */ + #define R_XSPI_COMSTT_MEMACCCH_Pos (0UL) /*!< MEMACCCH (Bit 0) */ + #define R_XSPI_COMSTT_MEMACCCH_Msk (0x1UL) /*!< MEMACCCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_PBUFNECH_Pos (4UL) /*!< PBUFNECH (Bit 4) */ + #define R_XSPI_COMSTT_PBUFNECH_Msk (0x10UL) /*!< PBUFNECH (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_WRBUFNECH_Pos (6UL) /*!< WRBUFNECH (Bit 6) */ + #define R_XSPI_COMSTT_WRBUFNECH_Msk (0x40UL) /*!< WRBUFNECH (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_ECSCS_Pos (16UL) /*!< ECSCS (Bit 16) */ + #define R_XSPI_COMSTT_ECSCS_Msk (0x10000UL) /*!< ECSCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_INTCS_Pos (17UL) /*!< INTCS (Bit 17) */ + #define R_XSPI_COMSTT_INTCS_Msk (0x20000UL) /*!< INTCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_COMSTT_RSTOCS_Pos (18UL) /*!< RSTOCS (Bit 18) */ + #define R_XSPI_COMSTT_RSTOCS_Msk (0x40000UL) /*!< RSTOCS (Bitfield-Mask: 0x01) */ +/* ======================================================== CASTTCS ======================================================== */ + #define R_XSPI_CASTTCS_CASUC_Pos (0UL) /*!< CASUC (Bit 0) */ + #define R_XSPI_CASTTCS_CASUC_Msk (0xffffffffUL) /*!< CASUC (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= INTS ========================================================== */ + #define R_XSPI_INTS_CMDCMP_Pos (0UL) /*!< CMDCMP (Bit 0) */ + #define R_XSPI_INTS_CMDCMP_Msk (0x1UL) /*!< CMDCMP (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_PATCMP_Pos (1UL) /*!< PATCMP (Bit 1) */ + #define R_XSPI_INTS_PATCMP_Msk (0x2UL) /*!< PATCMP (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_INICMP_Pos (2UL) /*!< INICMP (Bit 2) */ + #define R_XSPI_INTS_INICMP_Msk (0x4UL) /*!< INICMP (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_PERTO_Pos (3UL) /*!< PERTO (Bit 3) */ + #define R_XSPI_INTS_PERTO_Msk (0x8UL) /*!< PERTO (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_DSTOCS_Pos (4UL) /*!< DSTOCS (Bit 4) */ + #define R_XSPI_INTS_DSTOCS_Msk (0x10UL) /*!< DSTOCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_ECSCS_Pos (8UL) /*!< ECSCS (Bit 8) */ + #define R_XSPI_INTS_ECSCS_Msk (0x100UL) /*!< ECSCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_INTCS_Pos (12UL) /*!< INTCS (Bit 12) */ + #define R_XSPI_INTS_INTCS_Msk (0x1000UL) /*!< INTCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_BRGOFCH_Pos (16UL) /*!< BRGOFCH (Bit 16) */ + #define R_XSPI_INTS_BRGOFCH_Msk (0x10000UL) /*!< BRGOFCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_BRGUFCH_Pos (18UL) /*!< BRGUFCH (Bit 18) */ + #define R_XSPI_INTS_BRGUFCH_Msk (0x40000UL) /*!< BRGUFCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_BUSERRCH_Pos (20UL) /*!< BUSERRCH (Bit 20) */ + #define R_XSPI_INTS_BUSERRCH_Msk (0x100000UL) /*!< BUSERRCH (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_CAFAILCS_Pos (28UL) /*!< CAFAILCS (Bit 28) */ + #define R_XSPI_INTS_CAFAILCS_Msk (0x10000000UL) /*!< CAFAILCS (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTS_CASUCCS_Pos (30UL) /*!< CASUCCS (Bit 30) */ + #define R_XSPI_INTS_CASUCCS_Msk (0x40000000UL) /*!< CASUCCS (Bitfield-Mask: 0x01) */ +/* ========================================================= INTC ========================================================== */ + #define R_XSPI_INTC_CMDCMPC_Pos (0UL) /*!< CMDCMPC (Bit 0) */ + #define R_XSPI_INTC_CMDCMPC_Msk (0x1UL) /*!< CMDCMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_PATCMPC_Pos (1UL) /*!< PATCMPC (Bit 1) */ + #define R_XSPI_INTC_PATCMPC_Msk (0x2UL) /*!< PATCMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_INICMPC_Pos (2UL) /*!< INICMPC (Bit 2) */ + #define R_XSPI_INTC_INICMPC_Msk (0x4UL) /*!< INICMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_PERTOC_Pos (3UL) /*!< PERTOC (Bit 3) */ + #define R_XSPI_INTC_PERTOC_Msk (0x8UL) /*!< PERTOC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_DSTOCSC_Pos (4UL) /*!< DSTOCSC (Bit 4) */ + #define R_XSPI_INTC_DSTOCSC_Msk (0x10UL) /*!< DSTOCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_ECSCSC_Pos (8UL) /*!< ECSCSC (Bit 8) */ + #define R_XSPI_INTC_ECSCSC_Msk (0x100UL) /*!< ECSCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_INTCSC_Pos (12UL) /*!< INTCSC (Bit 12) */ + #define R_XSPI_INTC_INTCSC_Msk (0x1000UL) /*!< INTCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_BRGOFCHC_Pos (16UL) /*!< BRGOFCHC (Bit 16) */ + #define R_XSPI_INTC_BRGOFCHC_Msk (0x10000UL) /*!< BRGOFCHC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_BRGUFCHC_Pos (18UL) /*!< BRGUFCHC (Bit 18) */ + #define R_XSPI_INTC_BRGUFCHC_Msk (0x40000UL) /*!< BRGUFCHC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_BUSERRCHC_Pos (20UL) /*!< BUSERRCHC (Bit 20) */ + #define R_XSPI_INTC_BUSERRCHC_Msk (0x100000UL) /*!< BUSERRCHC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_CAFAILCSC_Pos (28UL) /*!< CAFAILCSC (Bit 28) */ + #define R_XSPI_INTC_CAFAILCSC_Msk (0x10000000UL) /*!< CAFAILCSC (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTC_CASUCCSC_Pos (30UL) /*!< CASUCCSC (Bit 30) */ + #define R_XSPI_INTC_CASUCCSC_Msk (0x40000000UL) /*!< CASUCCSC (Bitfield-Mask: 0x01) */ +/* ========================================================= INTE ========================================================== */ + #define R_XSPI_INTE_CMDCMPE_Pos (0UL) /*!< CMDCMPE (Bit 0) */ + #define R_XSPI_INTE_CMDCMPE_Msk (0x1UL) /*!< CMDCMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_PATCMPE_Pos (1UL) /*!< PATCMPE (Bit 1) */ + #define R_XSPI_INTE_PATCMPE_Msk (0x2UL) /*!< PATCMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_INICMPE_Pos (2UL) /*!< INICMPE (Bit 2) */ + #define R_XSPI_INTE_INICMPE_Msk (0x4UL) /*!< INICMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_PERTOE_Pos (3UL) /*!< PERTOE (Bit 3) */ + #define R_XSPI_INTE_PERTOE_Msk (0x8UL) /*!< PERTOE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_DSTOCSE_Pos (4UL) /*!< DSTOCSE (Bit 4) */ + #define R_XSPI_INTE_DSTOCSE_Msk (0x10UL) /*!< DSTOCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_ECSCSE_Pos (8UL) /*!< ECSCSE (Bit 8) */ + #define R_XSPI_INTE_ECSCSE_Msk (0x100UL) /*!< ECSCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_INTCSE_Pos (12UL) /*!< INTCSE (Bit 12) */ + #define R_XSPI_INTE_INTCSE_Msk (0x1000UL) /*!< INTCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_BRGOFCHE_Pos (16UL) /*!< BRGOFCHE (Bit 16) */ + #define R_XSPI_INTE_BRGOFCHE_Msk (0x10000UL) /*!< BRGOFCHE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_BRGUFCHE_Pos (18UL) /*!< BRGUFCHE (Bit 18) */ + #define R_XSPI_INTE_BRGUFCHE_Msk (0x40000UL) /*!< BRGUFCHE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_BUSERRCHE_Pos (20UL) /*!< BUSERRCHE (Bit 20) */ + #define R_XSPI_INTE_BUSERRCHE_Msk (0x100000UL) /*!< BUSERRCHE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_CAFAILCSE_Pos (28UL) /*!< CAFAILCSE (Bit 28) */ + #define R_XSPI_INTE_CAFAILCSE_Msk (0x10000000UL) /*!< CAFAILCSE (Bitfield-Mask: 0x01) */ + #define R_XSPI_INTE_CASUCCSE_Pos (30UL) /*!< CASUCCSE (Bit 30) */ + #define R_XSPI_INTE_CASUCCSE_Msk (0x40000000UL) /*!< CASUCCSE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CEU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CAPSR ========================================================= */ + #define R_CEU_CAPSR_CE_Pos (0UL) /*!< CE (Bit 0) */ + #define R_CEU_CAPSR_CE_Msk (0x1UL) /*!< CE (Bitfield-Mask: 0x01) */ + #define R_CEU_CAPSR_CPKIL_Pos (16UL) /*!< CPKIL (Bit 16) */ + #define R_CEU_CAPSR_CPKIL_Msk (0x10000UL) /*!< CPKIL (Bitfield-Mask: 0x01) */ +/* ========================================================= CAPCR ========================================================= */ + #define R_CEU_CAPCR_CTNCP_Pos (16UL) /*!< CTNCP (Bit 16) */ + #define R_CEU_CAPCR_CTNCP_Msk (0x10000UL) /*!< CTNCP (Bitfield-Mask: 0x01) */ + #define R_CEU_CAPCR_MTCM_Pos (20UL) /*!< MTCM (Bit 20) */ + #define R_CEU_CAPCR_MTCM_Msk (0x300000UL) /*!< MTCM (Bitfield-Mask: 0x03) */ + #define R_CEU_CAPCR_FDRP_Pos (24UL) /*!< FDRP (Bit 24) */ + #define R_CEU_CAPCR_FDRP_Msk (0xff000000UL) /*!< FDRP (Bitfield-Mask: 0xff) */ +/* ========================================================= CAMCR ========================================================= */ + #define R_CEU_CAMCR_HDPOL_Pos (0UL) /*!< HDPOL (Bit 0) */ + #define R_CEU_CAMCR_HDPOL_Msk (0x1UL) /*!< HDPOL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_VDPOL_Pos (1UL) /*!< VDPOL (Bit 1) */ + #define R_CEU_CAMCR_VDPOL_Msk (0x2UL) /*!< VDPOL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_JPG_Pos (4UL) /*!< JPG (Bit 4) */ + #define R_CEU_CAMCR_JPG_Msk (0x30UL) /*!< JPG (Bitfield-Mask: 0x03) */ + #define R_CEU_CAMCR_DTARY_Pos (8UL) /*!< DTARY (Bit 8) */ + #define R_CEU_CAMCR_DTARY_Msk (0x300UL) /*!< DTARY (Bitfield-Mask: 0x03) */ + #define R_CEU_CAMCR_DTIF_Pos (12UL) /*!< DTIF (Bit 12) */ + #define R_CEU_CAMCR_DTIF_Msk (0x1000UL) /*!< DTIF (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_FLDPOL_Pos (16UL) /*!< FLDPOL (Bit 16) */ + #define R_CEU_CAMCR_FLDPOL_Msk (0x10000UL) /*!< FLDPOL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_DSEL_Pos (24UL) /*!< DSEL (Bit 24) */ + #define R_CEU_CAMCR_DSEL_Msk (0x1000000UL) /*!< DSEL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_FLDSEL_Pos (25UL) /*!< FLDSEL (Bit 25) */ + #define R_CEU_CAMCR_FLDSEL_Msk (0x2000000UL) /*!< FLDSEL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_HDSEL_Pos (26UL) /*!< HDSEL (Bit 26) */ + #define R_CEU_CAMCR_HDSEL_Msk (0x4000000UL) /*!< HDSEL (Bitfield-Mask: 0x01) */ + #define R_CEU_CAMCR_VDSEL_Pos (27UL) /*!< VDSEL (Bit 27) */ + #define R_CEU_CAMCR_VDSEL_Msk (0x8000000UL) /*!< VDSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= CMCYR ========================================================= */ + #define R_CEU_CMCYR_HCYL_Pos (0UL) /*!< HCYL (Bit 0) */ + #define R_CEU_CMCYR_HCYL_Msk (0x3fffUL) /*!< HCYL (Bitfield-Mask: 0x3fff) */ + #define R_CEU_CMCYR_VCYL_Pos (16UL) /*!< VCYL (Bit 16) */ + #define R_CEU_CMCYR_VCYL_Msk (0x3fff0000UL) /*!< VCYL (Bitfield-Mask: 0x3fff) */ +/* ========================================================= CAMOR ========================================================= */ + #define R_CEU_CAMOR_HOFST_Pos (0UL) /*!< HOFST (Bit 0) */ + #define R_CEU_CAMOR_HOFST_Msk (0x1fffUL) /*!< HOFST (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAMOR_VOFST_Pos (16UL) /*!< VOFST (Bit 16) */ + #define R_CEU_CAMOR_VOFST_Msk (0xfff0000UL) /*!< VOFST (Bitfield-Mask: 0xfff) */ +/* ========================================================= CAPWR ========================================================= */ + #define R_CEU_CAPWR_HWDTH_Pos (0UL) /*!< HWDTH (Bit 0) */ + #define R_CEU_CAPWR_HWDTH_Msk (0x1fffUL) /*!< HWDTH (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAPWR_VWDTH_Pos (16UL) /*!< VWDTH (Bit 16) */ + #define R_CEU_CAPWR_VWDTH_Msk (0xfff0000UL) /*!< VWDTH (Bitfield-Mask: 0xfff) */ +/* ========================================================= CAIFR ========================================================= */ + #define R_CEU_CAIFR_FCI_Pos (0UL) /*!< FCI (Bit 0) */ + #define R_CEU_CAIFR_FCI_Msk (0x3UL) /*!< FCI (Bitfield-Mask: 0x03) */ + #define R_CEU_CAIFR_CIM_Pos (4UL) /*!< CIM (Bit 4) */ + #define R_CEU_CAIFR_CIM_Msk (0x10UL) /*!< CIM (Bitfield-Mask: 0x01) */ + #define R_CEU_CAIFR_IFS_Pos (8UL) /*!< IFS (Bit 8) */ + #define R_CEU_CAIFR_IFS_Msk (0x100UL) /*!< IFS (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCNTR ========================================================= */ + #define R_CEU_CRCNTR_RC_Pos (0UL) /*!< RC (Bit 0) */ + #define R_CEU_CRCNTR_RC_Msk (0x1UL) /*!< RC (Bitfield-Mask: 0x01) */ + #define R_CEU_CRCNTR_RS_Pos (1UL) /*!< RS (Bit 1) */ + #define R_CEU_CRCNTR_RS_Msk (0x2UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_CEU_CRCNTR_RVS_Pos (4UL) /*!< RVS (Bit 4) */ + #define R_CEU_CRCNTR_RVS_Msk (0x10UL) /*!< RVS (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCMPR ========================================================= */ + #define R_CEU_CRCMPR_RA_Pos (0UL) /*!< RA (Bit 0) */ + #define R_CEU_CRCMPR_RA_Msk (0x1UL) /*!< RA (Bitfield-Mask: 0x01) */ +/* ========================================================= CFLCR ========================================================= */ + #define R_CEU_CFLCR_HFRAC_Pos (0UL) /*!< HFRAC (Bit 0) */ + #define R_CEU_CFLCR_HFRAC_Msk (0xfffUL) /*!< HFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_HMANT_Pos (12UL) /*!< HMANT (Bit 12) */ + #define R_CEU_CFLCR_HMANT_Msk (0xf000UL) /*!< HMANT (Bitfield-Mask: 0x0f) */ + #define R_CEU_CFLCR_VFRAC_Pos (16UL) /*!< VFRAC (Bit 16) */ + #define R_CEU_CFLCR_VFRAC_Msk (0xfff0000UL) /*!< VFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_VMANT_Pos (28UL) /*!< VMANT (Bit 28) */ + #define R_CEU_CFLCR_VMANT_Msk (0xf0000000UL) /*!< VMANT (Bitfield-Mask: 0x0f) */ +/* ========================================================= CFSZR ========================================================= */ + #define R_CEU_CFSZR_HFCLP_Pos (0UL) /*!< HFCLP (Bit 0) */ + #define R_CEU_CFSZR_HFCLP_Msk (0xfffUL) /*!< HFCLP (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFSZR_VFCLP_Pos (16UL) /*!< VFCLP (Bit 16) */ + #define R_CEU_CFSZR_VFCLP_Msk (0xfff0000UL) /*!< VFCLP (Bitfield-Mask: 0xfff) */ +/* ========================================================= CDWDR ========================================================= */ + #define R_CEU_CDWDR_CHDW_Pos (0UL) /*!< CHDW (Bit 0) */ + #define R_CEU_CDWDR_CHDW_Msk (0x1fffUL) /*!< CHDW (Bitfield-Mask: 0x1fff) */ +/* ========================================================= CDAYR ========================================================= */ + #define R_CEU_CDAYR_CAYR_Pos (0UL) /*!< CAYR (Bit 0) */ + #define R_CEU_CDAYR_CAYR_Msk (0xffffffffUL) /*!< CAYR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDACR ========================================================= */ + #define R_CEU_CDACR_CACR_Pos (0UL) /*!< CACR (Bit 0) */ + #define R_CEU_CDACR_CACR_Msk (0xffffffffUL) /*!< CACR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDBYR ========================================================= */ + #define R_CEU_CDBYR_CBYR_Pos (0UL) /*!< CBYR (Bit 0) */ + #define R_CEU_CDBYR_CBYR_Msk (0xffffffffUL) /*!< CBYR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDBCR ========================================================= */ + #define R_CEU_CDBCR_CBCR_Pos (0UL) /*!< CBCR (Bit 0) */ + #define R_CEU_CDBCR_CBCR_Msk (0xffffffffUL) /*!< CBCR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CBDSR ========================================================= */ + #define R_CEU_CBDSR_CBVS_Pos (0UL) /*!< CBVS (Bit 0) */ + #define R_CEU_CBDSR_CBVS_Msk (0x7fffffUL) /*!< CBVS (Bitfield-Mask: 0x7fffff) */ +/* ========================================================= CFWCR ========================================================= */ + #define R_CEU_CFWCR_FWE_Pos (0UL) /*!< FWE (Bit 0) */ + #define R_CEU_CFWCR_FWE_Msk (0x1UL) /*!< FWE (Bitfield-Mask: 0x01) */ + #define R_CEU_CFWCR_FWV_Pos (5UL) /*!< FWV (Bit 5) */ + #define R_CEU_CFWCR_FWV_Msk (0xffffffe0UL) /*!< FWV (Bitfield-Mask: 0x7ffffff) */ +/* ========================================================= CLFCR ========================================================= */ + #define R_CEU_CLFCR_LPF_Pos (0UL) /*!< LPF (Bit 0) */ + #define R_CEU_CLFCR_LPF_Msk (0x1UL) /*!< LPF (Bitfield-Mask: 0x01) */ +/* ========================================================= CDOCR ========================================================= */ + #define R_CEU_CDOCR_COBS_Pos (0UL) /*!< COBS (Bit 0) */ + #define R_CEU_CDOCR_COBS_Msk (0x1UL) /*!< COBS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_COWS_Pos (1UL) /*!< COWS (Bit 1) */ + #define R_CEU_CDOCR_COWS_Msk (0x2UL) /*!< COWS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_COLS_Pos (2UL) /*!< COLS (Bit 2) */ + #define R_CEU_CDOCR_COLS_Msk (0x4UL) /*!< COLS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_CDS_Pos (4UL) /*!< CDS (Bit 4) */ + #define R_CEU_CDOCR_CDS_Msk (0x10UL) /*!< CDS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_CBE_Pos (16UL) /*!< CBE (Bit 16) */ + #define R_CEU_CDOCR_CBE_Msk (0x10000UL) /*!< CBE (Bitfield-Mask: 0x01) */ +/* ========================================================= CEIER ========================================================= */ + #define R_CEU_CEIER_CPEIE_Pos (0UL) /*!< CPEIE (Bit 0) */ + #define R_CEU_CEIER_CPEIE_Msk (0x1UL) /*!< CPEIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CFEIE_Pos (1UL) /*!< CFEIE (Bit 1) */ + #define R_CEU_CEIER_CFEIE_Msk (0x2UL) /*!< CFEIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_IGRWIE_Pos (4UL) /*!< IGRWIE (Bit 4) */ + #define R_CEU_CEIER_IGRWIE_Msk (0x10UL) /*!< IGRWIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_HDIE_Pos (8UL) /*!< HDIE (Bit 8) */ + #define R_CEU_CEIER_HDIE_Msk (0x100UL) /*!< HDIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_VDIE_Pos (9UL) /*!< VDIE (Bit 9) */ + #define R_CEU_CEIER_VDIE_Msk (0x200UL) /*!< VDIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE1IE_Pos (12UL) /*!< CPBE1IE (Bit 12) */ + #define R_CEU_CEIER_CPBE1IE_Msk (0x1000UL) /*!< CPBE1IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE2IE_Pos (13UL) /*!< CPBE2IE (Bit 13) */ + #define R_CEU_CEIER_CPBE2IE_Msk (0x2000UL) /*!< CPBE2IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE3IE_Pos (14UL) /*!< CPBE3IE (Bit 14) */ + #define R_CEU_CEIER_CPBE3IE_Msk (0x4000UL) /*!< CPBE3IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CPBE4IE_Pos (15UL) /*!< CPBE4IE (Bit 15) */ + #define R_CEU_CEIER_CPBE4IE_Msk (0x8000UL) /*!< CPBE4IE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_CDTOFIE_Pos (16UL) /*!< CDTOFIE (Bit 16) */ + #define R_CEU_CEIER_CDTOFIE_Msk (0x10000UL) /*!< CDTOFIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_IGHSIE_Pos (17UL) /*!< IGHSIE (Bit 17) */ + #define R_CEU_CEIER_IGHSIE_Msk (0x20000UL) /*!< IGHSIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_IGVSIE_Pos (18UL) /*!< IGVSIE (Bit 18) */ + #define R_CEU_CEIER_IGVSIE_Msk (0x40000UL) /*!< IGVSIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_VBPIE_Pos (20UL) /*!< VBPIE (Bit 20) */ + #define R_CEU_CEIER_VBPIE_Msk (0x100000UL) /*!< VBPIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_FWFIE_Pos (23UL) /*!< FWFIE (Bit 23) */ + #define R_CEU_CEIER_FWFIE_Msk (0x800000UL) /*!< FWFIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_NHDIE_Pos (24UL) /*!< NHDIE (Bit 24) */ + #define R_CEU_CEIER_NHDIE_Msk (0x1000000UL) /*!< NHDIE (Bitfield-Mask: 0x01) */ + #define R_CEU_CEIER_NVDIE_Pos (25UL) /*!< NVDIE (Bit 25) */ + #define R_CEU_CEIER_NVDIE_Msk (0x2000000UL) /*!< NVDIE (Bitfield-Mask: 0x01) */ +/* ========================================================= CETCR ========================================================= */ + #define R_CEU_CETCR_CPE_Pos (0UL) /*!< CPE (Bit 0) */ + #define R_CEU_CETCR_CPE_Msk (0x1UL) /*!< CPE (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CFE_Pos (1UL) /*!< CFE (Bit 1) */ + #define R_CEU_CETCR_CFE_Msk (0x2UL) /*!< CFE (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_IGRW_Pos (4UL) /*!< IGRW (Bit 4) */ + #define R_CEU_CETCR_IGRW_Msk (0x10UL) /*!< IGRW (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_HD_Pos (8UL) /*!< HD (Bit 8) */ + #define R_CEU_CETCR_HD_Msk (0x100UL) /*!< HD (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_VD_Pos (9UL) /*!< VD (Bit 9) */ + #define R_CEU_CETCR_VD_Msk (0x200UL) /*!< VD (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE1_Pos (12UL) /*!< CPBE1 (Bit 12) */ + #define R_CEU_CETCR_CPBE1_Msk (0x1000UL) /*!< CPBE1 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE2_Pos (13UL) /*!< CPBE2 (Bit 13) */ + #define R_CEU_CETCR_CPBE2_Msk (0x2000UL) /*!< CPBE2 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE3_Pos (14UL) /*!< CPBE3 (Bit 14) */ + #define R_CEU_CETCR_CPBE3_Msk (0x4000UL) /*!< CPBE3 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CPBE4_Pos (15UL) /*!< CPBE4 (Bit 15) */ + #define R_CEU_CETCR_CPBE4_Msk (0x8000UL) /*!< CPBE4 (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_CDTOF_Pos (16UL) /*!< CDTOF (Bit 16) */ + #define R_CEU_CETCR_CDTOF_Msk (0x10000UL) /*!< CDTOF (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_IGHS_Pos (17UL) /*!< IGHS (Bit 17) */ + #define R_CEU_CETCR_IGHS_Msk (0x20000UL) /*!< IGHS (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_IGVS_Pos (18UL) /*!< IGVS (Bit 18) */ + #define R_CEU_CETCR_IGVS_Msk (0x40000UL) /*!< IGVS (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_VBP_Pos (20UL) /*!< VBP (Bit 20) */ + #define R_CEU_CETCR_VBP_Msk (0x100000UL) /*!< VBP (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_FWF_Pos (23UL) /*!< FWF (Bit 23) */ + #define R_CEU_CETCR_FWF_Msk (0x800000UL) /*!< FWF (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_NHD_Pos (24UL) /*!< NHD (Bit 24) */ + #define R_CEU_CETCR_NHD_Msk (0x1000000UL) /*!< NHD (Bitfield-Mask: 0x01) */ + #define R_CEU_CETCR_NVD_Pos (25UL) /*!< NVD (Bit 25) */ + #define R_CEU_CETCR_NVD_Msk (0x2000000UL) /*!< NVD (Bitfield-Mask: 0x01) */ +/* ========================================================= CSTSR ========================================================= */ + #define R_CEU_CSTSR_CPTON_Pos (0UL) /*!< CPTON (Bit 0) */ + #define R_CEU_CSTSR_CPTON_Msk (0x1UL) /*!< CPTON (Bitfield-Mask: 0x01) */ + #define R_CEU_CSTSR_CPFLD_Pos (16UL) /*!< CPFLD (Bit 16) */ + #define R_CEU_CSTSR_CPFLD_Msk (0x10000UL) /*!< CPFLD (Bitfield-Mask: 0x01) */ + #define R_CEU_CSTSR_CRST_Pos (24UL) /*!< CRST (Bit 24) */ + #define R_CEU_CSTSR_CRST_Msk (0x1000000UL) /*!< CRST (Bitfield-Mask: 0x01) */ +/* ========================================================= CDSSR ========================================================= */ + #define R_CEU_CDSSR_CDSS_Pos (0UL) /*!< CDSS (Bit 0) */ + #define R_CEU_CDSSR_CDSS_Msk (0xffffffffUL) /*!< CDSS (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDAYR2 ========================================================= */ + #define R_CEU_CDAYR2_CAYR2_Pos (0UL) /*!< CAYR2 (Bit 0) */ + #define R_CEU_CDAYR2_CAYR2_Msk (0xffffffffUL) /*!< CAYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDACR2 ========================================================= */ + #define R_CEU_CDACR2_CACR2_Pos (0UL) /*!< CACR2 (Bit 0) */ + #define R_CEU_CDACR2_CACR2_Msk (0xffffffffUL) /*!< CACR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBYR2 ========================================================= */ + #define R_CEU_CDBYR2_CBYR2_Pos (0UL) /*!< CBYR2 (Bit 0) */ + #define R_CEU_CDBYR2_CBYR2_Msk (0xffffffffUL) /*!< CBYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBCR2 ========================================================= */ + #define R_CEU_CDBCR2_CBCR2_Pos (0UL) /*!< CBCR2 (Bit 0) */ + #define R_CEU_CDBCR2_CBCR2_Msk (0xffffffffUL) /*!< CBCR2 (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== AXIBUSCTL2 ======================================================= */ + #define R_CEU_AXIBUSCTL2_AWCACHE_Pos (0UL) /*!< AWCACHE (Bit 0) */ + #define R_CEU_AXIBUSCTL2_AWCACHE_Msk (0xfUL) /*!< AWCACHE (Bitfield-Mask: 0x0f) */ +/* ======================================================== CAMOR_B ======================================================== */ + #define R_CEU_CAMOR_B_HOFST_Pos (0UL) /*!< HOFST (Bit 0) */ + #define R_CEU_CAMOR_B_HOFST_Msk (0x1fffUL) /*!< HOFST (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAMOR_B_VOFST_Pos (16UL) /*!< VOFST (Bit 16) */ + #define R_CEU_CAMOR_B_VOFST_Msk (0xfff0000UL) /*!< VOFST (Bitfield-Mask: 0xfff) */ +/* ======================================================== CAPWR_B ======================================================== */ + #define R_CEU_CAPWR_B_HWDTH_Pos (0UL) /*!< HWDTH (Bit 0) */ + #define R_CEU_CAPWR_B_HWDTH_Msk (0x1fffUL) /*!< HWDTH (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAPWR_B_VWDTH_Pos (16UL) /*!< VWDTH (Bit 16) */ + #define R_CEU_CAPWR_B_VWDTH_Msk (0xfff0000UL) /*!< VWDTH (Bitfield-Mask: 0xfff) */ +/* ======================================================== CFLCR_B ======================================================== */ + #define R_CEU_CFLCR_B_HFRAC_Pos (0UL) /*!< HFRAC (Bit 0) */ + #define R_CEU_CFLCR_B_HFRAC_Msk (0xfffUL) /*!< HFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_B_HMANT_Pos (12UL) /*!< HMANT (Bit 12) */ + #define R_CEU_CFLCR_B_HMANT_Msk (0xf000UL) /*!< HMANT (Bitfield-Mask: 0x0f) */ + #define R_CEU_CFLCR_B_VFRAC_Pos (16UL) /*!< VFRAC (Bit 16) */ + #define R_CEU_CFLCR_B_VFRAC_Msk (0xfff0000UL) /*!< VFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_B_VMANT_Pos (28UL) /*!< VMANT (Bit 28) */ + #define R_CEU_CFLCR_B_VMANT_Msk (0xf0000000UL) /*!< VMANT (Bitfield-Mask: 0x0f) */ +/* ======================================================== CFSZR_B ======================================================== */ + #define R_CEU_CFSZR_B_HFCLP_Pos (0UL) /*!< HFCLP (Bit 0) */ + #define R_CEU_CFSZR_B_HFCLP_Msk (0xfffUL) /*!< HFCLP (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFSZR_B_VFCLP_Pos (16UL) /*!< VFCLP (Bit 16) */ + #define R_CEU_CFSZR_B_VFCLP_Msk (0xfff0000UL) /*!< VFCLP (Bitfield-Mask: 0xfff) */ +/* ======================================================== CDWDR_B ======================================================== */ + #define R_CEU_CDWDR_B_CHDW_Pos (0UL) /*!< CHDW (Bit 0) */ + #define R_CEU_CDWDR_B_CHDW_Msk (0x1fffUL) /*!< CHDW (Bitfield-Mask: 0x1fff) */ +/* ======================================================== CDAYR_B ======================================================== */ + #define R_CEU_CDAYR_B_CAYR_Pos (0UL) /*!< CAYR (Bit 0) */ + #define R_CEU_CDAYR_B_CAYR_Msk (0xffffffffUL) /*!< CAYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDACR_B ======================================================== */ + #define R_CEU_CDACR_B_CACR_Pos (0UL) /*!< CACR (Bit 0) */ + #define R_CEU_CDACR_B_CACR_Msk (0xffffffffUL) /*!< CACR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBYR_B ======================================================== */ + #define R_CEU_CDBYR_B_CBYR_Pos (0UL) /*!< CBYR (Bit 0) */ + #define R_CEU_CDBYR_B_CBYR_Msk (0xffffffffUL) /*!< CBYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBCR_B ======================================================== */ + #define R_CEU_CDBCR_B_CBCR_Pos (0UL) /*!< CBCR (Bit 0) */ + #define R_CEU_CDBCR_B_CBCR_Msk (0xffffffffUL) /*!< CBCR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CBDSR_B ======================================================== */ + #define R_CEU_CBDSR_B_CBVS_Pos (0UL) /*!< CBVS (Bit 0) */ + #define R_CEU_CBDSR_B_CBVS_Msk (0x7fffffUL) /*!< CBVS (Bitfield-Mask: 0x7fffff) */ +/* ======================================================== CLFCR_B ======================================================== */ + #define R_CEU_CLFCR_B_LPF_Pos (0UL) /*!< LPF (Bit 0) */ + #define R_CEU_CLFCR_B_LPF_Msk (0x1UL) /*!< LPF (Bitfield-Mask: 0x01) */ +/* ======================================================== CDOCR_B ======================================================== */ + #define R_CEU_CDOCR_B_COBS_Pos (0UL) /*!< COBS (Bit 0) */ + #define R_CEU_CDOCR_B_COBS_Msk (0x1UL) /*!< COBS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_COWS_Pos (1UL) /*!< COWS (Bit 1) */ + #define R_CEU_CDOCR_B_COWS_Msk (0x2UL) /*!< COWS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_COLS_Pos (2UL) /*!< COLS (Bit 2) */ + #define R_CEU_CDOCR_B_COLS_Msk (0x4UL) /*!< COLS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_CDS_Pos (4UL) /*!< CDS (Bit 4) */ + #define R_CEU_CDOCR_B_CDS_Msk (0x10UL) /*!< CDS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_B_CBE_Pos (16UL) /*!< CBE (Bit 16) */ + #define R_CEU_CDOCR_B_CBE_Msk (0x10000UL) /*!< CBE (Bitfield-Mask: 0x01) */ +/* ======================================================= CDAYR2_B ======================================================== */ + #define R_CEU_CDAYR2_B_CAYR2_Pos (0UL) /*!< CAYR2 (Bit 0) */ + #define R_CEU_CDAYR2_B_CAYR2_Msk (0xffffffffUL) /*!< CAYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDACR2_B ======================================================== */ + #define R_CEU_CDACR2_B_CACR2_Pos (0UL) /*!< CACR2 (Bit 0) */ + #define R_CEU_CDACR2_B_CACR2_Msk (0xffffffffUL) /*!< CACR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBYR2_B ======================================================== */ + #define R_CEU_CDBYR2_B_CBYR2_Pos (0UL) /*!< CBYR2 (Bit 0) */ + #define R_CEU_CDBYR2_B_CBYR2_Msk (0xffffffffUL) /*!< CBYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBCR2_B ======================================================== */ + #define R_CEU_CDBCR2_B_CBCR2_Pos (0UL) /*!< CBCR2 (Bit 0) */ + #define R_CEU_CDBCR2_B_CBCR2_Msk (0xffffffffUL) /*!< CBCR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CAMOR_M ======================================================== */ + #define R_CEU_CAMOR_M_HOFST_Pos (0UL) /*!< HOFST (Bit 0) */ + #define R_CEU_CAMOR_M_HOFST_Msk (0x1fffUL) /*!< HOFST (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAMOR_M_VOFST_Pos (16UL) /*!< VOFST (Bit 16) */ + #define R_CEU_CAMOR_M_VOFST_Msk (0xfff0000UL) /*!< VOFST (Bitfield-Mask: 0xfff) */ +/* ======================================================== CAPWR_M ======================================================== */ + #define R_CEU_CAPWR_M_HWDTH_Pos (0UL) /*!< HWDTH (Bit 0) */ + #define R_CEU_CAPWR_M_HWDTH_Msk (0x1fffUL) /*!< HWDTH (Bitfield-Mask: 0x1fff) */ + #define R_CEU_CAPWR_M_VWDTH_Pos (16UL) /*!< VWDTH (Bit 16) */ + #define R_CEU_CAPWR_M_VWDTH_Msk (0xfff0000UL) /*!< VWDTH (Bitfield-Mask: 0xfff) */ +/* ======================================================== CFLCR_M ======================================================== */ + #define R_CEU_CFLCR_M_HFRAC_Pos (0UL) /*!< HFRAC (Bit 0) */ + #define R_CEU_CFLCR_M_HFRAC_Msk (0xfffUL) /*!< HFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_M_HMANT_Pos (12UL) /*!< HMANT (Bit 12) */ + #define R_CEU_CFLCR_M_HMANT_Msk (0xf000UL) /*!< HMANT (Bitfield-Mask: 0x0f) */ + #define R_CEU_CFLCR_M_VFRAC_Pos (16UL) /*!< VFRAC (Bit 16) */ + #define R_CEU_CFLCR_M_VFRAC_Msk (0xfff0000UL) /*!< VFRAC (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFLCR_M_VMANT_Pos (28UL) /*!< VMANT (Bit 28) */ + #define R_CEU_CFLCR_M_VMANT_Msk (0xf0000000UL) /*!< VMANT (Bitfield-Mask: 0x0f) */ +/* ======================================================== CFSZR_M ======================================================== */ + #define R_CEU_CFSZR_M_HFCLP_Pos (0UL) /*!< HFCLP (Bit 0) */ + #define R_CEU_CFSZR_M_HFCLP_Msk (0xfffUL) /*!< HFCLP (Bitfield-Mask: 0xfff) */ + #define R_CEU_CFSZR_M_VFCLP_Pos (16UL) /*!< VFCLP (Bit 16) */ + #define R_CEU_CFSZR_M_VFCLP_Msk (0xfff0000UL) /*!< VFCLP (Bitfield-Mask: 0xfff) */ +/* ======================================================== CDWDR_M ======================================================== */ + #define R_CEU_CDWDR_M_CHDW_Pos (0UL) /*!< CHDW (Bit 0) */ + #define R_CEU_CDWDR_M_CHDW_Msk (0x1fffUL) /*!< CHDW (Bitfield-Mask: 0x1fff) */ +/* ======================================================== CDAYR_M ======================================================== */ + #define R_CEU_CDAYR_M_CAYR_Pos (0UL) /*!< CAYR (Bit 0) */ + #define R_CEU_CDAYR_M_CAYR_Msk (0xffffffffUL) /*!< CAYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDACR_M ======================================================== */ + #define R_CEU_CDACR_M_CACR_Pos (0UL) /*!< CACR (Bit 0) */ + #define R_CEU_CDACR_M_CACR_Msk (0xffffffffUL) /*!< CACR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBYR_M ======================================================== */ + #define R_CEU_CDBYR_M_CBYR_Pos (0UL) /*!< CBYR (Bit 0) */ + #define R_CEU_CDBYR_M_CBYR_Msk (0xffffffffUL) /*!< CBYR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDBCR_M ======================================================== */ + #define R_CEU_CDBCR_M_CBCR_Pos (0UL) /*!< CBCR (Bit 0) */ + #define R_CEU_CDBCR_M_CBCR_Msk (0xffffffffUL) /*!< CBCR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CBDSR_M ======================================================== */ + #define R_CEU_CBDSR_M_CBVS_Pos (0UL) /*!< CBVS (Bit 0) */ + #define R_CEU_CBDSR_M_CBVS_Msk (0x7fffffUL) /*!< CBVS (Bitfield-Mask: 0x7fffff) */ +/* ======================================================== CLFCR_M ======================================================== */ + #define R_CEU_CLFCR_M_LPF_Pos (0UL) /*!< LPF (Bit 0) */ + #define R_CEU_CLFCR_M_LPF_Msk (0x1UL) /*!< LPF (Bitfield-Mask: 0x01) */ +/* ======================================================== CDOCR_M ======================================================== */ + #define R_CEU_CDOCR_M_COBS_Pos (0UL) /*!< COBS (Bit 0) */ + #define R_CEU_CDOCR_M_COBS_Msk (0x1UL) /*!< COBS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_COWS_Pos (1UL) /*!< COWS (Bit 1) */ + #define R_CEU_CDOCR_M_COWS_Msk (0x2UL) /*!< COWS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_COLS_Pos (2UL) /*!< COLS (Bit 2) */ + #define R_CEU_CDOCR_M_COLS_Msk (0x4UL) /*!< COLS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_CDS_Pos (4UL) /*!< CDS (Bit 4) */ + #define R_CEU_CDOCR_M_CDS_Msk (0x10UL) /*!< CDS (Bitfield-Mask: 0x01) */ + #define R_CEU_CDOCR_M_CBE_Pos (16UL) /*!< CBE (Bit 16) */ + #define R_CEU_CDOCR_M_CBE_Msk (0x10000UL) /*!< CBE (Bitfield-Mask: 0x01) */ +/* ======================================================= CDAYR2_M ======================================================== */ + #define R_CEU_CDAYR2_M_CAYR2_Pos (0UL) /*!< CAYR2 (Bit 0) */ + #define R_CEU_CDAYR2_M_CAYR2_Msk (0xffffffffUL) /*!< CAYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDACR2_M ======================================================== */ + #define R_CEU_CDACR2_M_CACR2_Pos (0UL) /*!< CACR2 (Bit 0) */ + #define R_CEU_CDACR2_M_CACR2_Msk (0xffffffffUL) /*!< CACR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBYR2_M ======================================================== */ + #define R_CEU_CDBYR2_M_CBYR2_Pos (0UL) /*!< CBYR2 (Bit 0) */ + #define R_CEU_CDBYR2_M_CBYR2_Msk (0xffffffffUL) /*!< CBYR2 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= CDBCR2_M ======================================================== */ + #define R_CEU_CDBCR2_M_CBCR2_Pos (0UL) /*!< CBCR2 (Bit 0) */ + #define R_CEU_CDBCR2_M_CBCR2_Msk (0xffffffffUL) /*!< CBCR2 (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_ULPT0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== ULPTCNT ======================================================== */ + #define R_ULPT0_ULPTCNT_ULPTCNT_Pos (0UL) /*!< ULPTCNT (Bit 0) */ + #define R_ULPT0_ULPTCNT_ULPTCNT_Msk (0xffffffffUL) /*!< ULPTCNT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ULPTCMA ======================================================== */ + #define R_ULPT0_ULPTCMA_ULPTCMA_Pos (0UL) /*!< ULPTCMA (Bit 0) */ + #define R_ULPT0_ULPTCMA_ULPTCMA_Msk (0xffffffffUL) /*!< ULPTCMA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ULPTCMB ======================================================== */ + #define R_ULPT0_ULPTCMB_ULPTCMB_Pos (0UL) /*!< ULPTCMB (Bit 0) */ + #define R_ULPT0_ULPTCMB_ULPTCMB_Msk (0xffffffffUL) /*!< ULPTCMB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ULPTCR ========================================================= */ + #define R_ULPT0_ULPTCR_TSTART_Pos (0UL) /*!< TSTART (Bit 0) */ + #define R_ULPT0_ULPTCR_TSTART_Msk (0x1UL) /*!< TSTART (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TCSTF_Pos (1UL) /*!< TCSTF (Bit 1) */ + #define R_ULPT0_ULPTCR_TCSTF_Msk (0x2UL) /*!< TCSTF (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TSTOP_Pos (2UL) /*!< TSTOP (Bit 2) */ + #define R_ULPT0_ULPTCR_TSTOP_Msk (0x4UL) /*!< TSTOP (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TUNDF_Pos (5UL) /*!< TUNDF (Bit 5) */ + #define R_ULPT0_ULPTCR_TUNDF_Msk (0x20UL) /*!< TUNDF (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TCMAF_Pos (6UL) /*!< TCMAF (Bit 6) */ + #define R_ULPT0_ULPTCR_TCMAF_Msk (0x40UL) /*!< TCMAF (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCR_TCMBF_Pos (7UL) /*!< TCMBF (Bit 7) */ + #define R_ULPT0_ULPTCR_TCMBF_Msk (0x80UL) /*!< TCMBF (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTMR1 ======================================================== */ + #define R_ULPT0_ULPTMR1_TMOD1_Pos (1UL) /*!< TMOD1 (Bit 1) */ + #define R_ULPT0_ULPTMR1_TMOD1_Msk (0x2UL) /*!< TMOD1 (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR1_TEDGPL_Pos (3UL) /*!< TEDGPL (Bit 3) */ + #define R_ULPT0_ULPTMR1_TEDGPL_Msk (0x8UL) /*!< TEDGPL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR1_TCK1_Pos (5UL) /*!< TCK1 (Bit 5) */ + #define R_ULPT0_ULPTMR1_TCK1_Msk (0x20UL) /*!< TCK1 (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTMR2 ======================================================== */ + #define R_ULPT0_ULPTMR2_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_ULPT0_ULPTMR2_CKS_Msk (0x7UL) /*!< CKS (Bitfield-Mask: 0x07) */ + #define R_ULPT0_ULPTMR2_LPM_Pos (7UL) /*!< LPM (Bit 7) */ + #define R_ULPT0_ULPTMR2_LPM_Msk (0x80UL) /*!< LPM (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTMR3 ======================================================== */ + #define R_ULPT0_ULPTMR3_TCNTCTL_Pos (0UL) /*!< TCNTCTL (Bit 0) */ + #define R_ULPT0_ULPTMR3_TCNTCTL_Msk (0x1UL) /*!< TCNTCTL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR3_TEVPOL_Pos (1UL) /*!< TEVPOL (Bit 1) */ + #define R_ULPT0_ULPTMR3_TEVPOL_Msk (0x2UL) /*!< TEVPOL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR3_TOPOL_Pos (2UL) /*!< TOPOL (Bit 2) */ + #define R_ULPT0_ULPTMR3_TOPOL_Msk (0x4UL) /*!< TOPOL (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTMR3_TEECTL_Pos (4UL) /*!< TEECTL (Bit 4) */ + #define R_ULPT0_ULPTMR3_TEECTL_Msk (0x30UL) /*!< TEECTL (Bitfield-Mask: 0x03) */ + #define R_ULPT0_ULPTMR3_TEEPOL_Pos (6UL) /*!< TEEPOL (Bit 6) */ + #define R_ULPT0_ULPTMR3_TEEPOL_Msk (0xc0UL) /*!< TEEPOL (Bitfield-Mask: 0x03) */ +/* ======================================================== ULPTIOC ======================================================== */ + #define R_ULPT0_ULPTIOC_TOE_Pos (2UL) /*!< TOE (Bit 2) */ + #define R_ULPT0_ULPTIOC_TOE_Msk (0x4UL) /*!< TOE (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTIOC_TIPF_Pos (4UL) /*!< TIPF (Bit 4) */ + #define R_ULPT0_ULPTIOC_TIPF_Msk (0x30UL) /*!< TIPF (Bitfield-Mask: 0x03) */ + #define R_ULPT0_ULPTIOC_TIOGT0_Pos (6UL) /*!< TIOGT0 (Bit 6) */ + #define R_ULPT0_ULPTIOC_TIOGT0_Msk (0x40UL) /*!< TIOGT0 (Bitfield-Mask: 0x01) */ +/* ======================================================== ULPTISR ======================================================== */ + #define R_ULPT0_ULPTISR_RCCPSEL2_Pos (2UL) /*!< RCCPSEL2 (Bit 2) */ + #define R_ULPT0_ULPTISR_RCCPSEL2_Msk (0x4UL) /*!< RCCPSEL2 (Bitfield-Mask: 0x01) */ +/* ======================================================= ULPTCMSR ======================================================== */ + #define R_ULPT0_ULPTCMSR_TCMEA_Pos (0UL) /*!< TCMEA (Bit 0) */ + #define R_ULPT0_ULPTCMSR_TCMEA_Msk (0x1UL) /*!< TCMEA (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOEA_Pos (1UL) /*!< TOEA (Bit 1) */ + #define R_ULPT0_ULPTCMSR_TOEA_Msk (0x2UL) /*!< TOEA (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOPOLA_Pos (2UL) /*!< TOPOLA (Bit 2) */ + #define R_ULPT0_ULPTCMSR_TOPOLA_Msk (0x4UL) /*!< TOPOLA (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TCMEB_Pos (4UL) /*!< TCMEB (Bit 4) */ + #define R_ULPT0_ULPTCMSR_TCMEB_Msk (0x10UL) /*!< TCMEB (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOEB_Pos (5UL) /*!< TOEB (Bit 5) */ + #define R_ULPT0_ULPTCMSR_TOEB_Msk (0x20UL) /*!< TOEB (Bitfield-Mask: 0x01) */ + #define R_ULPT0_ULPTCMSR_TOPOLB_Pos (6UL) /*!< TOPOLB (Bit 6) */ + #define R_ULPT0_ULPTCMSR_TOPOLB_Msk (0x40UL) /*!< TOPOLB (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DEBUG_OCD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= FSBLSTATM ======================================================= */ + #define R_DEBUG_OCD_FSBLSTATM_CS_Pos (0UL) /*!< CS (Bit 0) */ + #define R_DEBUG_OCD_FSBLSTATM_CS_Msk (0x1UL) /*!< CS (Bitfield-Mask: 0x01) */ + #define R_DEBUG_OCD_FSBLSTATM_RS_Pos (1UL) /*!< RS (Bit 1) */ + #define R_DEBUG_OCD_FSBLSTATM_RS_Msk (0x2UL) /*!< RS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_DOTF ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== CONVAREAST ======================================================= */ + #define R_DOTF_CONVAREAST_CONVAREAST_Pos (12UL) /*!< CONVAREAST (Bit 12) */ + #define R_DOTF_CONVAREAST_CONVAREAST_Msk (0xfffff000UL) /*!< CONVAREAST (Bitfield-Mask: 0xfffff) */ +/* ======================================================= CONVAREAD ======================================================= */ + #define R_DOTF_CONVAREAD_CONVAREAD_Pos (12UL) /*!< CONVAREAD (Bit 12) */ + #define R_DOTF_CONVAREAD_CONVAREAD_Msk (0xfffff000UL) /*!< CONVAREAD (Bitfield-Mask: 0xfffff) */ +/* ========================================================= REG00 ========================================================= */ + #define R_DOTF_REG00_B09_Pos (9UL) /*!< B09 (Bit 9) */ + #define R_DOTF_REG00_B09_Msk (0x200UL) /*!< B09 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B16_Pos (16UL) /*!< B16 (Bit 16) */ + #define R_DOTF_REG00_B16_Msk (0x10000UL) /*!< B16 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B17_Pos (17UL) /*!< B17 (Bit 17) */ + #define R_DOTF_REG00_B17_Msk (0x20000UL) /*!< B17 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B20_Pos (20UL) /*!< B20 (Bit 20) */ + #define R_DOTF_REG00_B20_Msk (0x100000UL) /*!< B20 (Bitfield-Mask: 0x01) */ + #define R_DOTF_REG00_B24_Pos (24UL) /*!< B24 (Bit 24) */ + #define R_DOTF_REG00_B24_Msk (0x3000000UL) /*!< B24 (Bitfield-Mask: 0x03) */ + #define R_DOTF_REG00_B28_Pos (28UL) /*!< B28 (Bit 28) */ + #define R_DOTF_REG00_B28_Msk (0x30000000UL) /*!< B28 (Bitfield-Mask: 0x03) */ +/* ========================================================= REG03 ========================================================= */ + #define R_DOTF_REG03_B00_Pos (0UL) /*!< B00 (Bit 0) */ + #define R_DOTF_REG03_B00_Msk (0xffffffffUL) /*!< B00 (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_AGTX0 ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_DPHYCNT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= DPHYREFCR ======================================================= */ + #define R_DPHYCNT_DPHYREFCR_RFREQ_Pos (0UL) /*!< RFREQ (Bit 0) */ + #define R_DPHYCNT_DPHYREFCR_RFREQ_Msk (0xffUL) /*!< RFREQ (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYPLFCR ======================================================= */ + #define R_DPHYCNT_DPHYPLFCR_IDIV_Pos (0UL) /*!< IDIV (Bit 0) */ + #define R_DPHYCNT_DPHYPLFCR_IDIV_Msk (0x3UL) /*!< IDIV (Bitfield-Mask: 0x03) */ + #define R_DPHYCNT_DPHYPLFCR_NFMUL_Pos (8UL) /*!< NFMUL (Bit 8) */ + #define R_DPHYCNT_DPHYPLFCR_NFMUL_Msk (0x300UL) /*!< NFMUL (Bitfield-Mask: 0x03) */ + #define R_DPHYCNT_DPHYPLFCR_NMUL_Pos (16UL) /*!< NMUL (Bit 16) */ + #define R_DPHYCNT_DPHYPLFCR_NMUL_Msk (0xff0000UL) /*!< NMUL (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYPLOCR ======================================================= */ + #define R_DPHYCNT_DPHYPLOCR_PLLSTP_Pos (0UL) /*!< PLLSTP (Bit 0) */ + #define R_DPHYCNT_DPHYPLOCR_PLLSTP_Msk (0x1UL) /*!< PLLSTP (Bitfield-Mask: 0x01) */ +/* ======================================================= DPHYESCCR ======================================================= */ + #define R_DPHYCNT_DPHYESCCR_ESCDIV_Pos (0UL) /*!< ESCDIV (Bit 0) */ + #define R_DPHYCNT_DPHYESCCR_ESCDIV_Msk (0x1fUL) /*!< ESCDIV (Bitfield-Mask: 0x1f) */ +/* ======================================================= DPHYPWRCR ======================================================= */ + #define R_DPHYCNT_DPHYPWRCR_PWRSEN_Pos (0UL) /*!< PWRSEN (Bit 0) */ + #define R_DPHYCNT_DPHYPWRCR_PWRSEN_Msk (0x1UL) /*!< PWRSEN (Bitfield-Mask: 0x01) */ +/* ======================================================== DPHYSFR ======================================================== */ + #define R_DPHYCNT_DPHYSFR_PWRSF_Pos (0UL) /*!< PWRSF (Bit 0) */ + #define R_DPHYCNT_DPHYSFR_PWRSF_Msk (0x1UL) /*!< PWRSF (Bitfield-Mask: 0x01) */ + #define R_DPHYCNT_DPHYSFR_PLLSF_Pos (8UL) /*!< PLLSF (Bit 8) */ + #define R_DPHYCNT_DPHYSFR_PLLSF_Msk (0x100UL) /*!< PLLSF (Bitfield-Mask: 0x01) */ +/* ======================================================== DPHYOCR ======================================================== */ + #define R_DPHYCNT_DPHYOCR_DPHYEN_Pos (0UL) /*!< DPHYEN (Bit 0) */ + #define R_DPHYCNT_DPHYOCR_DPHYEN_Msk (0x1UL) /*!< DPHYEN (Bitfield-Mask: 0x01) */ +/* ======================================================= DPHYTIM1 ======================================================== */ + #define R_DPHYCNT_DPHYTIM1_TINIT_Pos (0UL) /*!< TINIT (Bit 0) */ + #define R_DPHYCNT_DPHYTIM1_TINIT_Msk (0x7ffffUL) /*!< TINIT (Bitfield-Mask: 0x7ffff) */ +/* ======================================================= DPHYTIM2 ======================================================== */ + #define R_DPHYCNT_DPHYTIM2_TCLKPREP_Pos (0UL) /*!< TCLKPREP (Bit 0) */ + #define R_DPHYCNT_DPHYTIM2_TCLKPREP_Msk (0xffUL) /*!< TCLKPREP (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM3 ======================================================== */ + #define R_DPHYCNT_DPHYTIM3_THSPREP_Pos (0UL) /*!< THSPREP (Bit 0) */ + #define R_DPHYCNT_DPHYTIM3_THSPREP_Msk (0xffUL) /*!< THSPREP (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM4 ======================================================== */ + #define R_DPHYCNT_DPHYTIM4_TCLKZERO_Pos (0UL) /*!< TCLKZERO (Bit 0) */ + #define R_DPHYCNT_DPHYTIM4_TCLKZERO_Msk (0xffUL) /*!< TCLKZERO (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPRE_Pos (8UL) /*!< TCLKPRE (Bit 8) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPRE_Msk (0xff00UL) /*!< TCLKPRE (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPOST_Pos (16UL) /*!< TCLKPOST (Bit 16) */ + #define R_DPHYCNT_DPHYTIM4_TCLKPOST_Msk (0xff0000UL) /*!< TCLKPOST (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM4_TCLKTRL_Pos (24UL) /*!< TCLKTRL (Bit 24) */ + #define R_DPHYCNT_DPHYTIM4_TCLKTRL_Msk (0xff000000UL) /*!< TCLKTRL (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM5 ======================================================== */ + #define R_DPHYCNT_DPHYTIM5_THSZERO_Pos (0UL) /*!< THSZERO (Bit 0) */ + #define R_DPHYCNT_DPHYTIM5_THSZERO_Msk (0xffUL) /*!< THSZERO (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM5_THSTRL_Pos (8UL) /*!< THSTRL (Bit 8) */ + #define R_DPHYCNT_DPHYTIM5_THSTRL_Msk (0xff00UL) /*!< THSTRL (Bitfield-Mask: 0xff) */ + #define R_DPHYCNT_DPHYTIM5_THSEXIT_Pos (16UL) /*!< THSEXIT (Bit 16) */ + #define R_DPHYCNT_DPHYTIM5_THSEXIT_Msk (0xff0000UL) /*!< THSEXIT (Bitfield-Mask: 0xff) */ +/* ======================================================= DPHYTIM6 ======================================================== */ + #define R_DPHYCNT_DPHYTIM6_TLPX_Pos (0UL) /*!< TLPX (Bit 0) */ + #define R_DPHYCNT_DPHYTIM6_TLPX_Msk (0xffUL) /*!< TLPX (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_DSILINK ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ISR ========================================================== */ + #define R_DSILINK_ISR_SQ0_Pos (0UL) /*!< SQ0 (Bit 0) */ + #define R_DSILINK_ISR_SQ0_Msk (0x1UL) /*!< SQ0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_SQ1_Pos (4UL) /*!< SQ1 (Bit 4) */ + #define R_DSILINK_ISR_SQ1_Msk (0x10UL) /*!< SQ1 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_VM_Pos (8UL) /*!< VM (Bit 8) */ + #define R_DSILINK_ISR_VM_Msk (0x100UL) /*!< VM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_RCV_Pos (12UL) /*!< RCV (Bit 12) */ + #define R_DSILINK_ISR_RCV_Msk (0x1000UL) /*!< RCV (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_FERR_Pos (16UL) /*!< FERR (Bit 16) */ + #define R_DSILINK_ISR_FERR_Msk (0x10000UL) /*!< FERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ISR_PPI_Pos (20UL) /*!< PPI (Bit 20) */ + #define R_DSILINK_ISR_PPI_Msk (0x100000UL) /*!< PPI (Bitfield-Mask: 0x01) */ +/* ======================================================== LINKSR ========================================================= */ + #define R_DSILINK_LINKSR_SQ0RUN_Pos (0UL) /*!< SQ0RUN (Bit 0) */ + #define R_DSILINK_LINKSR_SQ0RUN_Msk (0x1UL) /*!< SQ0RUN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_SQ1RUN_Pos (4UL) /*!< SQ1RUN (Bit 4) */ + #define R_DSILINK_LINKSR_SQ1RUN_Msk (0x10UL) /*!< SQ1RUN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_VRUN_Pos (8UL) /*!< VRUN (Bit 8) */ + #define R_DSILINK_LINKSR_VRUN_Msk (0x100UL) /*!< VRUN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_HSBUSY_Pos (12UL) /*!< HSBUSY (Bit 12) */ + #define R_DSILINK_LINKSR_HSBUSY_Msk (0x1000UL) /*!< HSBUSY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_LINKSR_LPBUSY_Pos (13UL) /*!< LPBUSY (Bit 13) */ + #define R_DSILINK_LINKSR_LPBUSY_Msk (0x2000UL) /*!< LPBUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== TXSETR ========================================================= */ + #define R_DSILINK_TXSETR_NUMLANE_Pos (0UL) /*!< NUMLANE (Bit 0) */ + #define R_DSILINK_TXSETR_NUMLANE_Msk (0x3UL) /*!< NUMLANE (Bitfield-Mask: 0x03) */ + #define R_DSILINK_TXSETR_CLEN_Pos (8UL) /*!< CLEN (Bit 8) */ + #define R_DSILINK_TXSETR_CLEN_Msk (0x100UL) /*!< CLEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_TXSETR_DLEN_Pos (9UL) /*!< DLEN (Bit 9) */ + #define R_DSILINK_TXSETR_DLEN_Msk (0x200UL) /*!< DLEN (Bitfield-Mask: 0x01) */ +/* ======================================================= HSCLKSETR ======================================================= */ + #define R_DSILINK_HSCLKSETR_HSCLST_Pos (0UL) /*!< HSCLST (Bit 0) */ + #define R_DSILINK_HSCLKSETR_HSCLST_Msk (0x1UL) /*!< HSCLST (Bitfield-Mask: 0x01) */ + #define R_DSILINK_HSCLKSETR_HSCLMD_Pos (1UL) /*!< HSCLMD (Bit 1) */ + #define R_DSILINK_HSCLKSETR_HSCLMD_Msk (0x2UL) /*!< HSCLMD (Bitfield-Mask: 0x01) */ +/* ======================================================= ULPSSETR ======================================================== */ + #define R_DSILINK_ULPSSETR_WKUP_Pos (0UL) /*!< WKUP (Bit 0) */ + #define R_DSILINK_ULPSSETR_WKUP_Msk (0xffUL) /*!< WKUP (Bitfield-Mask: 0xff) */ +/* ======================================================== ULPSCR ========================================================= */ + #define R_DSILINK_ULPSCR_CLENT_Pos (24UL) /*!< CLENT (Bit 24) */ + #define R_DSILINK_ULPSCR_CLENT_Msk (0x1000000UL) /*!< CLENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ULPSCR_CLEXIT_Pos (25UL) /*!< CLEXIT (Bit 25) */ + #define R_DSILINK_ULPSCR_CLEXIT_Msk (0x2000000UL) /*!< CLEXIT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ULPSCR_DLENT_Pos (28UL) /*!< DLENT (Bit 28) */ + #define R_DSILINK_ULPSCR_DLENT_Msk (0x10000000UL) /*!< DLENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_ULPSCR_DLEXIT_Pos (29UL) /*!< DLEXIT (Bit 29) */ + #define R_DSILINK_ULPSCR_DLEXIT_Msk (0x20000000UL) /*!< DLEXIT (Bitfield-Mask: 0x01) */ +/* ========================================================= RSTCR ========================================================= */ + #define R_DSILINK_RSTCR_SWRST_Pos (0UL) /*!< SWRST (Bit 0) */ + #define R_DSILINK_RSTCR_SWRST_Msk (0x1UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTCR_FTXSTP_Pos (16UL) /*!< FTXSTP (Bit 16) */ + #define R_DSILINK_RSTCR_FTXSTP_Msk (0x10000UL) /*!< FTXSTP (Bitfield-Mask: 0x01) */ +/* ========================================================= RSTSR ========================================================= */ + #define R_DSILINK_RSTSR_RSTHS_Pos (0UL) /*!< RSTHS (Bit 0) */ + #define R_DSILINK_RSTSR_RSTHS_Msk (0x1UL) /*!< RSTHS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTLP_Pos (1UL) /*!< RSTLP (Bit 1) */ + #define R_DSILINK_RSTSR_RSTLP_Msk (0x2UL) /*!< RSTLP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTAPB_Pos (2UL) /*!< RSTAPB (Bit 2) */ + #define R_DSILINK_RSTSR_RSTAPB_Msk (0x4UL) /*!< RSTAPB (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTAXI_Pos (3UL) /*!< RSTAXI (Bit 3) */ + #define R_DSILINK_RSTSR_RSTAXI_Msk (0x8UL) /*!< RSTAXI (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_RSTV_Pos (4UL) /*!< RSTV (Bit 4) */ + #define R_DSILINK_RSTSR_RSTV_Msk (0x10UL) /*!< RSTV (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_DL0STP_Pos (8UL) /*!< DL0STP (Bit 8) */ + #define R_DSILINK_RSTSR_DL0STP_Msk (0x100UL) /*!< DL0STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_DL1STP_Pos (9UL) /*!< DL1STP (Bit 9) */ + #define R_DSILINK_RSTSR_DL1STP_Msk (0x200UL) /*!< DL1STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RSTSR_DL0DIR_Pos (15UL) /*!< DL0DIR (Bit 15) */ + #define R_DSILINK_RSTSR_DL0DIR_Msk (0x8000UL) /*!< DL0DIR (Bitfield-Mask: 0x01) */ +/* ======================================================== DSISETR ======================================================== */ + #define R_DSILINK_DSISETR_MRPSZ_Pos (0UL) /*!< MRPSZ (Bit 0) */ + #define R_DSILINK_DSISETR_MRPSZ_Msk (0xffffUL) /*!< MRPSZ (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_DSISETR_ECCEN_Pos (16UL) /*!< ECCEN (Bit 16) */ + #define R_DSILINK_DSISETR_ECCEN_Msk (0x10000UL) /*!< ECCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC0CRCEN_Pos (20UL) /*!< VC0CRCEN (Bit 20) */ + #define R_DSILINK_DSISETR_VC0CRCEN_Msk (0x100000UL) /*!< VC0CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC1CRCEN_Pos (21UL) /*!< VC1CRCEN (Bit 21) */ + #define R_DSILINK_DSISETR_VC1CRCEN_Msk (0x200000UL) /*!< VC1CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC2CRCEN_Pos (22UL) /*!< VC2CRCEN (Bit 22) */ + #define R_DSILINK_DSISETR_VC2CRCEN_Msk (0x400000UL) /*!< VC2CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_VC3CRCEN_Pos (23UL) /*!< VC3CRCEN (Bit 23) */ + #define R_DSILINK_DSISETR_VC3CRCEN_Msk (0x800000UL) /*!< VC3CRCEN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_SCREN_Pos (29UL) /*!< SCREN (Bit 29) */ + #define R_DSILINK_DSISETR_SCREN_Msk (0x20000000UL) /*!< SCREN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_EXTEMD_Pos (30UL) /*!< EXTEMD (Bit 30) */ + #define R_DSILINK_DSISETR_EXTEMD_Msk (0x40000000UL) /*!< EXTEMD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_DSISETR_EOTPEN_Pos (31UL) /*!< EOTPEN (Bit 31) */ + #define R_DSILINK_DSISETR_EOTPEN_Msk (0x80000000UL) /*!< EOTPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== TXPPD0R ======================================================== */ + #define R_DSILINK_TXPPD0R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_TXPPD0R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD0R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_TXPPD0R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD0R_DATA2_Pos (16UL) /*!< DATA2 (Bit 16) */ + #define R_DSILINK_TXPPD0R_DATA2_Msk (0xff0000UL) /*!< DATA2 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD0R_DATA3_Pos (24UL) /*!< DATA3 (Bit 24) */ + #define R_DSILINK_TXPPD0R_DATA3_Msk (0xff000000UL) /*!< DATA3 (Bitfield-Mask: 0xff) */ +/* ======================================================== TXPPD1R ======================================================== */ + #define R_DSILINK_TXPPD1R_DATA4_Pos (0UL) /*!< DATA4 (Bit 0) */ + #define R_DSILINK_TXPPD1R_DATA4_Msk (0xffUL) /*!< DATA4 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD1R_DATA5_Pos (8UL) /*!< DATA5 (Bit 8) */ + #define R_DSILINK_TXPPD1R_DATA5_Msk (0xff00UL) /*!< DATA5 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD1R_DATA6_Pos (16UL) /*!< DATA6 (Bit 16) */ + #define R_DSILINK_TXPPD1R_DATA6_Msk (0xff0000UL) /*!< DATA6 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD1R_DATA7_Pos (24UL) /*!< DATA7 (Bit 24) */ + #define R_DSILINK_TXPPD1R_DATA7_Msk (0xff000000UL) /*!< DATA7 (Bitfield-Mask: 0xff) */ +/* ======================================================== TXPPD2R ======================================================== */ + #define R_DSILINK_TXPPD2R_DATA8_Pos (0UL) /*!< DATA8 (Bit 0) */ + #define R_DSILINK_TXPPD2R_DATA8_Msk (0xffUL) /*!< DATA8 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD2R_DATA9_Pos (8UL) /*!< DATA9 (Bit 8) */ + #define R_DSILINK_TXPPD2R_DATA9_Msk (0xff00UL) /*!< DATA9 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD2R_DATA10_Pos (16UL) /*!< DATA10 (Bit 16) */ + #define R_DSILINK_TXPPD2R_DATA10_Msk (0xff0000UL) /*!< DATA10 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD2R_DATA11_Pos (24UL) /*!< DATA11 (Bit 24) */ + #define R_DSILINK_TXPPD2R_DATA11_Msk (0xff000000UL) /*!< DATA11 (Bitfield-Mask: 0xff) */ +/* ======================================================== TXPPD3R ======================================================== */ + #define R_DSILINK_TXPPD3R_DATA12_Pos (0UL) /*!< DATA12 (Bit 0) */ + #define R_DSILINK_TXPPD3R_DATA12_Msk (0xffUL) /*!< DATA12 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD3R_DATA13_Pos (8UL) /*!< DATA13 (Bit 8) */ + #define R_DSILINK_TXPPD3R_DATA13_Msk (0xff00UL) /*!< DATA13 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD3R_DATA14_Pos (16UL) /*!< DATA14 (Bit 16) */ + #define R_DSILINK_TXPPD3R_DATA14_Msk (0xff0000UL) /*!< DATA14 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_TXPPD3R_DATA15_Pos (24UL) /*!< DATA15 (Bit 24) */ + #define R_DSILINK_TXPPD3R_DATA15_Msk (0xff000000UL) /*!< DATA15 (Bitfield-Mask: 0xff) */ +/* ========================================================= RXSR ========================================================== */ + #define R_DSILINK_RXSR_BTAREND_Pos (0UL) /*!< BTAREND (Bit 0) */ + #define R_DSILINK_RXSR_BTAREND_Msk (0x1UL) /*!< BTAREND (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_RXSR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_RXSR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXRESP_Pos (8UL) /*!< RXRESP (Bit 8) */ + #define R_DSILINK_RXSR_RXRESP_Msk (0x100UL) /*!< RXRESP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXEOTP_Pos (10UL) /*!< RXEOTP (Bit 10) */ + #define R_DSILINK_RXSR_RXEOTP_Msk (0x400UL) /*!< RXEOTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXTE_Pos (13UL) /*!< RXTE (Bit 13) */ + #define R_DSILINK_RXSR_RXTE_Msk (0x2000UL) /*!< RXTE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXACK_Pos (14UL) /*!< RXACK (Bit 14) */ + #define R_DSILINK_RXSR_RXACK_Msk (0x4000UL) /*!< RXACK (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_EXTEDET_Pos (15UL) /*!< EXTEDET (Bit 15) */ + #define R_DSILINK_RXSR_EXTEDET_Msk (0x8000UL) /*!< EXTEDET (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_MLFERR_Pos (16UL) /*!< MLFERR (Bit 16) */ + #define R_DSILINK_RXSR_MLFERR_Msk (0x10000UL) /*!< MLFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_ECCERRM_Pos (17UL) /*!< ECCERRM (Bit 17) */ + #define R_DSILINK_RXSR_ECCERRM_Msk (0x20000UL) /*!< ECCERRM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_UNEXERR_Pos (18UL) /*!< UNEXERR (Bit 18) */ + #define R_DSILINK_RXSR_UNEXERR_Msk (0x40000UL) /*!< UNEXERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_WCERR_Pos (20UL) /*!< WCERR (Bit 20) */ + #define R_DSILINK_RXSR_WCERR_Msk (0x100000UL) /*!< WCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_CRCERR_Pos (21UL) /*!< CRCERR (Bit 21) */ + #define R_DSILINK_RXSR_CRCERR_Msk (0x200000UL) /*!< CRCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_IBERR_Pos (22UL) /*!< IBERR (Bit 22) */ + #define R_DSILINK_RXSR_IBERR_Msk (0x400000UL) /*!< IBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXOVFERR_Pos (23UL) /*!< RXOVFERR (Bit 23) */ + #define R_DSILINK_RXSR_RXOVFERR_Msk (0x800000UL) /*!< RXOVFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_PRTOERR_Pos (24UL) /*!< PRTOERR (Bit 24) */ + #define R_DSILINK_RXSR_PRTOERR_Msk (0x1000000UL) /*!< PRTOERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_NORESERR_Pos (25UL) /*!< NORESERR (Bit 25) */ + #define R_DSILINK_RXSR_NORESERR_Msk (0x2000000UL) /*!< NORESERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RSIZEERR_Pos (26UL) /*!< RSIZEERR (Bit 26) */ + #define R_DSILINK_RXSR_RSIZEERR_Msk (0x4000000UL) /*!< RSIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_ECCERRS_Pos (28UL) /*!< ECCERRS (Bit 28) */ + #define R_DSILINK_RXSR_ECCERRS_Msk (0x10000000UL) /*!< ECCERRS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXSR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ========================================================= RXSCR ========================================================= */ + #define R_DSILINK_RXSCR_BTAREND_Pos (0UL) /*!< BTAREND (Bit 0) */ + #define R_DSILINK_RXSCR_BTAREND_Msk (0x1UL) /*!< BTAREND (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_RXSCR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_RXSCR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXRESP_Pos (8UL) /*!< RXRESP (Bit 8) */ + #define R_DSILINK_RXSCR_RXRESP_Msk (0x100UL) /*!< RXRESP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXEOTP_Pos (10UL) /*!< RXEOTP (Bit 10) */ + #define R_DSILINK_RXSCR_RXEOTP_Msk (0x400UL) /*!< RXEOTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXTE_Pos (13UL) /*!< RXTE (Bit 13) */ + #define R_DSILINK_RXSCR_RXTE_Msk (0x2000UL) /*!< RXTE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXACK_Pos (14UL) /*!< RXACK (Bit 14) */ + #define R_DSILINK_RXSCR_RXACK_Msk (0x4000UL) /*!< RXACK (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_EXTEDET_Pos (15UL) /*!< EXTEDET (Bit 15) */ + #define R_DSILINK_RXSCR_EXTEDET_Msk (0x8000UL) /*!< EXTEDET (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_MLFERR_Pos (16UL) /*!< MLFERR (Bit 16) */ + #define R_DSILINK_RXSCR_MLFERR_Msk (0x10000UL) /*!< MLFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_ECCERRM_Pos (17UL) /*!< ECCERRM (Bit 17) */ + #define R_DSILINK_RXSCR_ECCERRM_Msk (0x20000UL) /*!< ECCERRM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_UNEXERR_Pos (18UL) /*!< UNEXERR (Bit 18) */ + #define R_DSILINK_RXSCR_UNEXERR_Msk (0x40000UL) /*!< UNEXERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_WCERR_Pos (20UL) /*!< WCERR (Bit 20) */ + #define R_DSILINK_RXSCR_WCERR_Msk (0x100000UL) /*!< WCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_CRCERR_Pos (21UL) /*!< CRCERR (Bit 21) */ + #define R_DSILINK_RXSCR_CRCERR_Msk (0x200000UL) /*!< CRCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_IBERR_Pos (22UL) /*!< IBERR (Bit 22) */ + #define R_DSILINK_RXSCR_IBERR_Msk (0x400000UL) /*!< IBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXOVFERR_Pos (23UL) /*!< RXOVFERR (Bit 23) */ + #define R_DSILINK_RXSCR_RXOVFERR_Msk (0x800000UL) /*!< RXOVFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_PRTOERR_Pos (24UL) /*!< PRTOERR (Bit 24) */ + #define R_DSILINK_RXSCR_PRTOERR_Msk (0x1000000UL) /*!< PRTOERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_NORESERR_Pos (25UL) /*!< NORESERR (Bit 25) */ + #define R_DSILINK_RXSCR_NORESERR_Msk (0x2000000UL) /*!< NORESERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RSIZEERR_Pos (26UL) /*!< RSIZEERR (Bit 26) */ + #define R_DSILINK_RXSCR_RSIZEERR_Msk (0x4000000UL) /*!< RSIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_ECCERRS_Pos (28UL) /*!< ECCERRS (Bit 28) */ + #define R_DSILINK_RXSCR_ECCERRS_Msk (0x10000000UL) /*!< ECCERRS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXSCR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXSCR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ========================================================= RXIER ========================================================= */ + #define R_DSILINK_RXIER_BTAREND_Pos (0UL) /*!< BTAREND (Bit 0) */ + #define R_DSILINK_RXIER_BTAREND_Msk (0x1UL) /*!< BTAREND (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_RXIER_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_RXIER_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXRESP_Pos (8UL) /*!< RXRESP (Bit 8) */ + #define R_DSILINK_RXIER_RXRESP_Msk (0x100UL) /*!< RXRESP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXEOTP_Pos (10UL) /*!< RXEOTP (Bit 10) */ + #define R_DSILINK_RXIER_RXEOTP_Msk (0x400UL) /*!< RXEOTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXTE_Pos (13UL) /*!< RXTE (Bit 13) */ + #define R_DSILINK_RXIER_RXTE_Msk (0x2000UL) /*!< RXTE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXACK_Pos (14UL) /*!< RXACK (Bit 14) */ + #define R_DSILINK_RXIER_RXACK_Msk (0x4000UL) /*!< RXACK (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_EXTEDET_Pos (15UL) /*!< EXTEDET (Bit 15) */ + #define R_DSILINK_RXIER_EXTEDET_Msk (0x8000UL) /*!< EXTEDET (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_MLFERR_Pos (16UL) /*!< MLFERR (Bit 16) */ + #define R_DSILINK_RXIER_MLFERR_Msk (0x10000UL) /*!< MLFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_ECCERRM_Pos (17UL) /*!< ECCERRM (Bit 17) */ + #define R_DSILINK_RXIER_ECCERRM_Msk (0x20000UL) /*!< ECCERRM (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_UNEXERR_Pos (18UL) /*!< UNEXERR (Bit 18) */ + #define R_DSILINK_RXIER_UNEXERR_Msk (0x40000UL) /*!< UNEXERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_WCERR_Pos (20UL) /*!< WCERR (Bit 20) */ + #define R_DSILINK_RXIER_WCERR_Msk (0x100000UL) /*!< WCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_CRCERR_Pos (21UL) /*!< CRCERR (Bit 21) */ + #define R_DSILINK_RXIER_CRCERR_Msk (0x200000UL) /*!< CRCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_IBERR_Pos (22UL) /*!< IBERR (Bit 22) */ + #define R_DSILINK_RXIER_IBERR_Msk (0x400000UL) /*!< IBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXOVFERR_Pos (23UL) /*!< RXOVFERR (Bit 23) */ + #define R_DSILINK_RXIER_RXOVFERR_Msk (0x800000UL) /*!< RXOVFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_PRTOERR_Pos (24UL) /*!< PRTOERR (Bit 24) */ + #define R_DSILINK_RXIER_PRTOERR_Msk (0x1000000UL) /*!< PRTOERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_NORESERR_Pos (25UL) /*!< NORESERR (Bit 25) */ + #define R_DSILINK_RXIER_NORESERR_Msk (0x2000000UL) /*!< NORESERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RSIZEERR_Pos (26UL) /*!< RSIZEERR (Bit 26) */ + #define R_DSILINK_RXIER_RSIZEERR_Msk (0x4000000UL) /*!< RSIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_ECCERRS_Pos (28UL) /*!< ECCERRS (Bit 28) */ + #define R_DSILINK_RXIER_ECCERRS_Msk (0x10000000UL) /*!< ECCERRS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXIER_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXIER_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ==================================================== PRESPTOBTASETR ===================================================== */ + #define R_DSILINK_PRESPTOBTASETR_PRTBTA_Pos (0UL) /*!< PRTBTA (Bit 0) */ + #define R_DSILINK_PRESPTOBTASETR_PRTBTA_Msk (0xffffffffUL) /*!< PRTBTA (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== PRESPTOLPSETR ===================================================== */ + #define R_DSILINK_PRESPTOLPSETR_LPWTO_Pos (0UL) /*!< LPWTO (Bit 0) */ + #define R_DSILINK_PRESPTOLPSETR_LPWTO_Msk (0xffffUL) /*!< LPWTO (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_PRESPTOLPSETR_LPRTO_Pos (16UL) /*!< LPRTO (Bit 16) */ + #define R_DSILINK_PRESPTOLPSETR_LPRTO_Msk (0xffff0000UL) /*!< LPRTO (Bitfield-Mask: 0xffff) */ +/* ===================================================== PRESPTOHSSETR ===================================================== */ + #define R_DSILINK_PRESPTOHSSETR_HSWTO_Pos (0UL) /*!< HSWTO (Bit 0) */ + #define R_DSILINK_PRESPTOHSSETR_HSWTO_Msk (0xffffUL) /*!< HSWTO (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_PRESPTOHSSETR_HSRTO_Pos (16UL) /*!< HSRTO (Bit 16) */ + #define R_DSILINK_PRESPTOHSSETR_HSRTO_Msk (0xffff0000UL) /*!< HSRTO (Bitfield-Mask: 0xffff) */ +/* ======================================================= AKEPLATIR ======================================================= */ + #define R_DSILINK_AKEPLATIR_EREP_Pos (0UL) /*!< EREP (Bit 0) */ + #define R_DSILINK_AKEPLATIR_EREP_Msk (0xffffUL) /*!< EREP (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_AKEPLATIR_VC_Pos (16UL) /*!< VC (Bit 16) */ + #define R_DSILINK_AKEPLATIR_VC_Msk (0xf0000UL) /*!< VC (Bitfield-Mask: 0x0f) */ +/* ======================================================= AKEPACMSR ======================================================= */ + #define R_DSILINK_AKEPACMSR_AEREP_Pos (0UL) /*!< AEREP (Bit 0) */ + #define R_DSILINK_AKEPACMSR_AEREP_Msk (0xffffUL) /*!< AEREP (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_AKEPACMSR_AVC_Pos (16UL) /*!< AVC (Bit 16) */ + #define R_DSILINK_AKEPACMSR_AVC_Msk (0xf0000UL) /*!< AVC (Bitfield-Mask: 0x0f) */ +/* ======================================================== AKEPSCR ======================================================== */ + #define R_DSILINK_AKEPSCR_AEREP_Pos (0UL) /*!< AEREP (Bit 0) */ + #define R_DSILINK_AKEPSCR_AEREP_Msk (0xffffUL) /*!< AEREP (Bitfield-Mask: 0xffff) */ + #define R_DSILINK_AKEPSCR_AVC_Pos (16UL) /*!< AVC (Bit 16) */ + #define R_DSILINK_AKEPSCR_AVC_Msk (0xf0000UL) /*!< AVC (Bitfield-Mask: 0x0f) */ +/* ======================================================== RXRSSR ========================================================= */ + #define R_DSILINK_RXRSSR_SLT0VLD_Pos (0UL) /*!< SLT0VLD (Bit 0) */ + #define R_DSILINK_RXRSSR_SLT0VLD_Msk (0x1UL) /*!< SLT0VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSR_SLT1VLD_Pos (1UL) /*!< SLT1VLD (Bit 1) */ + #define R_DSILINK_RXRSSR_SLT1VLD_Msk (0x2UL) /*!< SLT1VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSR_SLT2VLD_Pos (2UL) /*!< SLT2VLD (Bit 2) */ + #define R_DSILINK_RXRSSR_SLT2VLD_Msk (0x4UL) /*!< SLT2VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSR_SLT3VLD_Pos (3UL) /*!< SLT3VLD (Bit 3) */ + #define R_DSILINK_RXRSSR_SLT3VLD_Msk (0x8UL) /*!< SLT3VLD (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSSCR ======================================================== */ + #define R_DSILINK_RXRSSCR_SLT0VLD_Pos (0UL) /*!< SLT0VLD (Bit 0) */ + #define R_DSILINK_RXRSSCR_SLT0VLD_Msk (0x1UL) /*!< SLT0VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSCR_SLT1VLD_Pos (1UL) /*!< SLT1VLD (Bit 1) */ + #define R_DSILINK_RXRSSCR_SLT1VLD_Msk (0x2UL) /*!< SLT1VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSCR_SLT2VLD_Pos (2UL) /*!< SLT2VLD (Bit 2) */ + #define R_DSILINK_RXRSSCR_SLT2VLD_Msk (0x4UL) /*!< SLT2VLD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSSCR_SLT3VLD_Pos (3UL) /*!< SLT3VLD (Bit 3) */ + #define R_DSILINK_RXRSSCR_SLT3VLD_Msk (0x8UL) /*!< SLT3VLD (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRINFOOWSR ====================================================== */ + #define R_DSILINK_RXRINFOOWSR_SL0OW_Pos (0UL) /*!< SL0OW (Bit 0) */ + #define R_DSILINK_RXRINFOOWSR_SL0OW_Msk (0x1UL) /*!< SL0OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSR_SL1OW_Pos (1UL) /*!< SL1OW (Bit 1) */ + #define R_DSILINK_RXRINFOOWSR_SL1OW_Msk (0x2UL) /*!< SL1OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSR_SL2OW_Pos (2UL) /*!< SL2OW (Bit 2) */ + #define R_DSILINK_RXRINFOOWSR_SL2OW_Msk (0x4UL) /*!< SL2OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSR_SL3OW_Pos (3UL) /*!< SL3OW (Bit 3) */ + #define R_DSILINK_RXRINFOOWSR_SL3OW_Msk (0x8UL) /*!< SL3OW (Bitfield-Mask: 0x01) */ +/* ===================================================== RXRINFOOWSCR ====================================================== */ + #define R_DSILINK_RXRINFOOWSCR_SL0OW_Pos (0UL) /*!< SL0OW (Bit 0) */ + #define R_DSILINK_RXRINFOOWSCR_SL0OW_Msk (0x1UL) /*!< SL0OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSCR_SL1OW_Pos (1UL) /*!< SL1OW (Bit 1) */ + #define R_DSILINK_RXRINFOOWSCR_SL1OW_Msk (0x2UL) /*!< SL1OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSCR_SL2OW_Pos (2UL) /*!< SL2OW (Bit 2) */ + #define R_DSILINK_RXRINFOOWSCR_SL2OW_Msk (0x4UL) /*!< SL2OW (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRINFOOWSCR_SL3OW_Pos (3UL) /*!< SL3OW (Bit 3) */ + #define R_DSILINK_RXRINFOOWSCR_SL3OW_Msk (0x8UL) /*!< SL3OW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS0R ======================================================== */ + #define R_DSILINK_RXRSS0R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS0R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS0R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS0R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS0R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS0R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS0R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS0R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS0R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS0R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS0R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS0R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS0R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS0R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS0R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS0R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS0R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS1R ======================================================== */ + #define R_DSILINK_RXRSS1R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS1R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS1R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS1R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS1R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS1R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS1R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS1R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS1R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS1R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS1R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS1R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS1R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS1R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS1R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS1R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS1R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS2R ======================================================== */ + #define R_DSILINK_RXRSS2R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS2R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS2R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS2R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS2R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS2R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS2R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS2R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS2R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS2R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS2R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS2R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS2R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS2R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS2R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS2R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS2R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXRSS3R ======================================================== */ + #define R_DSILINK_RXRSS3R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS3R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS3R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS3R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS3R_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_RXRSS3R_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS3R_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_RXRSS3R_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS3R_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_RXRSS3R_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXSUC_Pos (25UL) /*!< RXSUC (Bit 25) */ + #define R_DSILINK_RXRSS3R_RXSUC_Msk (0x2000000UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_RXRSS3R_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_RXRSS3R_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_RXRSS3R_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXCERR_Pos (29UL) /*!< RXCERR (Bit 29) */ + #define R_DSILINK_RXRSS3R_RXCERR_Msk (0x20000000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_RXRSS3R_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_INFOOW_Pos (31UL) /*!< INFOOW (Bit 31) */ + #define R_DSILINK_RXRSS3R_INFOOW_Msk (0x80000000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS0R_L ======================================================= */ + #define R_DSILINK_RXRSS0R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS0R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS0R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS0R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS1R_L ======================================================= */ + #define R_DSILINK_RXRSS1R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS1R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS1R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS1R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS2R_L ======================================================= */ + #define R_DSILINK_RXRSS2R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS2R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS2R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS2R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS3R_L ======================================================= */ + #define R_DSILINK_RXRSS3R_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS3R_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXRSS3R_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXRSS3R_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS0R_LL ======================================================= */ + #define R_DSILINK_RXRSS0R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS0R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS1R_LL ======================================================= */ + #define R_DSILINK_RXRSS1R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS1R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS2R_LL ======================================================= */ + #define R_DSILINK_RXRSS2R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS2R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS3R_LL ======================================================= */ + #define R_DSILINK_RXRSS3R_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXRSS3R_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS0R_LH ======================================================= */ + #define R_DSILINK_RXRSS0R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS0R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS1R_LH ======================================================= */ + #define R_DSILINK_RXRSS1R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS1R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS2R_LH ======================================================= */ + #define R_DSILINK_RXRSS2R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS2R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ====================================================== RXRSS3R_LH ======================================================= */ + #define R_DSILINK_RXRSS3R_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_RXRSS3R_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ======================================================= RXRSS0R_H ======================================================= */ + #define R_DSILINK_RXRSS0R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS0R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS0R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS0R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS0R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS0R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS0R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS0R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS0R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS0R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS0R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS0R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS0R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS1R_H ======================================================= */ + #define R_DSILINK_RXRSS1R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS1R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS1R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS1R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS1R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS1R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS1R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS1R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS1R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS1R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS1R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS1R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS1R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS2R_H ======================================================= */ + #define R_DSILINK_RXRSS2R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS2R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS2R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS2R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS2R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS2R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS2R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS2R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS2R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS2R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS2R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS2R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS2R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================= RXRSS3R_H ======================================================= */ + #define R_DSILINK_RXRSS3R_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS3R_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS3R_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS3R_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_RXRSS3R_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_RXRSS3R_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXSUC_Pos (9UL) /*!< RXSUC (Bit 9) */ + #define R_DSILINK_RXRSS3R_H_RXSUC_Msk (0x200UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXFERR_Pos (10UL) /*!< RXFERR (Bit 10) */ + #define R_DSILINK_RXRSS3R_H_RXFERR_Msk (0x400UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXFAIL_Pos (11UL) /*!< RXFAIL (Bit 11) */ + #define R_DSILINK_RXRSS3R_H_RXFAIL_Msk (0x800UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXPFAIL_Pos (12UL) /*!< RXPFAIL (Bit 12) */ + #define R_DSILINK_RXRSS3R_H_RXPFAIL_Msk (0x1000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXCERR_Pos (13UL) /*!< RXCERR (Bit 13) */ + #define R_DSILINK_RXRSS3R_H_RXCERR_Msk (0x2000UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_RXAKE_Pos (14UL) /*!< RXAKE (Bit 14) */ + #define R_DSILINK_RXRSS3R_H_RXAKE_Msk (0x4000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_H_INFOOW_Pos (15UL) /*!< INFOOW (Bit 15) */ + #define R_DSILINK_RXRSS3R_H_INFOOW_Msk (0x8000UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS0R_HL ======================================================= */ + #define R_DSILINK_RXRSS0R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS0R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS0R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS0R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS1R_HL ======================================================= */ + #define R_DSILINK_RXRSS1R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS1R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS1R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS1R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS2R_HL ======================================================= */ + #define R_DSILINK_RXRSS2R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS2R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS2R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS2R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS3R_HL ======================================================= */ + #define R_DSILINK_RXRSS3R_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_RXRSS3R_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_RXRSS3R_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_RXRSS3R_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ====================================================== RXRSS0R_HH ======================================================= */ + #define R_DSILINK_RXRSS0R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS0R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS0R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS0R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS0R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS0R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS0R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS0R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS0R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS0R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS1R_HH ======================================================= */ + #define R_DSILINK_RXRSS1R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS1R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS1R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS1R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS1R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS1R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS1R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS1R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS1R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS1R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS2R_HH ======================================================= */ + #define R_DSILINK_RXRSS2R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS2R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS2R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS2R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS2R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS2R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS2R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS2R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS2R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS2R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ====================================================== RXRSS3R_HH ======================================================= */ + #define R_DSILINK_RXRSS3R_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_RXRSS3R_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXSUC_Pos (1UL) /*!< RXSUC (Bit 1) */ + #define R_DSILINK_RXRSS3R_HH_RXSUC_Msk (0x2UL) /*!< RXSUC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXFERR_Pos (2UL) /*!< RXFERR (Bit 2) */ + #define R_DSILINK_RXRSS3R_HH_RXFERR_Msk (0x4UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXFAIL_Pos (3UL) /*!< RXFAIL (Bit 3) */ + #define R_DSILINK_RXRSS3R_HH_RXFAIL_Msk (0x8UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXPFAIL_Pos (4UL) /*!< RXPFAIL (Bit 4) */ + #define R_DSILINK_RXRSS3R_HH_RXPFAIL_Msk (0x10UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXCERR_Pos (5UL) /*!< RXCERR (Bit 5) */ + #define R_DSILINK_RXRSS3R_HH_RXCERR_Msk (0x20UL) /*!< RXCERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_RXAKE_Pos (6UL) /*!< RXAKE (Bit 6) */ + #define R_DSILINK_RXRSS3R_HH_RXAKE_Msk (0x40UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_RXRSS3R_HH_INFOOW_Pos (7UL) /*!< INFOOW (Bit 7) */ + #define R_DSILINK_RXRSS3R_HH_INFOOW_Msk (0x80UL) /*!< INFOOW (Bitfield-Mask: 0x01) */ +/* ======================================================== RXPPD0R ======================================================== */ + #define R_DSILINK_RXPPD0R_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_RXPPD0R_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD0R_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_RXPPD0R_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD0R_DATA2_Pos (16UL) /*!< DATA2 (Bit 16) */ + #define R_DSILINK_RXPPD0R_DATA2_Msk (0xff0000UL) /*!< DATA2 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD0R_DATA3_Pos (24UL) /*!< DATA3 (Bit 24) */ + #define R_DSILINK_RXPPD0R_DATA3_Msk (0xff000000UL) /*!< DATA3 (Bitfield-Mask: 0xff) */ +/* ======================================================== RXPPD1R ======================================================== */ + #define R_DSILINK_RXPPD1R_DATA4_Pos (0UL) /*!< DATA4 (Bit 0) */ + #define R_DSILINK_RXPPD1R_DATA4_Msk (0xffUL) /*!< DATA4 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD1R_DATA5_Pos (8UL) /*!< DATA5 (Bit 8) */ + #define R_DSILINK_RXPPD1R_DATA5_Msk (0xff00UL) /*!< DATA5 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD1R_DATA6_Pos (16UL) /*!< DATA6 (Bit 16) */ + #define R_DSILINK_RXPPD1R_DATA6_Msk (0xff0000UL) /*!< DATA6 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD1R_DATA7_Pos (24UL) /*!< DATA7 (Bit 24) */ + #define R_DSILINK_RXPPD1R_DATA7_Msk (0xff000000UL) /*!< DATA7 (Bitfield-Mask: 0xff) */ +/* ======================================================== RXPPD2R ======================================================== */ + #define R_DSILINK_RXPPD2R_DATA8_Pos (0UL) /*!< DATA8 (Bit 0) */ + #define R_DSILINK_RXPPD2R_DATA8_Msk (0xffUL) /*!< DATA8 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD2R_DATA9_Pos (8UL) /*!< DATA9 (Bit 8) */ + #define R_DSILINK_RXPPD2R_DATA9_Msk (0xff00UL) /*!< DATA9 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD2R_DATA10_Pos (16UL) /*!< DATA10 (Bit 16) */ + #define R_DSILINK_RXPPD2R_DATA10_Msk (0xff0000UL) /*!< DATA10 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD2R_DATA11_Pos (24UL) /*!< DATA11 (Bit 24) */ + #define R_DSILINK_RXPPD2R_DATA11_Msk (0xff000000UL) /*!< DATA11 (Bitfield-Mask: 0xff) */ +/* ======================================================== RXPPD3R ======================================================== */ + #define R_DSILINK_RXPPD3R_DATA12_Pos (0UL) /*!< DATA12 (Bit 0) */ + #define R_DSILINK_RXPPD3R_DATA12_Msk (0xffUL) /*!< DATA12 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD3R_DATA13_Pos (8UL) /*!< DATA13 (Bit 8) */ + #define R_DSILINK_RXPPD3R_DATA13_Msk (0xff00UL) /*!< DATA13 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD3R_DATA14_Pos (16UL) /*!< DATA14 (Bit 16) */ + #define R_DSILINK_RXPPD3R_DATA14_Msk (0xff0000UL) /*!< DATA14 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_RXPPD3R_DATA15_Pos (24UL) /*!< DATA15 (Bit 24) */ + #define R_DSILINK_RXPPD3R_DATA15_Msk (0xff000000UL) /*!< DATA15 (Bitfield-Mask: 0xff) */ +/* ====================================================== HSTXTOSETR ======================================================= */ + #define R_DSILINK_HSTXTOSETR_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_HSTXTOSETR_HTXTO_Msk (0xffffffffUL) /*!< HTXTO (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== LRXHTOSETR ======================================================= */ + #define R_DSILINK_LRXHTOSETR_LRXHTO_Pos (0UL) /*!< LRXHTO (Bit 0) */ + #define R_DSILINK_LRXHTOSETR_LRXHTO_Msk (0xffffffffUL) /*!< LRXHTO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TATOSETR ======================================================== */ + #define R_DSILINK_TATOSETR_TATO_Pos (0UL) /*!< TATO (Bit 0) */ + #define R_DSILINK_TATOSETR_TATO_Msk (0xffffffffUL) /*!< TATO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== FERRSR ========================================================= */ + #define R_DSILINK_FERRSR_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_FERRSR_HTXTO_Msk (0x1UL) /*!< HTXTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_FERRSR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_FERRSR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_ESCENT_Pos (16UL) /*!< ESCENT (Bit 16) */ + #define R_DSILINK_FERRSR_ESCENT_Msk (0x10000UL) /*!< ESCENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_SYNCESC_Pos (17UL) /*!< SYNCESC (Bit 17) */ + #define R_DSILINK_FERRSR_SYNCESC_Msk (0x20000UL) /*!< SYNCESC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CTRL_Pos (18UL) /*!< CTRL (Bit 18) */ + #define R_DSILINK_FERRSR_CTRL_Msk (0x40000UL) /*!< CTRL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP0_Pos (19UL) /*!< CLP0 (Bit 19) */ + #define R_DSILINK_FERRSR_CLP0_Msk (0x80000UL) /*!< CLP0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP1_Pos (20UL) /*!< CLP1 (Bit 20) */ + #define R_DSILINK_FERRSR_CLP1_Msk (0x100000UL) /*!< CLP1 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP0S_Pos (27UL) /*!< CLP0S (Bit 27) */ + #define R_DSILINK_FERRSR_CLP0S_Msk (0x8000000UL) /*!< CLP0S (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSR_CLP1S_Pos (28UL) /*!< CLP1S (Bit 28) */ + #define R_DSILINK_FERRSR_CLP1S_Msk (0x10000000UL) /*!< CLP1S (Bitfield-Mask: 0x01) */ +/* ======================================================== FERRSCR ======================================================== */ + #define R_DSILINK_FERRSCR_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_FERRSCR_HTXTO_Msk (0x1UL) /*!< HTXTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_FERRSCR_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_FERRSCR_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_ESCENT_Pos (16UL) /*!< ESCENT (Bit 16) */ + #define R_DSILINK_FERRSCR_ESCENT_Msk (0x10000UL) /*!< ESCENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_SYNCESC_Pos (17UL) /*!< SYNCESC (Bit 17) */ + #define R_DSILINK_FERRSCR_SYNCESC_Msk (0x20000UL) /*!< SYNCESC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_CTRL_Pos (18UL) /*!< CTRL (Bit 18) */ + #define R_DSILINK_FERRSCR_CTRL_Msk (0x40000UL) /*!< CTRL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_CLP0_Pos (19UL) /*!< CLP0 (Bit 19) */ + #define R_DSILINK_FERRSCR_CLP0_Msk (0x80000UL) /*!< CLP0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRSCR_CLP1_Pos (20UL) /*!< CLP1 (Bit 20) */ + #define R_DSILINK_FERRSCR_CLP1_Msk (0x100000UL) /*!< CLP1 (Bitfield-Mask: 0x01) */ +/* ======================================================== FERRIER ======================================================== */ + #define R_DSILINK_FERRIER_HTXTO_Pos (0UL) /*!< HTXTO (Bit 0) */ + #define R_DSILINK_FERRIER_HTXTO_Msk (0x1UL) /*!< HTXTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_LRXHTO_Pos (1UL) /*!< LRXHTO (Bit 1) */ + #define R_DSILINK_FERRIER_LRXHTO_Msk (0x2UL) /*!< LRXHTO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_TATO_Pos (2UL) /*!< TATO (Bit 2) */ + #define R_DSILINK_FERRIER_TATO_Msk (0x4UL) /*!< TATO (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_ESCENT_Pos (16UL) /*!< ESCENT (Bit 16) */ + #define R_DSILINK_FERRIER_ESCENT_Msk (0x10000UL) /*!< ESCENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_SYNCESC_Pos (17UL) /*!< SYNCESC (Bit 17) */ + #define R_DSILINK_FERRIER_SYNCESC_Msk (0x20000UL) /*!< SYNCESC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_CTRL_Pos (18UL) /*!< CTRL (Bit 18) */ + #define R_DSILINK_FERRIER_CTRL_Msk (0x40000UL) /*!< CTRL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_CLP0_Pos (19UL) /*!< CLP0 (Bit 19) */ + #define R_DSILINK_FERRIER_CLP0_Msk (0x80000UL) /*!< CLP0 (Bitfield-Mask: 0x01) */ + #define R_DSILINK_FERRIER_CLP1_Pos (20UL) /*!< CLP1 (Bit 20) */ + #define R_DSILINK_FERRIER_CLP1_Msk (0x100000UL) /*!< CLP1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CLSTPTSETR ======================================================= */ + #define R_DSILINK_CLSTPTSETR_CLKSTPT_Pos (2UL) /*!< CLKSTPT (Bit 2) */ + #define R_DSILINK_CLSTPTSETR_CLKSTPT_Msk (0xffcUL) /*!< CLKSTPT (Bitfield-Mask: 0x3ff) */ + #define R_DSILINK_CLSTPTSETR_CLKBFHT_Pos (16UL) /*!< CLKBFHT (Bit 16) */ + #define R_DSILINK_CLSTPTSETR_CLKBFHT_Msk (0xff0000UL) /*!< CLKBFHT (Bitfield-Mask: 0xff) */ + #define R_DSILINK_CLSTPTSETR_CLKKPT_Pos (24UL) /*!< CLKKPT (Bit 24) */ + #define R_DSILINK_CLSTPTSETR_CLKKPT_Msk (0xff000000UL) /*!< CLKKPT (Bitfield-Mask: 0xff) */ +/* ====================================================== LPTRNSTSETR ====================================================== */ + #define R_DSILINK_LPTRNSTSETR_GOLPBKT_Pos (0UL) /*!< GOLPBKT (Bit 0) */ + #define R_DSILINK_LPTRNSTSETR_GOLPBKT_Msk (0x3ffUL) /*!< GOLPBKT (Bitfield-Mask: 0x3ff) */ +/* ========================================================= PLSR ========================================================== */ + #define R_DSILINK_PLSR_CLUAN_Pos (0UL) /*!< CLUAN (Bit 0) */ + #define R_DSILINK_PLSR_CLUAN_Msk (0x1UL) /*!< CLUAN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLSTP_Pos (1UL) /*!< CLSTP (Bit 1) */ + #define R_DSILINK_PLSR_CLSTP_Msk (0x2UL) /*!< CLSTP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0RLE_Pos (2UL) /*!< DL0RLE (Bit 2) */ + #define R_DSILINK_PLSR_DL0RLE_Msk (0x4UL) /*!< DL0RLE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0RUE_Pos (3UL) /*!< DL0RUE (Bit 3) */ + #define R_DSILINK_PLSR_DL0RUE_Msk (0x8UL) /*!< DL0RUE (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0UAN_Pos (4UL) /*!< DL0UAN (Bit 4) */ + #define R_DSILINK_PLSR_DL0UAN_Msk (0x10UL) /*!< DL0UAN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL1UAN_Pos (5UL) /*!< DL1UAN (Bit 5) */ + #define R_DSILINK_PLSR_DL1UAN_Msk (0x20UL) /*!< DL1UAN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0STP_Pos (8UL) /*!< DL0STP (Bit 8) */ + #define R_DSILINK_PLSR_DL0STP_Msk (0x100UL) /*!< DL0STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL1STP_Pos (9UL) /*!< DL1STP (Bit 9) */ + #define R_DSILINK_PLSR_DL1STP_Msk (0x200UL) /*!< DL1STP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0RX2TX_Pos (12UL) /*!< DL0RX2TX (Bit 12) */ + #define R_DSILINK_PLSR_DL0RX2TX_Msk (0x1000UL) /*!< DL0RX2TX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0TX2RX_Pos (13UL) /*!< DL0TX2RX (Bit 13) */ + #define R_DSILINK_PLSR_DL0TX2RX_Msk (0x2000UL) /*!< DL0TX2RX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DL0DIR_Pos (15UL) /*!< DL0DIR (Bit 15) */ + #define R_DSILINK_PLSR_DL0DIR_Msk (0x8000UL) /*!< DL0DIR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLULPENT_Pos (24UL) /*!< CLULPENT (Bit 24) */ + #define R_DSILINK_PLSR_CLULPENT_Msk (0x1000000UL) /*!< CLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLULPEXT_Pos (25UL) /*!< CLULPEXT (Bit 25) */ + #define R_DSILINK_PLSR_CLULPEXT_Msk (0x2000000UL) /*!< CLULPEXT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLLP2HS_Pos (26UL) /*!< CLLP2HS (Bit 26) */ + #define R_DSILINK_PLSR_CLLP2HS_Msk (0x4000000UL) /*!< CLLP2HS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_CLHS2LP_Pos (27UL) /*!< CLHS2LP (Bit 27) */ + #define R_DSILINK_PLSR_CLHS2LP_Msk (0x8000000UL) /*!< CLHS2LP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DLULPENT_Pos (28UL) /*!< DLULPENT (Bit 28) */ + #define R_DSILINK_PLSR_DLULPENT_Msk (0x10000000UL) /*!< DLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSR_DLULPEXT_Pos (29UL) /*!< DLULPEXT (Bit 29) */ + #define R_DSILINK_PLSR_DLULPEXT_Msk (0x20000000UL) /*!< DLULPEXT (Bitfield-Mask: 0x01) */ +/* ========================================================= PLSCR ========================================================= */ + #define R_DSILINK_PLSCR_DL0RX2TX_Pos (12UL) /*!< DL0RX2TX (Bit 12) */ + #define R_DSILINK_PLSCR_DL0RX2TX_Msk (0x1000UL) /*!< DL0RX2TX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_DL0TX2RX_Pos (13UL) /*!< DL0TX2RX (Bit 13) */ + #define R_DSILINK_PLSCR_DL0TX2RX_Msk (0x2000UL) /*!< DL0TX2RX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLULPENT_Pos (24UL) /*!< CLULPENT (Bit 24) */ + #define R_DSILINK_PLSCR_CLULPENT_Msk (0x1000000UL) /*!< CLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLULPEXT_Pos (25UL) /*!< CLULPEXT (Bit 25) */ + #define R_DSILINK_PLSCR_CLULPEXT_Msk (0x2000000UL) /*!< CLULPEXT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLLP2HS_Pos (26UL) /*!< CLLP2HS (Bit 26) */ + #define R_DSILINK_PLSCR_CLLP2HS_Msk (0x4000000UL) /*!< CLLP2HS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_CLHS2LP_Pos (27UL) /*!< CLHS2LP (Bit 27) */ + #define R_DSILINK_PLSCR_CLHS2LP_Msk (0x8000000UL) /*!< CLHS2LP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_DLULPENT_Pos (28UL) /*!< DLULPENT (Bit 28) */ + #define R_DSILINK_PLSCR_DLULPENT_Msk (0x10000000UL) /*!< DLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLSCR_DLULPEXT_Pos (29UL) /*!< DLULPEXT (Bit 29) */ + #define R_DSILINK_PLSCR_DLULPEXT_Msk (0x20000000UL) /*!< DLULPEXT (Bitfield-Mask: 0x01) */ +/* ========================================================= PLIER ========================================================= */ + #define R_DSILINK_PLIER_DL0RX2TX_Pos (12UL) /*!< DL0RX2TX (Bit 12) */ + #define R_DSILINK_PLIER_DL0RX2TX_Msk (0x1000UL) /*!< DL0RX2TX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_DL0TX2RX_Pos (13UL) /*!< DL0TX2RX (Bit 13) */ + #define R_DSILINK_PLIER_DL0TX2RX_Msk (0x2000UL) /*!< DL0TX2RX (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLULPENT_Pos (24UL) /*!< CLULPENT (Bit 24) */ + #define R_DSILINK_PLIER_CLULPENT_Msk (0x1000000UL) /*!< CLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLULPEXT_Pos (25UL) /*!< CLULPEXT (Bit 25) */ + #define R_DSILINK_PLIER_CLULPEXT_Msk (0x2000000UL) /*!< CLULPEXT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLLP2HS_Pos (26UL) /*!< CLLP2HS (Bit 26) */ + #define R_DSILINK_PLIER_CLLP2HS_Msk (0x4000000UL) /*!< CLLP2HS (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_CLHS2LP_Pos (27UL) /*!< CLHS2LP (Bit 27) */ + #define R_DSILINK_PLIER_CLHS2LP_Msk (0x8000000UL) /*!< CLHS2LP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_DLULPENT_Pos (28UL) /*!< DLULPENT (Bit 28) */ + #define R_DSILINK_PLIER_DLULPENT_Msk (0x10000000UL) /*!< DLULPENT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_PLIER_DLULPEXT_Pos (29UL) /*!< DLULPEXT (Bit 29) */ + #define R_DSILINK_PLIER_DLULPEXT_Msk (0x20000000UL) /*!< DLULPEXT (Bitfield-Mask: 0x01) */ +/* ======================================================== VMSET0R ======================================================== */ + #define R_DSILINK_VMSET0R_VSTART_Pos (0UL) /*!< VSTART (Bit 0) */ + #define R_DSILINK_VMSET0R_VSTART_Msk (0x1UL) /*!< VSTART (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_VSTOP_Pos (1UL) /*!< VSTOP (Bit 1) */ + #define R_DSILINK_VMSET0R_VSTOP_Msk (0x2UL) /*!< VSTOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_HSANOLP_Pos (8UL) /*!< HSANOLP (Bit 8) */ + #define R_DSILINK_VMSET0R_HSANOLP_Msk (0x100UL) /*!< HSANOLP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_HBPNOLP_Pos (9UL) /*!< HBPNOLP (Bit 9) */ + #define R_DSILINK_VMSET0R_HBPNOLP_Msk (0x200UL) /*!< HBPNOLP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSET0R_HFPNOLP_Pos (10UL) /*!< HFPNOLP (Bit 10) */ + #define R_DSILINK_VMSET0R_HFPNOLP_Msk (0x400UL) /*!< HFPNOLP (Bitfield-Mask: 0x01) */ +/* ======================================================== VMSET1R ======================================================== */ + #define R_DSILINK_VMSET1R_DLY_Pos (2UL) /*!< DLY (Bit 2) */ + #define R_DSILINK_VMSET1R_DLY_Msk (0x3ffcUL) /*!< DLY (Bitfield-Mask: 0xfff) */ +/* ========================================================= VMSR ========================================================== */ + #define R_DSILINK_VMSR_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_VMSR_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_STOP_Pos (1UL) /*!< STOP (Bit 1) */ + #define R_DSILINK_VMSR_STOP_Msk (0x2UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_RUNNING_Pos (2UL) /*!< RUNNING (Bit 2) */ + #define R_DSILINK_VMSR_RUNNING_Msk (0x4UL) /*!< RUNNING (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_VIRDY_Pos (3UL) /*!< VIRDY (Bit 3) */ + #define R_DSILINK_VMSR_VIRDY_Msk (0x8UL) /*!< VIRDY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_TIMERR_Pos (20UL) /*!< TIMERR (Bit 20) */ + #define R_DSILINK_VMSR_TIMERR_Msk (0x100000UL) /*!< TIMERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_VBUFUDF_Pos (22UL) /*!< VBUFUDF (Bit 22) */ + #define R_DSILINK_VMSR_VBUFUDF_Msk (0x400000UL) /*!< VBUFUDF (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSR_VBUFOVF_Pos (23UL) /*!< VBUFOVF (Bit 23) */ + #define R_DSILINK_VMSR_VBUFOVF_Msk (0x800000UL) /*!< VBUFOVF (Bitfield-Mask: 0x01) */ +/* ========================================================= VMSCR ========================================================= */ + #define R_DSILINK_VMSCR_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_VMSCR_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_STOP_Pos (1UL) /*!< STOP (Bit 1) */ + #define R_DSILINK_VMSCR_STOP_Msk (0x2UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_VIRDY_Pos (3UL) /*!< VIRDY (Bit 3) */ + #define R_DSILINK_VMSCR_VIRDY_Msk (0x8UL) /*!< VIRDY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_TIMERR_Pos (20UL) /*!< TIMERR (Bit 20) */ + #define R_DSILINK_VMSCR_TIMERR_Msk (0x100000UL) /*!< TIMERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_VBUFUDF_Pos (22UL) /*!< VBUFUDF (Bit 22) */ + #define R_DSILINK_VMSCR_VBUFUDF_Msk (0x400000UL) /*!< VBUFUDF (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMSCR_VBUFOVF_Pos (23UL) /*!< VBUFOVF (Bit 23) */ + #define R_DSILINK_VMSCR_VBUFOVF_Msk (0x800000UL) /*!< VBUFOVF (Bitfield-Mask: 0x01) */ +/* ========================================================= VMIER ========================================================= */ + #define R_DSILINK_VMIER_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_VMIER_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_STOP_Pos (1UL) /*!< STOP (Bit 1) */ + #define R_DSILINK_VMIER_STOP_Msk (0x2UL) /*!< STOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_VIRDY_Pos (3UL) /*!< VIRDY (Bit 3) */ + #define R_DSILINK_VMIER_VIRDY_Msk (0x8UL) /*!< VIRDY (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_TIMERR_Pos (20UL) /*!< TIMERR (Bit 20) */ + #define R_DSILINK_VMIER_TIMERR_Msk (0x100000UL) /*!< TIMERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_VBUFUDF_Pos (22UL) /*!< VBUFUDF (Bit 22) */ + #define R_DSILINK_VMIER_VBUFUDF_Msk (0x400000UL) /*!< VBUFUDF (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMIER_VBUFOVF_Pos (23UL) /*!< VBUFOVF (Bit 23) */ + #define R_DSILINK_VMIER_VBUFOVF_Msk (0x800000UL) /*!< VBUFOVF (Bitfield-Mask: 0x01) */ +/* ======================================================= VMPPSETR ======================================================== */ + #define R_DSILINK_VMPPSETR_TXESYNC_Pos (15UL) /*!< TXESYNC (Bit 15) */ + #define R_DSILINK_VMPPSETR_TXESYNC_Msk (0x8000UL) /*!< TXESYNC (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMPPSETR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_VMPPSETR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_VMPPSETR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_VMPPSETR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ======================================================= VMVSSETR ======================================================== */ + #define R_DSILINK_VMVSSETR_VSA_Pos (0UL) /*!< VSA (Bit 0) */ + #define R_DSILINK_VMVSSETR_VSA_Msk (0xfffUL) /*!< VSA (Bitfield-Mask: 0xfff) */ + #define R_DSILINK_VMVSSETR_VSPOL_Pos (15UL) /*!< VSPOL (Bit 15) */ + #define R_DSILINK_VMVSSETR_VSPOL_Msk (0x8000UL) /*!< VSPOL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMVSSETR_VACT_Pos (16UL) /*!< VACT (Bit 16) */ + #define R_DSILINK_VMVSSETR_VACT_Msk (0x7fff0000UL) /*!< VACT (Bitfield-Mask: 0x7fff) */ +/* ======================================================= VMVPSETR ======================================================== */ + #define R_DSILINK_VMVPSETR_VBP_Pos (0UL) /*!< VBP (Bit 0) */ + #define R_DSILINK_VMVPSETR_VBP_Msk (0x1fffUL) /*!< VBP (Bitfield-Mask: 0x1fff) */ + #define R_DSILINK_VMVPSETR_VFP_Pos (16UL) /*!< VFP (Bit 16) */ + #define R_DSILINK_VMVPSETR_VFP_Msk (0x1fff0000UL) /*!< VFP (Bitfield-Mask: 0x1fff) */ +/* ======================================================= VMHSSETR ======================================================== */ + #define R_DSILINK_VMHSSETR_HSA_Pos (0UL) /*!< HSA (Bit 0) */ + #define R_DSILINK_VMHSSETR_HSA_Msk (0xfffUL) /*!< HSA (Bitfield-Mask: 0xfff) */ + #define R_DSILINK_VMHSSETR_HSPOL_Pos (15UL) /*!< HSPOL (Bit 15) */ + #define R_DSILINK_VMHSSETR_HSPOL_Msk (0x8000UL) /*!< HSPOL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_VMHSSETR_HACT_Pos (16UL) /*!< HACT (Bit 16) */ + #define R_DSILINK_VMHSSETR_HACT_Msk (0x7fff0000UL) /*!< HACT (Bitfield-Mask: 0x7fff) */ +/* ======================================================= VMHPSETR ======================================================== */ + #define R_DSILINK_VMHPSETR_HBP_Pos (0UL) /*!< HBP (Bit 0) */ + #define R_DSILINK_VMHPSETR_HBP_Msk (0x1fffUL) /*!< HBP (Bitfield-Mask: 0x1fff) */ + #define R_DSILINK_VMHPSETR_HFP_Pos (16UL) /*!< HFP (Bit 16) */ + #define R_DSILINK_VMHPSETR_HFP_Msk (0x1fff0000UL) /*!< HFP (Bitfield-Mask: 0x1fff) */ +/* ====================================================== SQCH0SET0R ======================================================= */ + #define R_DSILINK_SQCH0SET0R_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_SQCH0SET0R_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ======================================================== SQCH0SR ======================================================== */ + #define R_DSILINK_SQCH0SR_RUNNING_Pos (2UL) /*!< RUNNING (Bit 2) */ + #define R_DSILINK_SQCH0SR_RUNNING_Msk (0x4UL) /*!< RUNNING (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH0SR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH0SR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH0SR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH0SR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH0SR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH0SR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH0SR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH0SR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH0SR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH0SR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH0SCR ======================================================== */ + #define R_DSILINK_SQCH0SCR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH0SCR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH0SCR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH0SCR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH0SCR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH0SCR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH0SCR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH0SCR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH0SCR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH0SCR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0SCR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH0SCR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH0IER ======================================================== */ + #define R_DSILINK_SQCH0IER_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH0IER_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH0IER_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH0IER_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH0IER_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH0IER_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH0IER_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH0IER_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH0IER_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH0IER_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0IER_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH0IER_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ====================================================== SQCH1SET0R ======================================================= */ + #define R_DSILINK_SQCH1SET0R_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_DSILINK_SQCH1SET0R_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ======================================================== SQCH1SR ======================================================== */ + #define R_DSILINK_SQCH1SR_RUNNING_Pos (2UL) /*!< RUNNING (Bit 2) */ + #define R_DSILINK_SQCH1SR_RUNNING_Msk (0x4UL) /*!< RUNNING (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH1SR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH1SR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH1SR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH1SR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH1SR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH1SR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH1SR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH1SR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH1SR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH1SR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH1SCR ======================================================== */ + #define R_DSILINK_SQCH1SCR_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH1SCR_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH1SCR_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH1SCR_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH1SCR_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH1SCR_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH1SCR_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH1SCR_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH1SCR_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH1SCR_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1SCR_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH1SCR_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ======================================================= SQCH1IER ======================================================== */ + #define R_DSILINK_SQCH1IER_AACTFIN_Pos (4UL) /*!< AACTFIN (Bit 4) */ + #define R_DSILINK_SQCH1IER_AACTFIN_Msk (0x10UL) /*!< AACTFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_ADESFIN_Pos (8UL) /*!< ADESFIN (Bit 8) */ + #define R_DSILINK_SQCH1IER_ADESFIN_Msk (0x100UL) /*!< ADESFIN (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_DABORT_Pos (16UL) /*!< DABORT (Bit 16) */ + #define R_DSILINK_SQCH1IER_DABORT_Msk (0x10000UL) /*!< DABORT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_SIZEERR_Pos (19UL) /*!< SIZEERR (Bit 19) */ + #define R_DSILINK_SQCH1IER_SIZEERR_Msk (0x80000UL) /*!< SIZEERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_TXIBERR_Pos (24UL) /*!< TXIBERR (Bit 24) */ + #define R_DSILINK_SQCH1IER_TXIBERR_Msk (0x1000000UL) /*!< TXIBERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXFERR_Pos (26UL) /*!< RXFERR (Bit 26) */ + #define R_DSILINK_SQCH1IER_RXFERR_Msk (0x4000000UL) /*!< RXFERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXFAIL_Pos (27UL) /*!< RXFAIL (Bit 27) */ + #define R_DSILINK_SQCH1IER_RXFAIL_Msk (0x8000000UL) /*!< RXFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXPFAIL_Pos (28UL) /*!< RXPFAIL (Bit 28) */ + #define R_DSILINK_SQCH1IER_RXPFAIL_Msk (0x10000000UL) /*!< RXPFAIL (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXCORERR_Pos (29UL) /*!< RXCORERR (Bit 29) */ + #define R_DSILINK_SQCH1IER_RXCORERR_Msk (0x20000000UL) /*!< RXCORERR (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1IER_RXAKE_Pos (30UL) /*!< RXAKE (Bit 30) */ + #define R_DSILINK_SQCH1IER_RXAKE_Msk (0x40000000UL) /*!< RXAKE (Bitfield-Mask: 0x01) */ +/* ====================================================== SQCH0DSC0AR ====================================================== */ + #define R_DSILINK_SQCH0DSC0AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC0AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC0AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC0AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC0AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC0AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC0AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC0AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC0AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC0AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC0AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC1AR ====================================================== */ + #define R_DSILINK_SQCH0DSC1AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC1AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC1AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC1AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC1AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC1AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC1AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC1AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC1AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC1AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC1AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC2AR ====================================================== */ + #define R_DSILINK_SQCH0DSC2AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC2AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC2AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC2AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC2AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC2AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC2AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC2AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC2AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC2AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC2AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC3AR ====================================================== */ + #define R_DSILINK_SQCH0DSC3AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC3AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC3AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC3AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC3AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC3AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC3AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC3AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC3AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC3AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC3AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC4AR ====================================================== */ + #define R_DSILINK_SQCH0DSC4AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC4AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC4AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC4AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC4AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC4AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC4AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC4AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC4AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC4AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC4AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC5AR ====================================================== */ + #define R_DSILINK_SQCH0DSC5AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC5AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC5AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC5AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC5AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC5AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC5AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC5AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC5AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC5AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC5AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC6AR ====================================================== */ + #define R_DSILINK_SQCH0DSC6AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC6AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC6AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC6AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC6AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC6AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC6AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC6AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC6AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC6AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC6AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC7AR ====================================================== */ + #define R_DSILINK_SQCH0DSC7AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC7AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC7AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC7AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH0DSC7AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC7AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH0DSC7AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH0DSC7AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH0DSC7AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH0DSC7AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH0DSC7AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC0AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC0AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC1AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC1AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC2AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC2AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC3AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC3AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC4AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC4AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC5AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC5AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC6AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC6AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC7AR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH0DSC7AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7AR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7AR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC0AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC0AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC0AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC0AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC0AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC0AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC0AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC1AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC1AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC1AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC1AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC1AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC1AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC1AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC2AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC2AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC2AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC2AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC2AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC2AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC2AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC3AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC3AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC3AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC3AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC3AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC3AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC3AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC4AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC4AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC4AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC4AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC4AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC4AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC4AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC5AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC5AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC5AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC5AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC5AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC5AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC5AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC6AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC6AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC6AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC6AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC6AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC6AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC6AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH0DSC7AR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC7AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC7AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH0DSC7AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH0DSC7AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH0DSC7AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH0DSC7AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC0AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC0AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC0AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC1AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC1AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC1AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC2AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC2AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC2AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC3AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC3AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC3AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC4AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC4AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC4AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC5AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC5AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC5AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC6AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC6AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC6AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC7AR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH0DSC7AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH0DSC7AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC0AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC0AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC0AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC0AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC0AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC0AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC1AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC1AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC1AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC1AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC1AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC1AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC2AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC2AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC2AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC2AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC2AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC2AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC3AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC3AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC3AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC3AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC3AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC3AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC4AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC4AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC4AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC4AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC4AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC4AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC5AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC5AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC5AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC5AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC5AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC5AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC6AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC6AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC6AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC6AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC6AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC6AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH0DSC7AR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC7AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH0DSC7AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH0DSC7AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH0DSC7AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH0DSC7AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC0BR ====================================================== */ + #define R_DSILINK_SQCH0DSC0BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC0BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC1BR ====================================================== */ + #define R_DSILINK_SQCH0DSC1BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC1BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC2BR ====================================================== */ + #define R_DSILINK_SQCH0DSC2BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC2BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC3BR ====================================================== */ + #define R_DSILINK_SQCH0DSC3BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC3BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC4BR ====================================================== */ + #define R_DSILINK_SQCH0DSC4BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC4BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC5BR ====================================================== */ + #define R_DSILINK_SQCH0DSC5BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC5BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC6BR ====================================================== */ + #define R_DSILINK_SQCH0DSC6BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC6BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC7BR ====================================================== */ + #define R_DSILINK_SQCH0DSC7BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH0DSC7BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH0DSC0CR ====================================================== */ + #define R_DSILINK_SQCH0DSC0CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC0CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC0CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC1CR ====================================================== */ + #define R_DSILINK_SQCH0DSC1CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC1CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC1CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC2CR ====================================================== */ + #define R_DSILINK_SQCH0DSC2CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC2CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC2CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC3CR ====================================================== */ + #define R_DSILINK_SQCH0DSC3CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC3CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC3CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC4CR ====================================================== */ + #define R_DSILINK_SQCH0DSC4CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC4CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC4CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC5CR ====================================================== */ + #define R_DSILINK_SQCH0DSC5CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC5CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC5CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC6CR ====================================================== */ + #define R_DSILINK_SQCH0DSC6CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC6CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC6CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC7CR ====================================================== */ + #define R_DSILINK_SQCH0DSC7CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH0DSC7CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH0DSC7CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC0CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC1CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC2CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC3CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC4CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC5CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC6CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC7CR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC0CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC1CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC2CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC3CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC4CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC5CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC6CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC7CR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH0DSC0CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC0CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC0CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC0CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC1CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC1CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC1CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC1CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC2CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC2CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC2CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC2CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC3CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC3CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC3CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC3CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC4CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC4CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC4CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC4CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC5CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC5CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC5CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC5CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC6CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC6CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC6CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC6CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC7CR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC7CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH0DSC7CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH0DSC7CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC0CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC1CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC1CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC2CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC2CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC3CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC3CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC4CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC4CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC5CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC5CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC6CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC6CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC7CR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH0DSC7CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH0DSC0CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC0CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC0CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC1CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC1CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC2CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC2CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC3CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC3CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC4CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC4CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC5CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC5CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC6CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC6CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7CR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC7CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH0DSC7CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH0DSC0DR ====================================================== */ + #define R_DSILINK_SQCH0DSC0DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC1DR ====================================================== */ + #define R_DSILINK_SQCH0DSC1DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC2DR ====================================================== */ + #define R_DSILINK_SQCH0DSC2DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC3DR ====================================================== */ + #define R_DSILINK_SQCH0DSC3DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC4DR ====================================================== */ + #define R_DSILINK_SQCH0DSC4DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC5DR ====================================================== */ + #define R_DSILINK_SQCH0DSC5DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC6DR ====================================================== */ + #define R_DSILINK_SQCH0DSC6DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH0DSC7DR ====================================================== */ + #define R_DSILINK_SQCH0DSC7DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== SQCH0DSC0DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC1DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC2DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC3DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC4DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC5DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC6DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC7DR_L ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ==================================================== SQCH0DSC0DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_LL ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_LH ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH0DSC0DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC1DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC2DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC3DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC4DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC5DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC6DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH0DSC7DR_H ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_H_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_H_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ==================================================== SQCH0DSC0DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_HL ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC0DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC0DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC0DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC1DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC1DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC1DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC2DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC2DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC2DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC3DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC3DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC3DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC4DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC4DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC4DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC5DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC5DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC5DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC6DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC6DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC6DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH0DSC7DR_HH ===================================================== */ + #define R_DSILINK_SQCH0DSC7DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH0DSC7DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC0AR ====================================================== */ + #define R_DSILINK_SQCH1DSC0AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC0AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC0AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC0AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC0AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC0AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC0AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC0AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC0AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC0AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC0AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC1AR ====================================================== */ + #define R_DSILINK_SQCH1DSC1AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC1AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC1AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC1AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC1AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC1AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC1AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC1AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC1AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC1AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC1AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC2AR ====================================================== */ + #define R_DSILINK_SQCH1DSC2AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC2AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC2AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC2AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC2AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC2AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC2AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC2AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC2AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC2AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC2AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC3AR ====================================================== */ + #define R_DSILINK_SQCH1DSC3AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC3AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC3AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC3AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC3AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC3AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC3AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC3AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC3AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC3AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC3AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC4AR ====================================================== */ + #define R_DSILINK_SQCH1DSC4AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC4AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC4AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC4AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC4AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC4AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC4AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC4AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC4AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC4AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC4AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC5AR ====================================================== */ + #define R_DSILINK_SQCH1DSC5AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC5AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC5AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC5AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC5AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC5AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC5AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC5AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC5AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC5AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC5AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC6AR ====================================================== */ + #define R_DSILINK_SQCH1DSC6AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC6AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC6AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC6AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC6AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC6AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC6AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC6AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC6AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC6AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC6AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC7AR ====================================================== */ + #define R_DSILINK_SQCH1DSC7AR_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC7AR_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC7AR_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC7AR_DT_Pos (16UL) /*!< DT (Bit 16) */ + #define R_DSILINK_SQCH1DSC7AR_DT_Msk (0x3f0000UL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC7AR_VC_Pos (22UL) /*!< VC (Bit 22) */ + #define R_DSILINK_SQCH1DSC7AR_VC_Msk (0xc00000UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_FMT_Pos (24UL) /*!< FMT (Bit 24) */ + #define R_DSILINK_SQCH1DSC7AR_FMT_Msk (0x1000000UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_SPD_Pos (25UL) /*!< SPD (Bit 25) */ + #define R_DSILINK_SQCH1DSC7AR_SPD_Msk (0x2000000UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_BTA_Pos (26UL) /*!< BTA (Bit 26) */ + #define R_DSILINK_SQCH1DSC7AR_BTA_Msk (0xc000000UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_NXACT_Pos (28UL) /*!< NXACT (Bit 28) */ + #define R_DSILINK_SQCH1DSC7AR_NXACT_Msk (0x30000000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC0AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC0AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC1AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC1AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC2AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC2AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC3AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC3AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC4AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC4AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC5AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC5AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC6AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC6AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC7AR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA1_Pos (8UL) /*!< DATA1 (Bit 8) */ + #define R_DSILINK_SQCH1DSC7AR_L_DATA1_Msk (0xff00UL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7AR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_LL_DATA0_Pos (0UL) /*!< DATA0 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_LL_DATA0_Msk (0xffUL) /*!< DATA0 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7AR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_LH_DATA1_Pos (0UL) /*!< DATA1 (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_LH_DATA1_Msk (0xffUL) /*!< DATA1 (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC0AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC0AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC0AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC0AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC0AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC0AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC0AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC1AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC1AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC1AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC1AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC1AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC1AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC1AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC2AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC2AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC2AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC2AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC2AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC2AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC2AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC3AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC3AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC3AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC3AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC3AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC3AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC3AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC4AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC4AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC4AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC4AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC4AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC4AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC4AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC5AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC5AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC5AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC5AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC5AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC5AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC5AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC6AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC6AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC6AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC6AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC6AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC6AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC6AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ===================================================== SQCH1DSC7AR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_H_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_H_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC7AR_H_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC7AR_H_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_H_FMT_Pos (8UL) /*!< FMT (Bit 8) */ + #define R_DSILINK_SQCH1DSC7AR_H_FMT_Msk (0x100UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_H_SPD_Pos (9UL) /*!< SPD (Bit 9) */ + #define R_DSILINK_SQCH1DSC7AR_H_SPD_Msk (0x200UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_H_BTA_Pos (10UL) /*!< BTA (Bit 10) */ + #define R_DSILINK_SQCH1DSC7AR_H_BTA_Msk (0xc00UL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_H_NXACT_Pos (12UL) /*!< NXACT (Bit 12) */ + #define R_DSILINK_SQCH1DSC7AR_H_NXACT_Msk (0x3000UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC0AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC0AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC0AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC1AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC1AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC1AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC2AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC2AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC2AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC3AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC3AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC3AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC4AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC4AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC4AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC5AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC5AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC5AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC6AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC6AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC6AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC7AR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_HL_DT_Pos (0UL) /*!< DT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_HL_DT_Msk (0x3fUL) /*!< DT (Bitfield-Mask: 0x3f) */ + #define R_DSILINK_SQCH1DSC7AR_HL_VC_Pos (6UL) /*!< VC (Bit 6) */ + #define R_DSILINK_SQCH1DSC7AR_HL_VC_Msk (0xc0UL) /*!< VC (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC0AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC0AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC0AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC0AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC0AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC0AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC1AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC1AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC1AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC1AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC1AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC1AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC2AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC2AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC2AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC2AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC2AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC2AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC3AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC3AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC3AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC3AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC3AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC3AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC4AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC4AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC4AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC4AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC4AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC4AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC5AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC5AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC5AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC5AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC5AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC5AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC6AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC6AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC6AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC6AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC6AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC6AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ==================================================== SQCH1DSC7AR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC7AR_HH_FMT_Pos (0UL) /*!< FMT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7AR_HH_FMT_Msk (0x1UL) /*!< FMT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_HH_SPD_Pos (1UL) /*!< SPD (Bit 1) */ + #define R_DSILINK_SQCH1DSC7AR_HH_SPD_Msk (0x2UL) /*!< SPD (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7AR_HH_BTA_Pos (2UL) /*!< BTA (Bit 2) */ + #define R_DSILINK_SQCH1DSC7AR_HH_BTA_Msk (0xcUL) /*!< BTA (Bitfield-Mask: 0x03) */ + #define R_DSILINK_SQCH1DSC7AR_HH_NXACT_Pos (4UL) /*!< NXACT (Bit 4) */ + #define R_DSILINK_SQCH1DSC7AR_HH_NXACT_Msk (0x30UL) /*!< NXACT (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC0BR ====================================================== */ + #define R_DSILINK_SQCH1DSC0BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC0BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC1BR ====================================================== */ + #define R_DSILINK_SQCH1DSC1BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC1BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC2BR ====================================================== */ + #define R_DSILINK_SQCH1DSC2BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC2BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC3BR ====================================================== */ + #define R_DSILINK_SQCH1DSC3BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC3BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC4BR ====================================================== */ + #define R_DSILINK_SQCH1DSC4BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC4BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC5BR ====================================================== */ + #define R_DSILINK_SQCH1DSC5BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC5BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC6BR ====================================================== */ + #define R_DSILINK_SQCH1DSC6BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC6BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC7BR ====================================================== */ + #define R_DSILINK_SQCH1DSC7BR_DTSEL_Pos (24UL) /*!< DTSEL (Bit 24) */ + #define R_DSILINK_SQCH1DSC7BR_DTSEL_Msk (0x3000000UL) /*!< DTSEL (Bitfield-Mask: 0x03) */ +/* ====================================================== SQCH1DSC0CR ====================================================== */ + #define R_DSILINK_SQCH1DSC0CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC0CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC0CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC1CR ====================================================== */ + #define R_DSILINK_SQCH1DSC1CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC1CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC1CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC2CR ====================================================== */ + #define R_DSILINK_SQCH1DSC2CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC2CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC2CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC3CR ====================================================== */ + #define R_DSILINK_SQCH1DSC3CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC3CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC3CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC4CR ====================================================== */ + #define R_DSILINK_SQCH1DSC4CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC4CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC4CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC5CR ====================================================== */ + #define R_DSILINK_SQCH1DSC5CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC5CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC5CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC6CR ====================================================== */ + #define R_DSILINK_SQCH1DSC6CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC6CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC6CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC7CR ====================================================== */ + #define R_DSILINK_SQCH1DSC7CR_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7CR_AUXOP_Pos (22UL) /*!< AUXOP (Bit 22) */ + #define R_DSILINK_SQCH1DSC7CR_AUXOP_Msk (0x400000UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7CR_ACTCODE_Pos (24UL) /*!< ACTCODE (Bit 24) */ + #define R_DSILINK_SQCH1DSC7CR_ACTCODE_Msk (0xff000000UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC0CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC1CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC2CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC3CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC4CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC5CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC6CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC7CR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_L_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_L_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC0CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC1CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC2CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC3CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC4CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC5CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC6CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC7CR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_LL_FINACT_Pos (0UL) /*!< FINACT (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_LL_FINACT_Msk (0x1UL) /*!< FINACT (Bitfield-Mask: 0x01) */ +/* ===================================================== SQCH1DSC0CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC0CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC0CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC0CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC1CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC1CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC1CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC1CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC2CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC2CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC2CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC2CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC3CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC3CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC3CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC3CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC4CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC4CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC4CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC4CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC5CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC5CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC5CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC5CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC6CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC6CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC6CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC6CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ===================================================== SQCH1DSC7CR_H ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_H_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC7CR_H_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ + #define R_DSILINK_SQCH1DSC7CR_H_ACTCODE_Pos (8UL) /*!< ACTCODE (Bit 8) */ + #define R_DSILINK_SQCH1DSC7CR_H_ACTCODE_Msk (0xff00UL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC0CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC1CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC1CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC2CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC2CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC3CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC3CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC4CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC4CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC5CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC5CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC6CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC6CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC7CR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_HL_AUXOP_Pos (6UL) /*!< AUXOP (Bit 6) */ + #define R_DSILINK_SQCH1DSC7CR_HL_AUXOP_Msk (0x40UL) /*!< AUXOP (Bitfield-Mask: 0x01) */ +/* ==================================================== SQCH1DSC0CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC0CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC0CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC1CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC1CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC2CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC2CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC3CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC3CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC4CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC4CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC5CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC5CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC6CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC6CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7CR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC7CR_HH_ACTCODE_Pos (0UL) /*!< ACTCODE (Bit 0) */ + #define R_DSILINK_SQCH1DSC7CR_HH_ACTCODE_Msk (0xffUL) /*!< ACTCODE (Bitfield-Mask: 0xff) */ +/* ====================================================== SQCH1DSC0DR ====================================================== */ + #define R_DSILINK_SQCH1DSC0DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC1DR ====================================================== */ + #define R_DSILINK_SQCH1DSC1DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC2DR ====================================================== */ + #define R_DSILINK_SQCH1DSC2DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC3DR ====================================================== */ + #define R_DSILINK_SQCH1DSC3DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC4DR ====================================================== */ + #define R_DSILINK_SQCH1DSC4DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC5DR ====================================================== */ + #define R_DSILINK_SQCH1DSC5DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC6DR ====================================================== */ + #define R_DSILINK_SQCH1DSC6DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== SQCH1DSC7DR ====================================================== */ + #define R_DSILINK_SQCH1DSC7DR_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_LADDR_Msk (0xffffffffUL) /*!< LADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== SQCH1DSC0DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC1DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC2DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC3DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC4DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC5DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC6DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== SQCH1DSC7DR_L ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_L_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_L_LADDR_Msk (0xffffUL) /*!< LADDR (Bitfield-Mask: 0xffff) */ +/* ==================================================== SQCH1DSC0DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_LL ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_LL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_LL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_LH ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_LH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_LH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_HL ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_HL_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_HL_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC0DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC0DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC0DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC1DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC1DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC1DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC2DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC2DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC2DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC3DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC3DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC3DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC4DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC4DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC4DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC5DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC5DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC5DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC6DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC6DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC6DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ +/* ==================================================== SQCH1DSC7DR_HH ===================================================== */ + #define R_DSILINK_SQCH1DSC7DR_HH_LADDR_Pos (0UL) /*!< LADDR (Bit 0) */ + #define R_DSILINK_SQCH1DSC7DR_HH_LADDR_Msk (0xffUL) /*!< LADDR (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_FLAD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== FCKMHZ ========================================================= */ + #define R_FLAD_FCKMHZ_FCKMHZ_Pos (0UL) /*!< FCKMHZ (Bit 0) */ + #define R_FLAD_FCKMHZ_FCKMHZ_Msk (0xffUL) /*!< FCKMHZ (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_OFS_DATAFLASH ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= FSBLCTRL0 ======================================================= */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLEN_Pos (0UL) /*!< FSBLEN (Bit 0) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLEN_Msk (0x7UL) /*!< FSBLEN (Bitfield-Mask: 0x07) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPSW_Pos (3UL) /*!< FSBLSKIPSW (Bit 3) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPSW_Msk (0x38UL) /*!< FSBLSKIPSW (Bitfield-Mask: 0x07) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPDS_Pos (6UL) /*!< FSBLSKIPDS (Bit 6) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPDS_Msk (0x1c0UL) /*!< FSBLSKIPDS (Bitfield-Mask: 0x07) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLCLK_Pos (9UL) /*!< FSBLCLK (Bit 9) */ + #define R_OFS_DATAFLASH_FSBLCTRL0_FSBLCLK_Msk (0xe00UL) /*!< FSBLCLK (Bitfield-Mask: 0x07) */ +/* ======================================================= FSBLCTRL1 ======================================================= */ + #define R_OFS_DATAFLASH_FSBLCTRL1_FSBLEXMD_Pos (0UL) /*!< FSBLEXMD (Bit 0) */ + #define R_OFS_DATAFLASH_FSBLCTRL1_FSBLEXMD_Msk (0x3UL) /*!< FSBLEXMD (Bitfield-Mask: 0x03) */ +/* ======================================================= FSBLCTRL2 ======================================================= */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTPN_Pos (0UL) /*!< PORTPN (Bit 0) */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTPN_Msk (0xfUL) /*!< PORTPN (Bitfield-Mask: 0x0f) */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTGN_Pos (4UL) /*!< PORTGN (Bit 4) */ + #define R_OFS_DATAFLASH_FSBLCTRL2_PORTGN_Msk (0x1f0UL) /*!< PORTGN (Bitfield-Mask: 0x1f) */ +/* ========================================================= SACC0 ========================================================= */ +/* ========================================================= SACC1 ========================================================= */ +/* ========================================================= SAMR ========================================================== */ +/* ======================================================= HOEMRTPK ======================================================== */ +/* ========================================================= ARCLS ========================================================= */ + #define R_OFS_DATAFLASH_ARCLS_ARCS_LK_Pos (0UL) /*!< ARCS_LK (Bit 0) */ + #define R_OFS_DATAFLASH_ARCLS_ARCS_LK_Msk (0x1UL) /*!< ARCS_LK (Bitfield-Mask: 0x01) */ + #define R_OFS_DATAFLASH_ARCLS_ARCNS_LK_Pos (1UL) /*!< ARCNS_LK (Bit 1) */ + #define R_OFS_DATAFLASH_ARCLS_ARCNS_LK_Msk (0x1eUL) /*!< ARCNS_LK (Bitfield-Mask: 0x0f) */ + #define R_OFS_DATAFLASH_ARCLS_ARCBL_LK_Pos (5UL) /*!< ARCBL_LK (Bit 5) */ + #define R_OFS_DATAFLASH_ARCLS_ARCBL_LK_Msk (0x20UL) /*!< ARCBL_LK (Bitfield-Mask: 0x01) */ +/* ========================================================= ARCCS ========================================================= */ + #define R_OFS_DATAFLASH_ARCCS_CNF_ARCNS_Pos (0UL) /*!< CNF_ARCNS (Bit 0) */ + #define R_OFS_DATAFLASH_ARCCS_CNF_ARCNS_Msk (0x3UL) /*!< CNF_ARCNS (Bitfield-Mask: 0x03) */ +/* ======================================================== ARC_SEC ======================================================== */ + #define R_OFS_DATAFLASH_ARC_SEC_ARC_SEC_Pos (0UL) /*!< ARC_SEC (Bit 0) */ + #define R_OFS_DATAFLASH_ARC_SEC_ARC_SEC_Msk (0xffffffffUL) /*!< ARC_SEC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= ARC_NSEC ======================================================== */ + #define R_OFS_DATAFLASH_ARC_NSEC_ARC_NSEC_Pos (0UL) /*!< ARC_NSEC (Bit 0) */ + #define R_OFS_DATAFLASH_ARC_NSEC_ARC_NSEC_Msk (0xffffffffUL) /*!< ARC_NSEC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= ARC_OEMBL ======================================================= */ + #define R_OFS_DATAFLASH_ARC_OEMBL_ARC_OEMBL_Pos (0UL) /*!< ARC_OEMBL (Bit 0) */ + #define R_OFS_DATAFLASH_ARC_OEMBL_ARC_OEMBL_Msk (0xffffffffUL) /*!< ARC_OEMBL (Bitfield-Mask: 0xffffffff) */ + +/** @} */ /* End of group PosMask_peripherals */ + + #ifdef __cplusplus +} + #endif + +#endif /* R7FA8D1BH_H */ + +/** @} */ /* End of group R7FA8D1BH */ + +/** @} */ /* End of group Renesas */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h new file mode 100644 index 0000000000..74c4a49a8a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h @@ -0,0 +1,150 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/* Ensure Renesas MCU variation definitions are included to ensure MCU + * specific register variations are handled correctly. */ +#ifndef BSP_FEATURE_H + #error "INTERNAL ERROR: bsp_feature.h must be included before renesas.h." +#endif + +/** @addtogroup Renesas + * @{ + */ + +/** @addtogroup RA + * @{ + */ + +#ifndef RA_H + #define RA_H + + #ifdef __cplusplus +extern "C" { + #endif + +/* Workaround for LLVM. __ARM_ARCH_8_1M_MAIN__ is defined for CM85 parts. But CMSIS_5 does not support this */ + #if defined(__llvm__) && !defined(__CLANG_TIDY__) && defined(__ARM_ARCH_8_1M_MAIN__) + #undef __ARM_ARCH_8_1M_MAIN__ + #define __ARM_ARCH_8M_MAIN__ 1 + #endif + #include "cmsis_compiler.h" + +/* Workaround for compilers that are not defining __ARM_ARCH_8_1M_MAIN__ for CM85 parts. Search CM85_WORKAROUND for related code changes */ + #if BSP_CFG_MCU_PART_SERIES == 8 + #undef __ARM_ARCH_8M_MAIN__ + #define __ARM_ARCH_8_1M_MAIN__ 1 + #endif + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ +/* IRQn_Type is provided in bsp_exceptions.h. Vectors generated by the FSP Configuration tool are in vector_data.h */ + +/** @} */ /* End of group Configuration_of_CMSIS */ + +/* =========================================================================================================================== */ +/* ================ Processor and Core Peripheral Section ================ */ +/* =========================================================================================================================== */ + + #if BSP_MCU_GROUP_RA2A1 + #include "R7FA2A1AB.h" + #elif BSP_MCU_GROUP_RA2E1 + #include "R7FA2E1A9.h" + #elif BSP_MCU_GROUP_RA2E2 + #include "R7FA2E2A7.h" + #elif BSP_MCU_GROUP_RA2E3 + #include "R7FA2E307.h" + #elif BSP_MCU_GROUP_RA2L1 + #include "R7FA2L1AB.h" + #elif BSP_MCU_GROUP_RA4E1 + #include "R7FA4E10D.h" + #elif BSP_MCU_GROUP_RA4E2 + #include "R7FA4E2B9.h" + #elif BSP_MCU_GROUP_RA4M1 + #include "R7FA4M1AB.h" + #elif BSP_MCU_GROUP_RA4M2 + #include "R7FA4M2AD.h" + #elif BSP_MCU_GROUP_RA4M3 + #include "R7FA4M3AF.h" + #elif BSP_MCU_GROUP_RA4T1 + #include "R7FA4T1BB.h" + #elif BSP_MCU_GROUP_RA4W1 + #include "R7FA4W1AD.h" + #elif BSP_MCU_GROUP_RA6E1 + #include "R7FA6E10F.h" + #elif BSP_MCU_GROUP_RA6E2 + #include "R7FA6E2BB.h" + #elif BSP_MCU_GROUP_RA6M1 + #include "R7FA6M1AD.h" + #elif BSP_MCU_GROUP_RA6M2 + #include "R7FA6M2AF.h" + #elif BSP_MCU_GROUP_RA6M3 + #include "R7FA6M3AH.h" + #elif BSP_MCU_GROUP_RA6M4 + #include "R7FA6M4AF.h" + #elif BSP_MCU_GROUP_RA6M5 + #include "R7FA6M5BH.h" + #elif BSP_MCU_GROUP_RA6T1 + #include "R7FA6T1AD.h" + #elif BSP_MCU_GROUP_RA6T2 + #include "R7FA6T2BD.h" + #elif BSP_MCU_GROUP_RA6T3 + #include "R7FA6T3BB.h" + #elif BSP_MCU_GROUP_RA8M1 + #include "R7FA8M1AH.h" + #elif BSP_MCU_GROUP_RA8D1 + #include "R7FA8D1BH.h" + #elif BSP_MCU_GROUP_RA8T1 + #include "R7FA8T1AH.h" + #else + #if __has_include("renesas_internal.h") + #include "renesas_internal.h" + #else + #warning "Unsupported MCU" + #endif + #endif + + #if __ARM_ARCH_7EM__ + #define RENESAS_CORTEX_M4 + #elif __ARM_ARCH_6M__ + #define RENESAS_CORTEX_M0PLUS + #elif __ARM_ARCH_8M_BASE__ + #define RENESAS_CORTEX_M23 + #elif __ARM_ARCH_8M_MAIN__ + #define RENESAS_CORTEX_M33 + #elif __ARM_ARCH_8_1M_MAIN__ + #define RENESAS_CORTEX_M85 + #else + #warning Unsupported Architecture + #endif + + #ifdef __cplusplus +} + #endif + +#endif /* RA_H */ + +/** @} */ /* End of group RA */ + +/** @} */ /* End of group Renesas */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h new file mode 100644 index 0000000000..b61fe0f003 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef SYSTEM_RENESAS_ARM_H + #define SYSTEM_RENESAS_ARM_H + + #ifdef __cplusplus +extern "C" { + #endif + + #include + +extern uint32_t SystemCoreClock; /** System Clock Frequency (Core Clock) */ + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +extern void SystemInit(void); + +/** + * Update SystemCoreClock variable + * + * @param none + * @return none + * + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +extern void SystemCoreClockUpdate(void); + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c new file mode 100644 index 0000000000..d135ed0762 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c @@ -0,0 +1,151 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#if BSP_TZ_SECURE_BUILD + #define BSP_TZ_STACK_SEAL_SIZE (8U) +#else + #define BSP_TZ_STACK_SEAL_SIZE (0U) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/* Defines function pointers to be used with vector table. */ +typedef void (* exc_ptr_t)(void); + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +void Reset_Handler(void); +void Default_Handler(void); +int32_t main(void); + +/*******************************************************************************************************************//** + * MCU starts executing here out of reset. Main stack pointer is set up already. + **********************************************************************************************************************/ +void Reset_Handler (void) +{ + /* Initialize system using BSP. */ + SystemInit(); + + /* Call user application. */ + main(); + + while (1) + { + /* Infinite Loop. */ + } +} + +/*******************************************************************************************************************//** + * Default exception handler. + **********************************************************************************************************************/ +void Default_Handler (void) +{ + /** A error has occurred. The user will need to investigate the cause. Common problems are stack corruption + * or use of an invalid pointer. Use the Fault Status window in e2 studio or manually check the fault status + * registers for more information. + */ + BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(0); +} + +/* Main stack */ +static uint8_t g_main_stack[BSP_CFG_STACK_MAIN_BYTES + BSP_TZ_STACK_SEAL_SIZE] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_STACK); + +/* Heap */ +#if (BSP_CFG_HEAP_BYTES > 0) + +BSP_DONT_REMOVE static uint8_t g_heap[BSP_CFG_HEAP_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) \ + BSP_PLACE_IN_SECTION(BSP_SECTION_HEAP); +#endif + +/* All system exceptions in the vector table are weak references to Default_Handler. If the user wishes to handle + * these exceptions in their code they should define their own function with the same name. + */ +#if defined(__ICCARM__) + #define WEAK_REF_ATTRIBUTE + + #pragma weak HardFault_Handler = Default_Handler + #pragma weak MemManage_Handler = Default_Handler + #pragma weak BusFault_Handler = Default_Handler + #pragma weak UsageFault_Handler = Default_Handler + #pragma weak SecureFault_Handler = Default_Handler + #pragma weak SVC_Handler = Default_Handler + #pragma weak DebugMon_Handler = Default_Handler + #pragma weak PendSV_Handler = Default_Handler + #pragma weak SysTick_Handler = Default_Handler +#elif defined(__GNUC__) + + #define WEAK_REF_ATTRIBUTE __attribute__((weak, alias("Default_Handler"))) +#endif + +void NMI_Handler(void); // NMI has many sources and is handled by BSP +void HardFault_Handler(void) WEAK_REF_ATTRIBUTE; +void MemManage_Handler(void) WEAK_REF_ATTRIBUTE; +void BusFault_Handler(void) WEAK_REF_ATTRIBUTE; +void UsageFault_Handler(void) WEAK_REF_ATTRIBUTE; +void SecureFault_Handler(void) WEAK_REF_ATTRIBUTE; +void SVC_Handler(void) WEAK_REF_ATTRIBUTE; +void DebugMon_Handler(void) WEAK_REF_ATTRIBUTE; +void PendSV_Handler(void) WEAK_REF_ATTRIBUTE; +void SysTick_Handler(void) WEAK_REF_ATTRIBUTE; + +/* Vector table. */ +BSP_DONT_REMOVE const exc_ptr_t __Vectors[BSP_CORTEX_VECTOR_TABLE_ENTRIES] BSP_PLACE_IN_SECTION( + BSP_SECTION_FIXED_VECTORS) = +{ + (exc_ptr_t) (&g_main_stack[0] + BSP_CFG_STACK_MAIN_BYTES), /* Initial Stack Pointer */ + Reset_Handler, /* Reset Handler */ + NMI_Handler, /* NMI Handler */ + HardFault_Handler, /* Hard Fault Handler */ + MemManage_Handler, /* MPU Fault Handler */ + BusFault_Handler, /* Bus Fault Handler */ + UsageFault_Handler, /* Usage Fault Handler */ + SecureFault_Handler, /* Secure Fault Handler */ + 0, /* Reserved */ + 0, /* Reserved */ + 0, /* Reserved */ + SVC_Handler, /* SVCall Handler */ + DebugMon_Handler, /* Debug Monitor Handler */ + 0, /* Reserved */ + PendSV_Handler, /* PendSV Handler */ + SysTick_Handler, /* SysTick Handler */ +}; + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c new file mode 100644 index 0000000000..7caf7e3a9c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c @@ -0,0 +1,845 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include +#if defined(__GNUC__) && defined(__llvm__) && !defined(__ARMCC_VERSION) && !defined(__CLANG_TIDY__) + #include +#endif +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Mask to select CP bits( 0xF00000 ) */ +#define CP_MASK (0xFU << 20) + +/* Startup value for CCR to enable instruction cache, branch prediction and LOB extension */ +#define CCR_CACHE_ENABLE (0x000E0201) + +/* Value to write to OAD register of MPU stack monitor to enable NMI when a stack overflow is detected. */ +#define BSP_STACK_POINTER_MONITOR_NMI_ON_DETECTION (0xA500U) + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) +#define BSP_PRV_PRCR_PRC1_UNLOCK ((BSP_PRV_PRCR_KEY) | 0x2U) +#define BSP_PRV_PRCR_LOCK ((BSP_PRV_PRCR_KEY) | 0x0U) +#define BSP_PRV_STACK_LIMIT ((uint32_t) __Vectors[0] - BSP_CFG_STACK_MAIN_BYTES) +#define BSP_PRV_STACK_TOP ((uint32_t) __Vectors[0]) +#define BSP_TZ_STACK_SEAL_VALUE (0xFEF5EDA5) + +#define ARMV8_MPU_REGION_MIN_SIZE (32U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/** System Clock Frequency (Core Clock) */ +uint32_t SystemCoreClock BSP_SECTION_EARLY_INIT; + +#if defined(__ARMCC_VERSION) +extern uint32_t Image$$BSS$$ZI$$Base; +extern uint32_t Image$$BSS$$ZI$$Length; +extern uint32_t Load$$DATA$$Base; +extern uint32_t Image$$DATA$$Base; +extern uint32_t Image$$DATA$$Length; +extern uint32_t Image$$STACK$$ZI$$Base; +extern uint32_t Image$$STACK$$ZI$$Length; + #if BSP_FEATURE_BSP_HAS_ITCM +extern uint32_t Load$$ITCM_DATA$$Base; +extern uint32_t Load$$ITCM_PAD$$Limit; +extern uint32_t Image$$ITCM_DATA$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern uint32_t Load$$DTCM_DATA$$Base; +extern uint32_t Load$$DTCM_PAD$$Limit; +extern uint32_t Image$$DTCM_DATA$$Base; +extern uint32_t Image$$DTCM_BSS$$Base; +extern uint32_t Image$$DTCM_BSS_PAD$$ZI$$Limit; + #endif + #if BSP_CFG_DCACHE_ENABLED +extern uint32_t Image$$NOCACHE$$ZI$$Base; +extern uint32_t Image$$NOCACHE_PAD$$ZI$$Limit; +extern uint32_t Image$$NOCACHE_SDRAM$$ZI$$Base; +extern uint32_t Image$$NOCACHE_SDRAM_PAD$$ZI$$Limit; + #endif +#elif defined(__GNUC__) + +/* Generated by linker. */ +extern uint32_t __etext; +extern uint32_t __data_start__; +extern uint32_t __data_end__; +extern uint32_t __bss_start__; +extern uint32_t __bss_end__; +extern uint32_t __StackLimit; +extern uint32_t __StackTop; + +/* Nested in __GNUC__ because LLVM generates both __GNUC__ and __llvm__*/ + #if defined(__llvm__) && !defined(__CLANG_TIDY__) +extern uint32_t __tls_base; + #endif + #if BSP_FEATURE_BSP_HAS_ITCM +extern uint32_t __itcm_data_init_start; +extern uint32_t __itcm_data_init_end; +extern uint32_t __itcm_data_start; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern uint32_t __dtcm_data_init_start; +extern uint32_t __dtcm_data_init_end; +extern uint32_t __dtcm_data_start; +extern uint32_t __dtcm_bss_start; +extern uint32_t __dtcm_bss_end; + #endif + #if BSP_CFG_DCACHE_ENABLED +extern uint32_t __nocache_start; +extern uint32_t __nocache_end; +extern uint32_t __nocache_sdram_start; +extern uint32_t __nocache_sdram_end; + #endif +#elif defined(__ICCARM__) + #pragma section=".bss" + #pragma section=".data" + #pragma section=".data_init" + #pragma section=".stack" + #if BSP_FEATURE_BSP_HAS_ITCM +extern uint32_t ITCM_DATA_INIT$$Base; +extern uint32_t ITCM_DATA_INIT$$Limit; +extern uint32_t ITCM_DATA$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern uint32_t DTCM_DATA_INIT$$Base; +extern uint32_t DTCM_DATA_INIT$$Limit; +extern uint32_t DTCM_DATA$$Base; +extern uint32_t DTCM_BSS$$Base; +extern uint32_t DTCM_BSS$$Limit; + #endif + #if BSP_CFG_DCACHE_ENABLED +extern uint32_t NOCACHE$$Base; +extern uint32_t NOCACHE$$Limit; +extern uint32_t NOCACHE_SDRAM$$Base; +extern uint32_t NOCACHE_SDRAM$$Limit; + #endif +#endif + +/* Initialize static constructors */ +#if defined(__ARMCC_VERSION) +extern void (* Image$$INIT_ARRAY$$Base[])(void); +extern void (* Image$$INIT_ARRAY$$Limit[])(void); +#elif defined(__GNUC__) + +extern void (* __init_array_start[])(void); + +extern void (* __init_array_end[])(void); +#elif defined(__ICCARM__) +extern void __call_ctors(void const *, void const *); + + #pragma section = "SHT$$PREINIT_ARRAY" const + #pragma section = "SHT$$INIT_ARRAY" const +#endif + +extern void * __Vectors[]; + +extern void R_BSP_SecurityInit(void); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#if BSP_FEATURE_BSP_RESET_TRNG +static void bsp_reset_trng_circuit(void); + +#endif + +#if defined(__ICCARM__) + +void R_BSP_WarmStart(bsp_warm_start_event_t event); + + #pragma weak R_BSP_WarmStart + +#elif defined(__GNUC__) || defined(__ARMCC_VERSION) + +void R_BSP_WarmStart(bsp_warm_start_event_t event) __attribute__((weak)); + +#endif + +#if BSP_CFG_EARLY_INIT +static void bsp_init_uninitialized_vars(void); + +#endif + +#if BSP_CFG_C_RUNTIME_INIT + #if BSP_FEATURE_BSP_HAS_ITCM || BSP_FEATURE_BSP_HAS_DTCM +static void memcpy_64(uint64_t * destination, const uint64_t * source, size_t count); + + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +static void memset_64(uint64_t * destination, const uint64_t value, size_t count); + + #endif +#endif + +#if BSP_CFG_C_RUNTIME_INIT + #if BSP_FEATURE_BSP_HAS_ITCM +static void bsp_init_itcm(void); + + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +static void bsp_init_dtcm(void); + + #endif +#endif + +#if BSP_CFG_DCACHE_ENABLED +static void bsp_init_mpu(void); + +#endif + +/*******************************************************************************************************************//** + * Initialize the MCU and the runtime environment. + **********************************************************************************************************************/ +void SystemInit (void) +{ +#if defined(RENESAS_CORTEX_M85) + + /* Enable the instruction cache, branch prediction, and the branch cache (required for Low Overhead Branch (LOB) extension). + * See sections 6.5, 6.6, and 6.7 in the Arm Cortex-M85 Processor Technical Reference Manual (Document ID: 101924_0002_05_en, Issue: 05) + * See section D1.2.9 in the Armv8-M Architecture Reference Manual (Document number: DDI0553B.w, Document version: ID07072023) */ + SCB->CCR = (uint32_t) CCR_CACHE_ENABLE; + __DSB(); + __ISB(); +#endif + +#if __FPU_USED + + /* Enable the FPU only when it is used. + * Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C) */ + + /* Set bits 20-23 (CP10 and CP11) to enable FPU. */ + SCB->CPACR = (uint32_t) CP_MASK; +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Seal the main stack for secure projects. Reference: + * https://developer.arm.com/documentation/100720/0300 + * https://developer.arm.com/support/arm-security-updates/armv8-m-stack-sealing */ + uint32_t * p_main_stack_top = (uint32_t *) __Vectors[0]; + *p_main_stack_top = BSP_TZ_STACK_SEAL_VALUE; +#endif + +#if !BSP_TZ_NONSECURE_BUILD + #if BSP_FEATURE_BSP_SECURITY_PREINIT + R_BSP_SecurityPreinit(); + #endif + + /* VTOR is in undefined state out of RESET: + * https://developer.arm.com/documentation/100235/0004/the-cortex-m33-peripherals/system-control-block/system-control-block-registers-summary?lang=en. + * Set the Secure/Non-Secure VTOR to the vector table address based on the build. This is skipped for non-secure + * projects because SCB_NS->VTOR is set by the secure project before the non-secure project runs. */ + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if !BSP_TZ_CFG_SKIP_INIT + #if BSP_FEATURE_BSP_VBATT_HAS_VBTCR1_BPWSWSTP + + /* Unlock VBTCR1 register. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_PRC1_UNLOCK; + + /* The VBTCR1.BPWSWSTP must be set after reset on MCUs that have VBTCR1.BPWSWSTP. Reference section 11.2.1 + * "VBATT Control Register 1 (VBTCR1)" and Figure 11.2 "Setting flow of the VBTCR1.BPWSWSTP bit" in the RA4M1 manual + * R01UM0007EU0110. This must be done before bsp_clock_init because LOCOCR, LOCOUTCR, SOSCCR, and SOMCR cannot + * be accessed until VBTSR.VBTRVLD is set. */ + R_SYSTEM->VBTCR1 = 1U; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->VBTSR_b.VBTRVLD, 1U); + + /* Lock VBTCR1 register. */ + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_LOCK; + #endif +#endif + +#if BSP_FEATURE_TFU_SUPPORTED + R_BSP_MODULE_START(FSP_IP_TFU, 0U); +#endif + +#if BSP_CFG_EARLY_INIT + + /* Initialize uninitialized BSP variables early for use in R_BSP_WarmStart. */ + bsp_init_uninitialized_vars(); +#endif + + /* Call pre clock initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_RESET); + +#if BSP_TZ_CFG_SKIP_INIT + + /* Initialize clock variables to be used with R_BSP_SoftwareDelay. */ + bsp_clock_freq_var_init(); +#else + + /* Configure system clocks. */ + bsp_clock_init(); + + #if BSP_FEATURE_BSP_RESET_TRNG + + /* To prevent an undesired current draw, this MCU requires a reset + * of the TRNG circuit after the clocks are initialized */ + + bsp_reset_trng_circuit(); + #endif +#endif + + /* Call post clock initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_POST_CLOCK); + +#if BSP_FEATURE_BSP_HAS_SP_MON + + /* Disable MSP monitoring */ + R_MPU_SPMON->SP[0].CTL = 0; + + /* Setup NMI interrupt */ + R_MPU_SPMON->SP[0].OAD = BSP_STACK_POINTER_MONITOR_NMI_ON_DETECTION; + + /* Setup start address */ + R_MPU_SPMON->SP[0].SA = BSP_PRV_STACK_LIMIT; + + /* Setup end address */ + R_MPU_SPMON->SP[0].EA = BSP_PRV_STACK_TOP; + + /* Set SPEEN bit to enable NMI on stack monitor exception. NMIER bits cannot be cleared after reset, so no need + * to read-modify-write. */ + R_ICU->NMIER = R_ICU_NMIER_SPEEN_Msk; + + /* Enable MSP monitoring */ + R_MPU_SPMON->SP[0].CTL = 1U; +#endif + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE + __set_MSPLIM(BSP_PRV_STACK_LIMIT); +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + /* Initialize C runtime environment. */ + /* Zero out BSS */ + #if defined(__ARMCC_VERSION) + memset((uint8_t *) &Image$$BSS$$ZI$$Base, 0U, (uint32_t) &Image$$BSS$$ZI$$Length); + #elif defined(__GNUC__) + memset(&__bss_start__, 0U, ((uint32_t) &__bss_end__ - (uint32_t) &__bss_start__)); + #elif defined(__ICCARM__) + memset((uint32_t *) __section_begin(".bss"), 0U, (uint32_t) __section_size(".bss")); + #endif + + /* Copy initialized RAM data from ROM to RAM. */ + #if defined(__ARMCC_VERSION) + memcpy((uint8_t *) &Image$$DATA$$Base, (uint8_t *) &Load$$DATA$$Base, (uint32_t) &Image$$DATA$$Length); + #elif defined(__GNUC__) + memcpy(&__data_start__, &__etext, ((uint32_t) &__data_end__ - (uint32_t) &__data_start__)); + #elif defined(__ICCARM__) + memcpy((uint32_t *) __section_begin(".data"), (uint32_t *) __section_begin(".data_init"), + (uint32_t) __section_size(".data")); + + /* Copy functions to be executed from RAM. */ + #pragma section=".code_in_ram" + #pragma section=".code_in_ram_init" + memcpy((uint32_t *) __section_begin(".code_in_ram"), + (uint32_t *) __section_begin(".code_in_ram_init"), + (uint32_t) __section_size(".code_in_ram")); + + /* Copy main thread TLS to RAM. */ + #pragma section="__DLIB_PERTHREAD_init" + #pragma section="__DLIB_PERTHREAD" + memcpy((uint32_t *) __section_begin("__DLIB_PERTHREAD"), (uint32_t *) __section_begin("__DLIB_PERTHREAD_init"), + (uint32_t) __section_size("__DLIB_PERTHREAD_init")); + #endif + + /* Initialize TCM memory. */ + #if BSP_FEATURE_BSP_HAS_ITCM + bsp_init_itcm(); + #endif + #if BSP_FEATURE_BSP_HAS_DTCM + bsp_init_dtcm(); + #endif + + #if defined(RENESAS_CORTEX_M85) + + /* Invalidate I-Cache after initializing the .code_in_ram section. */ + SCB_InvalidateICache(); + #endif + + #if defined(__GNUC__) && defined(__llvm__) && !defined(__CLANG_TIDY__) && !(defined __ARMCC_VERSION) + + /* Initialize TLS memory. */ + _init_tls(&__tls_base); + _set_tls(&__tls_base); + #endif + + /* Initialize static constructors */ + #if defined(__ARMCC_VERSION) + int32_t count = Image$$INIT_ARRAY$$Limit - Image$$INIT_ARRAY$$Base; + for (int32_t i = 0; i < count; i++) + { + void (* p_init_func)(void) = + (void (*)(void))((uint32_t) &Image$$INIT_ARRAY$$Base + (uint32_t) Image$$INIT_ARRAY$$Base[i]); + p_init_func(); + } + + #elif defined(__GNUC__) + int32_t count = __init_array_end - __init_array_start; + for (int32_t i = 0; i < count; i++) + { + __init_array_start[i](); + } + + #elif defined(__ICCARM__) + void const * pibase = __section_begin("SHT$$PREINIT_ARRAY"); + void const * ilimit = __section_end("SHT$$INIT_ARRAY"); + __call_ctors(pibase, ilimit); + #endif +#endif // BSP_CFG_C_RUNTIME_INIT + +#if BSP_FEATURE_BSP_POST_CRUNTIME_INIT + R_BSP_PostCRuntimeInit(); +#endif + + /* Initialize SystemCoreClock variable. */ + SystemCoreClockUpdate(); + +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR + + /* For TZ project, it should be called by the secure application, whether RTC module is to be configured as secure or not. */ + #if !BSP_TZ_NONSECURE_BUILD && !BSP_CFG_BOOT_IMAGE + + /* Perform RTC reset sequence to avoid unintended operation. */ + R_BSP_Init_RTC(); + #endif +#endif + +#if !BSP_CFG_PFS_PROTECT && defined(R_PMISC) + #if BSP_TZ_SECURE_BUILD || (BSP_FEATURE_TZ_VERSION == 2 && FSP_PRIV_TZ_USE_SECURE_REGS) + R_PMISC->PWPRS = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPRS = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #else + R_PMISC->PWPR = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPR = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #endif +#endif + +#if FSP_PRIV_TZ_USE_SECURE_REGS + + /* Ensure that the PMSAR registers are set to their default value. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + for (uint32_t i = 0; i < BSP_FEATURE_BSP_NUM_PMSAR; i++) + { + #if BSP_FEATURE_TZ_VERSION == 2 + R_PMISC->PMSAR[i].PMSAR = 0U; + #else + R_PMISC->PMSAR[i].PMSAR = UINT16_MAX; + #endif + } + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Initialize security features. */ + R_BSP_SecurityInit(); +#endif + +#if BSP_CFG_DCACHE_ENABLED + bsp_init_mpu(); + + SCB_EnableDCache(); +#endif + +#if BSP_FEATURE_BSP_HAS_GRAPHICS_DOMAIN + if ((((0 == R_SYSTEM->PGCSAR) && FSP_PRIV_TZ_USE_SECURE_REGS) || + ((1 == R_SYSTEM->PGCSAR) && BSP_TZ_NONSECURE_BUILD)) && (0 != R_SYSTEM->PDCTRGD)) + { + /* Turn on graphics power domain. + * This requires MOCO to be enabled, but MOCO is always enabled after bsp_clock_init(). */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + FSP_HARDWARE_REGISTER_WAIT((R_SYSTEM->PDCTRGD & (R_SYSTEM_PDCTRGD_PDCSF_Msk | R_SYSTEM_PDCTRGD_PDPGSF_Msk)), + R_SYSTEM_PDCTRGD_PDPGSF_Msk); + R_SYSTEM->PDCTRGD = 0; + FSP_HARDWARE_REGISTER_WAIT((R_SYSTEM->PDCTRGD & (R_SYSTEM_PDCTRGD_PDCSF_Msk | R_SYSTEM_PDCTRGD_PDPGSF_Msk)), 0); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + } +#endif + + /* Call Post C runtime initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_POST_C); + + /* Initialize ELC events that will be used to trigger NVIC interrupts. */ + bsp_irq_cfg(); + + /* Call any BSP specific code. No arguments are needed so NULL is sent. */ + bsp_init(NULL); +} + +/*******************************************************************************************************************//** + * This function is called at various points during the startup process. + * This function is declared as a weak symbol higher up in this file because it is meant to be overridden by a user + * implemented version. One of the main uses for this function is to call functional safety code during the startup + * process. To use this function just copy this function into your own code and modify it to meet your needs. + * + * @param[in] event Where the code currently is in the start up process + **********************************************************************************************************************/ +void R_BSP_WarmStart (bsp_warm_start_event_t event) +{ + if (BSP_WARM_START_RESET == event) + { + /* C runtime environment has not been setup so you cannot use globals. System clocks are not setup. */ + } + + if (BSP_WARM_START_POST_CLOCK == event) + { + /* C runtime environment has not been setup so you cannot use globals. Clocks have been initialized. */ + } + else if (BSP_WARM_START_POST_C == event) + { + /* C runtime environment, system clocks, and pins are all setup. */ + } + else + { + /* Do nothing */ + } +} + +/*******************************************************************************************************************//** + * Disable TRNG circuit to prevent unnecessary current draw which may otherwise occur when the Crypto module + * is not in use. + **********************************************************************************************************************/ +#if BSP_FEATURE_BSP_RESET_TRNG +static void bsp_reset_trng_circuit (void) +{ + volatile uint8_t read_port = 0U; + FSP_PARAMETER_NOT_USED(read_port); /// Prevent compiler 'unused' warning + + /* Release register protection for low power modes (per RA2A1 User's Manual (R01UH0888EJ0100) Figure 11.13 "Example + * of initial setting flow for an unused circuit") */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + + /* Enable TRNG function (disable stop function) */ + #if BSP_FEATURE_BSP_HAS_SCE_ON_RA2 + R_BSP_MODULE_START(FSP_IP_TRNG, 0); ///< TRNG Module Stop needs to be started/stopped for RA2 series. + #elif BSP_FEATURE_BSP_HAS_SCE5 + R_BSP_MODULE_START(FSP_IP_SCE, 0); ///< TRNG Module Stop needs to be started/stopped for RA4 series. + #else + #error "BSP_FEATURE_BSP_RESET_TRNG is defined but not handled." + #endif + + /* Wait for at least 3 PCLKB cycles */ + read_port = R_PFS->PORT[0].PIN[0].PmnPFS_b.PODR; + read_port = R_PFS->PORT[0].PIN[0].PmnPFS_b.PODR; + read_port = R_PFS->PORT[0].PIN[0].PmnPFS_b.PODR; + + /* Disable TRNG function */ + #if BSP_FEATURE_BSP_HAS_SCE_ON_RA2 + R_BSP_MODULE_STOP(FSP_IP_TRNG, 0); ///< TRNG Module Stop needs to be started/stopped for RA2 series. + #elif BSP_FEATURE_BSP_HAS_SCE5 + R_BSP_MODULE_STOP(FSP_IP_SCE, 0); ///< TRNG Module Stop needs to be started/stopped for RA4 series. + #else + #error "BSP_FEATURE_BSP_RESET_TRNG is defined but not handled." + #endif + + /* Reapply register protection for low power modes (per RA2A1 User's Manual (R01UH0888EJ0100) Figure 11.13 "Example + * of initial setting flow for an unused circuit") */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); +} + +#endif + +#if BSP_CFG_EARLY_INIT + +/*******************************************************************************************************************//** + * Initialize BSP variables not handled by C runtime startup. + **********************************************************************************************************************/ +static void bsp_init_uninitialized_vars (void) +{ + g_protect_pfswe_counter = 0; + + extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) + { + g_protect_counters[i] = 0; + } + + extern bsp_grp_irq_cb_t g_bsp_group_irq_sources[]; + for (uint32_t i = 0; i < 16; i++) + { + g_bsp_group_irq_sources[i] = 0; + } + + #if BSP_CFG_EARLY_INIT + + /* Set SystemCoreClock to MOCO */ + SystemCoreClock = BSP_MOCO_HZ; + #endif +} + +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + #if (BSP_FEATURE_BSP_HAS_ITCM || BSP_FEATURE_BSP_HAS_DTCM) + +/*******************************************************************************************************************//** + * 64-bit memory copy for Armv8.1-M using low overhead loop instructions. + * + * @param[in] destination copy destination start address, word aligned + * @param[in] source copy source start address, word aligned + * @param[in] count number of doublewords to copy + **********************************************************************************************************************/ +static void memcpy_64 (uint64_t * destination, const uint64_t * source, size_t count) +{ + uint64_t temp; + __asm volatile ( + "wls lr, %[count], memcpy_64_loop_end_%=\n" + #if (defined(__ARMCC_VERSION) || defined(__GNUC__)) + + /* Align the branch target to a 64-bit boundary, a CM85 specific optimization. */ + /* IAR does not support alignment control within inline assembly. */ + ".balign 8\n" + #endif + "memcpy_64_loop_start_%=:\n" + "ldrd %Q[temp], %R[temp], [%[source]], #+8\n" + "strd %Q[temp], %R[temp], [%[destination]], #+8\n" + "le lr, memcpy_64_loop_start_%=\n" + "memcpy_64_loop_end_%=:" + :[destination] "+&r" (destination), [source] "+&r" (source), [temp] "=r" (temp) + :[count] "r" (count) + : "lr", "memory" + ); + + /* Suppress IAR warning: "Error[Pe550]: variable "temp" was set but never used" */ + /* "temp" triggers this warning when it lacks an early-clobber modifier, which was removed to allow register reuse with "count". */ + (void) temp; +} + + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM + +/*******************************************************************************************************************//** + * 64-bit memory set for Armv8.1-M using low overhead loop instructions. + * + * @param[in] destination set destination start address, word aligned + * @param[in] value value to set + * @param[in] count number of doublewords to set + **********************************************************************************************************************/ +static void memset_64 (uint64_t * destination, const uint64_t value, size_t count) +{ + __asm volatile ( + "wls lr, %[count], memset_64_loop_end_%=\n" + #if (defined(__ARMCC_VERSION) || defined(__GNUC__)) + + /* Align the branch target to a 64-bit boundary, a CM85 specific optimization. */ + /* IAR does not support alignment control within inline assembly. */ + ".balign 8\n" + #endif + "memset_64_loop_start_%=:\n" + "strd %Q[value], %R[value], [%[destination]], #+8\n" + "le lr, memset_64_loop_start_%=\n" + "memset_64_loop_end_%=:" + :[destination] "+&r" (destination) + :[count] "r" (count), [value] "r" (value) + : "lr", "memory" + ); +} + + #endif + +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + #if BSP_FEATURE_BSP_HAS_ITCM + +/*******************************************************************************************************************//** + * Initialize ITCM RAM from ROM image. + **********************************************************************************************************************/ +static void bsp_init_itcm (void) +{ + uint64_t * itcm_destination; + const uint64_t * itcm_source; + size_t count; + + #if defined(__ARMCC_VERSION) + itcm_destination = (uint64_t *) &Image$$ITCM_DATA$$Base; + itcm_source = (uint64_t *) &Load$$ITCM_DATA$$Base; + count = ((uint32_t) &Load$$ITCM_PAD$$Limit - (uint32_t) &Load$$ITCM_DATA$$Base) / sizeof(uint64_t); + #elif defined(__GNUC__) + itcm_destination = (uint64_t *) &__itcm_data_start; + itcm_source = (uint64_t *) &__itcm_data_init_start; + count = ((uint32_t) &__itcm_data_init_end - (uint32_t) &__itcm_data_init_start) / sizeof(uint64_t); + #elif defined(__ICCARM__) + itcm_destination = (uint64_t *) &ITCM_DATA$$Base; + itcm_source = (uint64_t *) &ITCM_DATA_INIT$$Base; + count = ((uint32_t) &ITCM_DATA_INIT$$Limit - (uint32_t) &ITCM_DATA_INIT$$Base) / sizeof(uint64_t); + #endif + + memcpy_64(itcm_destination, itcm_source, count); +} + + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM + +/*******************************************************************************************************************//** + * Initialize DTCM RAM from ROM image and zero initialize DTCM RAM BSS section. + **********************************************************************************************************************/ +static void bsp_init_dtcm (void) +{ + uint64_t * dtcm_destination; + const uint64_t * dtcm_source; + size_t count; + uint64_t * dtcm_zero_destination; + size_t count_zero; + + #if defined(__ARMCC_VERSION) + dtcm_destination = (uint64_t *) &Image$$DTCM_DATA$$Base; + dtcm_source = (uint64_t *) &Load$$DTCM_DATA$$Base; + count = ((uint32_t) &Load$$DTCM_PAD$$Limit - (uint32_t) &Load$$DTCM_DATA$$Base) / sizeof(uint64_t); + dtcm_zero_destination = (uint64_t *) &Image$$DTCM_BSS$$Base; + count_zero = ((uint32_t) &Image$$DTCM_BSS_PAD$$ZI$$Limit - (uint32_t) &Image$$DTCM_BSS$$Base) / + sizeof(uint64_t); + #elif defined(__GNUC__) + dtcm_destination = (uint64_t *) &__dtcm_data_start; + dtcm_source = (uint64_t *) &__dtcm_data_init_start; + count = ((uint32_t) &__dtcm_data_init_end - (uint32_t) &__dtcm_data_init_start) / sizeof(uint64_t); + dtcm_zero_destination = (uint64_t *) &__dtcm_bss_start; + count_zero = ((uint32_t) &__dtcm_bss_end - (uint32_t) &__dtcm_bss_start) / sizeof(uint64_t); + #elif defined(__ICCARM__) + dtcm_destination = (uint64_t *) &DTCM_DATA$$Base; + dtcm_source = (uint64_t *) &DTCM_DATA_INIT$$Base; + count = ((uint32_t) &DTCM_DATA_INIT$$Limit - (uint32_t) &DTCM_DATA_INIT$$Base) / sizeof(uint64_t); + dtcm_zero_destination = (uint64_t *) &DTCM_BSS$$Base; + count_zero = ((uint32_t) &DTCM_BSS$$Limit - (uint32_t) &DTCM_BSS$$Base) / sizeof(uint64_t); + #endif + + memcpy_64(dtcm_destination, dtcm_source, count); + memset_64(dtcm_zero_destination, 0, count_zero); +} + + #endif + +#endif + +#if BSP_CFG_DCACHE_ENABLED + +/*******************************************************************************************************************//** + * Initialize MPU for Armv8-M devices. + **********************************************************************************************************************/ +static void bsp_init_mpu (void) +{ + uint32_t nocache_start; + uint32_t nocache_end; + uint32_t nocache_sdram_start; + uint32_t nocache_sdram_end; + + #if defined(__ARMCC_VERSION) + nocache_start = (uint32_t) &Image$$NOCACHE$$ZI$$Base; + nocache_end = (uint32_t) &Image$$NOCACHE_PAD$$ZI$$Limit; + nocache_sdram_start = (uint32_t) &Image$$NOCACHE_SDRAM$$ZI$$Base; + nocache_sdram_end = (uint32_t) &Image$$NOCACHE_SDRAM_PAD$$ZI$$Limit; + #elif defined(__GNUC__) + nocache_start = (uint32_t) &__nocache_start; + nocache_end = (uint32_t) &__nocache_end; + nocache_sdram_start = (uint32_t) &__nocache_sdram_start; + nocache_sdram_end = (uint32_t) &__nocache_sdram_end; + #elif defined(__ICCARM__) + nocache_start = (uint32_t) &NOCACHE$$Base; + nocache_end = (uint32_t) &NOCACHE$$Limit; + nocache_sdram_start = (uint32_t) &NOCACHE_SDRAM$$Base; + nocache_sdram_end = (uint32_t) &NOCACHE_SDRAM$$Limit; + #endif + + /* Maximum of eight attributes. */ + const uint8_t bsp_mpu_mair_attributes[] = + { + /* Normal, Non-cacheable */ + ARM_MPU_ATTR(ARM_MPU_ATTR_NON_CACHEABLE, ARM_MPU_ATTR_NON_CACHEABLE) + }; + + /* Maximum of eight regions. */ + /* A region start address and end address must each be aligned to 32 bytes. A region must be a minimum of 32 bytes to be valid. */ + /* A region end address is inclusive. */ + const ARM_MPU_Region_t bsp_mpu_regions[] = + { + /* No-Cache Section */ + { + .RBAR = ARM_MPU_RBAR(nocache_start, ARM_MPU_SH_NON, 0U, 0U, 1U), + .RLAR = ARM_MPU_RLAR((nocache_end - ARMV8_MPU_REGION_MIN_SIZE), 0U) + }, + + /* SDRAM No-Cache Section */ + { + .RBAR = ARM_MPU_RBAR(nocache_sdram_start, ARM_MPU_SH_NON, 0U, 0U, 1U), + .RLAR = ARM_MPU_RLAR((nocache_sdram_end - ARMV8_MPU_REGION_MIN_SIZE), 0U) + } + }; + + /* Initialize MPU_MAIR0 and MPU_MAIR1 from attributes table. */ + uint8_t num_attr = (sizeof(bsp_mpu_mair_attributes) / sizeof(bsp_mpu_mair_attributes[0])); + for (uint8_t i = 0; i < num_attr; i++) + { + ARM_MPU_SetMemAttr(i, bsp_mpu_mair_attributes[i]); + } + + /* Initialize MPU from configuration table. */ + uint8_t num_regions = (sizeof(bsp_mpu_regions) / sizeof(bsp_mpu_regions[0])); + for (uint8_t i = 0; i < num_regions; i++) + { + uint32_t rbar = bsp_mpu_regions[i].RBAR; + uint32_t rlar = bsp_mpu_regions[i].RLAR; + + /* Only configure regions of non-zero size. */ + if ((((rlar & MPU_RLAR_LIMIT_Msk) >> MPU_RLAR_LIMIT_Pos) + ARMV8_MPU_REGION_MIN_SIZE) > + ((rbar & MPU_RBAR_BASE_Msk) >> MPU_RBAR_BASE_Pos)) + { + ARM_MPU_SetRegion(i, rbar, rlar); + } + } + + /* + * SHCSR.MEMFAULTENA is set inside ARM_MPU_Enable(). + * Leave SHPR1.PRI_4 at reset value of zero. + * Leave MPU_CTRL.HFNMIENA at reset value of zero. + * Provide MPU_CTRL_PRIVDEFENA_Msk to ARM_MPU_Enable() to set MPU_CTRL.PRIVDEFENA. + */ + ARM_MPU_Enable(MPU_CTRL_PRIVDEFENA_Msk); +} + +#endif + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c new file mode 100644 index 0000000000..195e3d1546 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.c @@ -0,0 +1,2535 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_clocks.h" + +#if BSP_TZ_NONSECURE_BUILD + #include "bsp_guard.h" +#endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) +#define BSP_PRV_PRCR_UNLOCK ((BSP_PRV_PRCR_KEY) | 0x3U) +#define BSP_PRV_PRCR_LOCK ((BSP_PRV_PRCR_KEY) | 0x0U) + +/* Wait state definitions for MEMWAIT. */ +#define BSP_PRV_MEMWAIT_ZERO_WAIT_CYCLES (0U) +#define BSP_PRV_MEMWAIT_TWO_WAIT_CYCLES (1U) +#define BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ (32000000U) + +/* Wait state definitions for FLDWAITR. */ +#define BSP_PRV_FLDWAITR_ONE_WAIT_CYCLES (0U) +#define BSP_PRV_FLDWAITR_TWO_WAIT_CYCLES (1U) +#define BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ (32000000U) + +/* Temporary solution until R_FACI is added to renesas.h. */ +#define BSP_PRV_FLDWAITR_REG_ACCESS (*((volatile uint8_t *) (0x407EFFC4U))) + +/* Wait state definitions for MCUS with SRAMWTSC and FLWT. */ +#define BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE (0U) +#define BSP_PRV_ROM_ZERO_WAIT_CYCLES (0U) +#define BSP_PRV_ROM_ONE_WAIT_CYCLES (1U) +#define BSP_PRV_ROM_TWO_WAIT_CYCLES (2U) +#define BSP_PRV_ROM_THREE_WAIT_CYCLES (3U) +#define BSP_PRV_ROM_FOUR_WAIT_CYCLES (4U) +#define BSP_PRV_ROM_FIVE_WAIT_CYCLES (5U) +#define BSP_PRV_SRAM_UNLOCK (((BSP_FEATURE_CGC_SRAMPRCR_KW_VALUE) << \ + BSP_FEATURE_CGC_SRAMPRCR_KW_OFFSET) | 0x1U) +#define BSP_PRV_SRAM_LOCK (((BSP_FEATURE_CGC_SRAMPRCR_KW_VALUE) << \ + BSP_FEATURE_CGC_SRAMPRCR_KW_OFFSET) | 0x0U) + +/* Calculate value to write to MOMCR (MODRV controls main clock drive strength and MOSEL determines the source of the + * main oscillator). */ +#if BSP_FEATURE_CGC_MODRV_MASK + #define BSP_PRV_MODRV ((CGC_MAINCLOCK_DRIVE << BSP_FEATURE_CGC_MODRV_SHIFT) & \ + BSP_FEATURE_CGC_MODRV_MASK) +#else + #define BSP_PRV_MODRV (0x1AU) +#endif +#define BSP_PRV_MOSEL (BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE << R_SYSTEM_MOMCR_MOSEL_Pos) +#define BSP_PRV_MOMCR (BSP_PRV_MODRV | BSP_PRV_MOSEL) + +/* Locations of bitfields used to configure CLKOUT. */ +#define BSP_PRV_CKOCR_CKODIV_BIT (4U) +#define BSP_PRV_CKOCR_CKOEN_BIT (7U) + +/* Stop interval of at least 5 SOSC clock cycles between stop and restart of SOSC. + * Calculated based on 8Mhz of MOCO clock. */ +#define BSP_PRV_SUBCLOCK_STOP_INTERVAL_US (200U) + +/* Locations of bitfields used to configure Peripheral Clocks. */ +#define BSP_PRV_PERIPHERAL_CLK_REQ_BIT_POS (6U) +#define BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK (1U << BSP_PRV_PERIPHERAL_CLK_REQ_BIT_POS) +#define BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS (7U) +#define BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK (1U << BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS) + +#ifdef BSP_CFG_UCK_DIV + +/* If the MCU has SCKDIVCR2 for USBCK configuration. */ + #if !BSP_FEATURE_BSP_HAS_USBCKDIVCR + +/* Location of bitfield used to configure USB clock divider. */ + #define BSP_PRV_SCKDIVCR2_UCK_BIT (4U) + #define BSP_PRV_UCK_DIV (BSP_CFG_UCK_DIV) + +/* If the MCU has USBCKDIVCR. */ + #elif BSP_FEATURE_BSP_HAS_USBCKDIVCR + #if BSP_CLOCKS_USB_CLOCK_DIV_1 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (0U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_2 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (1U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_3 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (5U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_4 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (2U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_5 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (6U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_6 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (3U) + #elif BSP_CLOCKS_USB_CLOCK_DIV_8 == BSP_CFG_UCK_DIV + #define BSP_PRV_UCK_DIV (4U) + #else + + #error "BSP_CFG_UCK_DIV not supported." + + #endif + #endif +#endif +#if BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ + #define BSP_CLOCKS_USB60_CLOCK_DIV_1 (0) // Divide USB source clock by 1 + #define BSP_CLOCKS_USB60_CLOCK_DIV_2 (1) // Divide USB source clock by 2 + #define BSP_CLOCKS_USB60_CLOCK_DIV_3 (5) // Divide USB source clock by 3 + #define BSP_CLOCKS_USB60_CLOCK_DIV_4 (2) // Divide USB source clock by 4 + #define BSP_CLOCKS_USB60_CLOCK_DIV_5 (6) // Divide USB source clock by 5 + #define BSP_CLOCKS_USB60_CLOCK_DIV_6 (3) // Divide USB source clock by 6 + #define BSP_CLOCKS_USB60_CLOCK_DIV_8 (4) // Divide USB source clock by 8 +#endif /* BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ*/ +/* Choose the value to write to FLLCR2 (if applicable). */ +#if BSP_PRV_HOCO_USE_FLL + #if 1U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x226U) + #elif 2U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x263U) + #elif 4U == BSP_CFG_HOCO_FREQUENCY + #define BSP_PRV_FLL_FLLCR2 (0x263U) + #else + +/* When BSP_CFG_HOCO_FREQUENCY is 0, 4, 7 */ + #define BSP_PRV_FLL_FLLCR2 (0x1E9U) + #endif +#endif + +/* Calculate the value to write to SCKDIVCR. */ +#define BSP_PRV_STARTUP_SCKDIVCR_ICLK_BITS ((BSP_CFG_ICLK_DIV & 0xFU) << 24U) +#if BSP_FEATURE_CGC_HAS_PCLKE + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKE_BITS ((BSP_CFG_PCLKE_DIV & 0xFU) << 20U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKE_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKD + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS (BSP_CFG_PCLKD_DIV & 0xFU) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKC + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKC_BITS ((BSP_CFG_PCLKC_DIV & 0xFU) << 4U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKC_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKB + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKB_BITS ((BSP_CFG_PCLKB_DIV & 0xFU) << 8U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKB_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKA + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKA_BITS ((BSP_CFG_PCLKA_DIV & 0xFU) << 12U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_PCLKA_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_BCLK + #define BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS ((BSP_CFG_BCLK_DIV & 0xFU) << 16U) +#elif BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB + +/* Some MCUs have a requirement that bits 18-16 be set to the same value as the bits for configuring the PCLKB divisor. */ + #define BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS ((BSP_CFG_PCLKB_DIV & 0xFU) << 16U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS (0U) +#endif +#if BSP_FEATURE_CGC_HAS_FCLK + #define BSP_PRV_STARTUP_SCKDIVCR_FCLK_BITS ((BSP_CFG_FCLK_DIV & 0xFU) << 28U) +#else + #define BSP_PRV_STARTUP_SCKDIVCR_FCLK_BITS (0U) +#endif +#define BSP_PRV_STARTUP_SCKDIVCR (BSP_PRV_STARTUP_SCKDIVCR_ICLK_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKE_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKD_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKC_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKB_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_PCLKA_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_BCLK_BITS | \ + BSP_PRV_STARTUP_SCKDIVCR_FCLK_BITS) +#if BSP_FEATURE_CGC_HAS_CPUCLK + #define BSP_PRV_STARTUP_SCKDIVCR2_CPUCK_BITS (BSP_CFG_CPUCLK_DIV & 0xFU) + #define BSP_PRV_STARTUP_SCKDIVCR2 (BSP_PRV_STARTUP_SCKDIVCR2_CPUCK_BITS) +#endif + +/* The number of clocks is used to size the g_clock_freq array. */ +#if BSP_PRV_PLL2_SUPPORTED + #if 0 != BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL2 + (BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS - 1) + \ + BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS) + #else + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL2 + 1U) + #endif +#elif BSP_PRV_PLL_SUPPORTED + #if 0 != BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS + +/* Removed offset of 1 since the BSP_CLOCKS_SOURCE_CLOCK_PLL will be reused for BSP_CLOCKS_SOURCE_CLOCK_PLL1P which is included in BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS count. */ + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL + BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS) + #else + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_PLL + 1U) + #endif +#else + #define BSP_PRV_NUM_CLOCKS ((uint8_t) BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK + 1U) +#endif + +/* Calculate PLLCCR value. */ +#if BSP_PRV_PLL_SUPPORTED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (0) + #define BSP_PRV_PLL_USED (1) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (1) + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + #define BSP_PRV_PLLCCR_PLLMUL_MASK (0x3F) // PLLMUL in PLLCCR is 6 bits wide + #define BSP_PRV_PLLCCR_PLLMUL_BIT (8) // PLLMUL in PLLCCR starts at bit 8 + #define BSP_PRV_PLLCCR_PLSRCSEL_BIT (4) // PLSRCSEL in PLLCCR starts at bit 4 + #define BSP_PRV_PLLCCR ((((BSP_CFG_PLL_MUL & BSP_PRV_PLLCCR_PLLMUL_MASK) << \ + BSP_PRV_PLLCCR_PLLMUL_BIT) | \ + (BSP_PRV_PLSRCSEL << BSP_PRV_PLLCCR_PLSRCSEL_BIT)) | \ + BSP_CFG_PLL_DIV) + #endif + #if (2U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (0) + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + #define BSP_PRV_PLLCCR2_PLLMUL_MASK (0x1F) // PLLMUL in PLLCCR2 is 5 bits wide + #define BSP_PRV_PLLCCR2_PLODIV_BIT (6) // PLODIV in PLLCCR2 starts at bit 6 + + #define BSP_PRV_PLLCCR2_PLLMUL (BSP_CFG_PLL_MUL >> 1) + #define BSP_PRV_PLLCCR ((BSP_PRV_PLLCCR2_PLLMUL & BSP_PRV_PLLCCR2_PLLMUL_MASK) | \ + (BSP_CFG_PLL_DIV << BSP_PRV_PLLCCR2_PLODIV_BIT)) + #endif + #if (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (0) + #define BSP_PRV_PLL_USED (1) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLSRCSEL (1) + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + + #define BSP_PRV_PLL_MUL_CFG_MACRO_PLLMUL_MASK (0x3FFU) + #define BSP_PRV_PLLCCR_PLLMULNF_BIT (6) // PLLMULNF in PLLCCR starts at bit 6 + #define BSP_PRV_PLLCCR_PLSRCSEL_BIT (4) // PLSRCSEL in PLLCCR starts at bit 4 + #define BSP_PRV_PLLCCR ((((BSP_CFG_PLL_MUL & BSP_PRV_PLL_MUL_CFG_MACRO_PLLMUL_MASK) << \ + BSP_PRV_PLLCCR_PLLMULNF_BIT) | \ + (BSP_PRV_PLSRCSEL << BSP_PRV_PLLCCR_PLSRCSEL_BIT)) | \ + BSP_CFG_PLL_DIV) + #define BSP_PRV_PLLCCR2_PLL_DIV_MASK (0x0F) // PLL DIV in PLLCCR2/PLL2CCR2 is 4 bits wide + #define BSP_PRV_PLLCCR2_PLL_DIV_Q_BIT (4) // PLL DIV Q in PLLCCR2/PLL2CCR2 starts at bit 4 + #define BSP_PRV_PLLCCR2_PLL_DIV_R_BIT (8) // PLL DIV R in PLLCCR2/PLL2CCR2 starts at bit 8 + #define BSP_PRV_PLLCCR2 (((BSP_CFG_PLODIVR & BSP_PRV_PLLCCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLLCCR2_PLL_DIV_R_BIT) | \ + ((BSP_CFG_PLODIVQ & BSP_PRV_PLLCCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLLCCR2_PLL_DIV_Q_BIT) | \ + (BSP_CFG_PLODIVP & BSP_PRV_PLLCCR2_PLL_DIV_MASK)) + #endif + #if (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLL_USED (1) + #else + #define BSP_PRV_PLL_USED (0) + #endif + + #define BSP_PRV_PLLCCR_PLLMUL_MASK (0xFFU) // PLLMUL is 8 bits wide + #define BSP_PRV_PLLCCR_PLLMUL_BIT (8) // PLLMUL starts at bit 8 + #define BSP_PRV_PLLCCR_RESET (0x0004U) // Bit 2 must be written as 1 + #define BSP_PRV_PLLCCR (((BSP_CFG_PLL_MUL & BSP_PRV_PLLCCR_PLLMUL_MASK) << \ + BSP_PRV_PLLCCR_PLLMUL_BIT) | \ + BSP_PRV_PLLCCR_RESET) + #endif +#endif + +#if BSP_FEATURE_CGC_HAS_PLL2 + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PL2SRCSEL (0) + #define BSP_PRV_PLL2_USED (1) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PL2SRCSEL (1) + #define BSP_PRV_PLL2_USED (1) + #else + #define BSP_PRV_PLL2_USED (0) + #endif + + #if (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #define BSP_PRV_PLL2_MUL_CFG_MACRO_PLLMUL_MASK (0x3FF) + #define BSP_PRV_PLL2_MUL_CFG_MACRO_PLLMULNF_MASK (0x003U) + #define BSP_PRV_PLL2CCR_PLLMULNF_BIT (6) // PLLMULNF in PLLCCR starts at bit 6 + #define BSP_PRV_PLL2CCR_PLSRCSEL_BIT (4) // PLSRCSEL in PLLCCR starts at bit 4 + #define BSP_PRV_PLL2CCR ((((BSP_CFG_PLL2_MUL & BSP_PRV_PLL2_MUL_CFG_MACRO_PLLMUL_MASK) << \ + BSP_PRV_PLL2CCR_PLLMULNF_BIT) | \ + (BSP_PRV_PL2SRCSEL << BSP_PRV_PLL2CCR_PLSRCSEL_BIT)) | \ + BSP_CFG_PLL2_DIV) + #define BSP_PRV_PLL2CCR2_PLL_DIV_MASK (0x0F) // PLL DIV in PLL2CCR2 is 4 bits wide + #define BSP_PRV_PLL2CCR2_PLL_DIV_Q_BIT (4) // PLL DIV Q in PLL2CCR2 starts at bit 4 + #define BSP_PRV_PLL2CCR2_PLL_DIV_R_BIT (8) // PLL DIV R in PLL2CCR2 starts at bit 8 + #define BSP_PRV_PLL2CCR2 (((BSP_CFG_PL2ODIVR & BSP_PRV_PLL2CCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLL2CCR2_PLL_DIV_R_BIT) | \ + ((BSP_CFG_PL2ODIVQ & BSP_PRV_PLL2CCR2_PLL_DIV_MASK) << \ + BSP_PRV_PLL2CCR2_PLL_DIV_Q_BIT) | \ + (BSP_CFG_PL2ODIVP & BSP_PRV_PLL2CCR2_PLL_DIV_MASK)) + #else + #define BSP_PRV_PLL2CCR ((BSP_CFG_PLL2_MUL << R_SYSTEM_PLL2CCR_PLL2MUL_Pos) | \ + (BSP_CFG_PLL2_DIV << R_SYSTEM_PLL2CCR_PL2IDIV_Pos) | \ + (BSP_PRV_PL2SRCSEL << R_SYSTEM_PLL2CCR_PL2SRCSEL_Pos)) + #endif +#endif + +/* All clocks with configurable source except PLL and CLKOUT can use PLL. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_PRV_STABILIZE_PLL (1) +#endif + +/* All clocks with configurable source can use the main oscillator. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) + #define BSP_PRV_STABILIZE_MAIN_OSC (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_PLL_SOURCE) && (BSP_CFG_PLL_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) && BSP_PRV_PLL_USED + #define BSP_PRV_MAIN_OSC_USED (1) + #define BSP_PRV_STABILIZE_MAIN_OSC (1) +#elif defined(BSP_CFG_PLL2_SOURCE) && (BSP_CFG_PLL2_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) && BSP_PRV_PLL2_USED + #define BSP_PRV_MAIN_OSC_USED (1) + #define BSP_PRV_STABILIZE_MAIN_OSC (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_CECCLK_SOURCE) && (BSP_CFG_CECCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_I3CCLK_SOURCE) && (BSP_CFG_I3CCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_LCDCLK_SOURCE) && (BSP_CFG_LCDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_U60CLK_SOURCE) && (BSP_CFG_U60CLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#elif defined(BSP_CFG_SDADC_CLOCK_SOURCE) && (BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + #define BSP_PRV_MAIN_OSC_USED (1) +#else + #define BSP_PRV_MAIN_OSC_USED (0) +#endif + +/* All clocks with configurable source can use HOCO except the CECCLK and I3CCLK. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) + #define BSP_PRV_STABILIZE_HOCO (1) +#elif defined(BSP_CFG_PLL_SOURCE) && (BSP_CFG_PLL_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) && BSP_PRV_PLL_USED + #define BSP_PRV_HOCO_USED (1) + #define BSP_PRV_STABILIZE_HOCO (1) +#elif defined(BSP_CFG_PLL2_SOURCE) && (BSP_CFG_PLL2_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) && BSP_PRV_PLL2_USED + #define BSP_PRV_HOCO_USED (1) + #define BSP_PRV_STABILIZE_HOCO (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_LCDCLK_SOURCE) && (BSP_CFG_LCDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_U60CLK_SOURCE) && (BSP_CFG_U60CLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO) + #define BSP_PRV_HOCO_USED (1) +#elif defined(BSP_CFG_SDADC_CLOCK_SOURCE) && (BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_HOCO) + #define BSP_PRV_HOCO_USED (1) +#else + #define BSP_PRV_HOCO_USED (0) +#endif + +/* All clocks with configurable source except PLL can use MOCO. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) + #define BSP_PRV_STABILIZE_MOCO (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_UCK_SOURCE) && BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ && \ + (BSP_CFG_UCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_I3CCLK_SOURCE) && (BSP_CFG_I3CCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_LCDCLK_SOURCE) && (BSP_CFG_LCDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_U60CLK_SOURCE) && (BSP_CFG_U60CLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_MOCO) + #define BSP_PRV_MOCO_USED (1) +#else + #define BSP_PRV_MOCO_USED (0) +#endif + +/* All clocks with configurable source except UCK, CANFD, LCDCLK, USBHSCLK, I3CCLK and PLL can use LOCO. */ +#if (BSP_CFG_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) + #define BSP_PRV_STABILIZE_LOCO (1) +#elif defined(BSP_CFG_CLKOUT_SOURCE) && (BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_SCISPICLK_SOURCE) && (BSP_CFG_SCISPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_SPICLK_SOURCE) && (BSP_CFG_SPICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_SCICLK_SOURCE) && (BSP_CFG_SCICLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_CANFDCLK_SOURCE) && (BSP_CFG_CANFDCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_GPTCLK_SOURCE) && (BSP_CFG_GPTCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_IICCLK_SOURCE) && (BSP_CFG_IICCLK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#elif defined(BSP_CFG_OCTA_SOURCE) && (BSP_CFG_OCTA_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_LOCO) + #define BSP_PRV_LOCO_USED (1) +#else + #define BSP_PRV_LOCO_USED (0) +#endif + +/* Determine the optimal operating speed mode to apply after clock configuration based on the startup clock + * frequency. */ +#if BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_CGC_LOW_SPEED_MAX_FREQ_HZ && \ + !BSP_PRV_PLL_USED && !BSP_PRV_PLL2_USED + #define BSP_PRV_STARTUP_OPERATING_MODE (BSP_PRV_OPERATING_MODE_LOW_SPEED) +#elif BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_CGC_MIDDLE_SPEED_MAX_FREQ_HZ + #define BSP_PRV_STARTUP_OPERATING_MODE (BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) +#else + #define BSP_PRV_STARTUP_OPERATING_MODE (BSP_PRV_OPERATING_MODE_HIGH_SPEED) +#endif + +#if BSP_FEATURE_BSP_HAS_CLOCK_SUPPLY_TYPEB + #define BSP_PRV_CLOCK_SUPPLY_TYPE_B (0 == BSP_CFG_ROM_REG_OFS1_ICSATS) +#else + #define BSP_PRV_CLOCK_SUPPLY_TYPE_B (0) +#endif + +#if (BSP_FEATURE_BSP_HAS_CANFD_CLOCK && (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) && \ + (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC)) || \ + (BSP_FEATURE_BSP_HAS_SCISPI_CLOCK && (BSP_CFG_SCISPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_SCI_CLOCK && (BSP_CFG_SCICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_SPI_CLOCK && (BSP_CFG_SPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_GPT_CLOCK && (BSP_CFG_GPTCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_IIC_CLOCK && (BSP_CFG_IICCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_CEC_CLOCK && (BSP_CFG_CECCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_I3C_CLOCK && (BSP_CFG_I3CCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ && (BSP_CFG_U60CK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) || \ + (BSP_FEATURE_BSP_HAS_LCD_CLOCK && (BSP_CFG_LCDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED)) + + #define BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS (1U) +#else + #define BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS (0U) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +static uint8_t bsp_clock_set_prechange(uint32_t requested_freq_hz); +static void bsp_clock_set_postchange(uint32_t updated_freq_hz, uint8_t new_rom_wait_state); +static void bsp_sosc_init(void); + +#if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #if defined(__ICCARM__) + +void R_BSP_SubClockStabilizeWait(uint32_t delay_ms); +void R_BSP_SubClockStabilizeWaitAfterReset(uint32_t delay_ms); + + #pragma weak R_BSP_SubClockStabilizeWait + #pragma weak R_BSP_SubClockStabilizeWaitAfterReset + + #elif defined(__GNUC__) || defined(__ARMCC_VERSION) + +void R_BSP_SubClockStabilizeWait(uint32_t delay_ms) __attribute__((weak)); +void R_BSP_SubClockStabilizeWaitAfterReset(uint32_t delay_ms) __attribute__((weak)); + + #endif +#endif + +#if (BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS == 1U) +static void bsp_peripheral_clock_set(volatile uint8_t * p_clk_ctrl_reg, + volatile uint8_t * p_clk_div_reg, + uint8_t peripheral_clk_div, + uint8_t peripheral_clk_source); + +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE +static void bsp_prv_operating_mode_opccr_set(uint8_t operating_mode); + +#endif + +#if !BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET +static void bsp_prv_clock_set_hard_reset(void); + +#else +void bsp_soft_reset_prepare(void); + +#endif + +void prv_clock_dividers_set(uint32_t sckdivcr, uint8_t sckdivcr2); + +/* This array stores the clock frequency of each system clock. This section of RAM should not be initialized by the C + * runtime environment. This is initialized and used in bsp_clock_init, which is called before the C runtime + * environment is initialized. */ +static uint32_t g_clock_freq[BSP_PRV_NUM_CLOCKS] BSP_PLACE_IN_SECTION(BSP_SECTION_NOINIT); + +#if BSP_TZ_SECURE_BUILD + +/* Callback used to notify the nonsecure project that the clock settings have changed. */ +static bsp_clock_update_callback_t g_bsp_clock_update_callback = NULL; + +/* Pointer to nonsecure memory to store the callback args. */ +static bsp_clock_update_callback_args_t * gp_callback_memory = NULL; + +/* Reentrant method of calling the clock_update_callback. */ +static void r_bsp_clock_update_callback_call (bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_args) +{ + /* Allocate memory for saving global callback args on the secure stack. */ + bsp_clock_update_callback_args_t callback_args; + + /* Save current info stored in callback memory. */ + callback_args = *gp_callback_memory; + + /* Write the callback args to the nonsecure callback memory. */ + *gp_callback_memory = *p_callback_args; + + /* Call the callback to notifiy ns project about clock changes. */ + p_callback(gp_callback_memory); + + /* Restore the info in callback memory. */ + *gp_callback_memory = callback_args; +} + +/* Initialize the callback, callback memory and invoke the callback to ensure the nonsecure project has the correct clock settings. */ +void r_bsp_clock_update_callback_set (bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory) +{ + /* Store pointer to nonsecure callback memory. */ + gp_callback_memory = p_callback_memory; + + /* Store callback. */ + g_bsp_clock_update_callback = p_callback; + + /* Set callback args. */ + bsp_clock_update_callback_args_t callback_args = + { + .pll_freq = g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] + }; + + /* Call the callback. */ + r_bsp_clock_update_callback_call(g_bsp_clock_update_callback, &callback_args); +} + +#elif BSP_TZ_NONSECURE_BUILD && BSP_CFG_CLOCKS_SECURE == 1 + +bsp_clock_update_callback_args_t g_callback_memory; + #if BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD + #if defined(__ARMCC_VERSION) || defined(__ICCARM__) +static void BSP_CMSE_NONSECURE_CALL g_bsp_clock_update_callback (bsp_clock_update_callback_args_t * p_callback_args) + #elif defined(__GNUC__) + +static BSP_CMSE_NONSECURE_CALL void g_bsp_clock_update_callback (bsp_clock_update_callback_args_t * p_callback_args) + #endif + +{ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = p_callback_args->pll_freq; + + /* Update the SystemCoreClock value based on the new g_clock_freq settings. */ + SystemCoreClockUpdate(); +} + + #endif +#endif + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + +/* List of MSTP bits that must be set before entering low power modes or changing SCKDIVCR. */ +static const uint8_t g_bsp_prv_power_change_mstp_data[][2] = BSP_FEATURE_LPM_CHANGE_MSTP_ARRAY; + +static const uint8_t g_bsp_prv_power_change_mstp_length = sizeof(g_bsp_prv_power_change_mstp_data) / + sizeof(g_bsp_prv_power_change_mstp_data[0]); + +static volatile uint32_t * const gp_bsp_prv_mstp = &R_MSTP->MSTPCRB; +#endif + +/*******************************************************************************************************************//** + * @internal + * @addtogroup BSP_MCU_PRV Internal BSP Documentation + * @ingroup RENESAS_INTERNAL + * @{ + **********************************************************************************************************************/ + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + +/*********************************************************************************************************************** + * Changes the operating speed in OPCCR. Assumes the LPM registers are unlocked in PRCR and cache is off. + * + * @param[in] operating_mode Desired operating mode, must be one of the BSP_PRV_OPERATING_MODE_* macros, cannot be + * BSP_PRV_OPERATING_MODE_SUBOSC_SPEED + **********************************************************************************************************************/ +static void bsp_prv_operating_mode_opccr_set (uint8_t operating_mode) +{ + #if BSP_FEATURE_CGC_HOCOSF_BEFORE_OPCCR + + /* If the desired operating mode is already set, return. */ + if (operating_mode == R_SYSTEM->OPCCR) + { + return; + } + + /* On some MCUs, the HOCO must be stable before updating OPCCR.OPCM. */ + if (0U == R_SYSTEM->HOCOCR) + { + /* Wait for HOCO to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 1U); + } + #endif + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OPCCR_b.OPCMTSF, 0U); + + /* Apply requested operating speed mode. */ + R_SYSTEM->OPCCR = operating_mode; + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OPCCR_b.OPCMTSF, 0U); +} + +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + +/*********************************************************************************************************************** + * Changes the operating speed mode. Assumes the LPM registers are unlocked in PRCR and cache is off. + * + * @param[in] operating_mode Desired operating mode, must be one of the BSP_PRV_OPERATING_MODE_* macros + **********************************************************************************************************************/ +void bsp_prv_operating_mode_set (uint8_t operating_mode) +{ + #if BSP_PRV_POWER_USE_DCDC + static bsp_power_mode_t power_mode = BSP_POWER_MODE_LDO; + + /* Disable DCDC if transitioning to an incompatible mode. */ + if ((operating_mode > BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) && (R_SYSTEM->DCDCCTL & R_SYSTEM_DCDCCTL_DCDCON_Msk)) + { + /* LDO boost must be used if entering subclock speed mode (see RA2L1 User's Manual (R01UH0853EJ0100) Section + * 10.5.1 (5) Switching from High-speed/Middle-speed mode in DCDC power mode to Subosc-speed mode or Software + * Standby mode). */ + power_mode = R_BSP_PowerModeSet((BSP_PRV_OPERATING_MODE_SUBOSC_SPEED == operating_mode) ? + BSP_POWER_MODE_LDO_BOOST : BSP_POWER_MODE_LDO); + } + #endif + + #if BSP_FEATURE_CGC_HAS_SOPCCR + if (BSP_PRV_OPERATING_MODE_SUBOSC_SPEED == operating_mode) + { + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR_b.SOPCMTSF, 0U); + + /* Set subosc speed mode. */ + R_SYSTEM->SOPCCR = 0x1U; + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR_b.SOPCMTSF, 0U); + } + else + #endif + { + #if BSP_FEATURE_CGC_HAS_SOPCCR + + /* Wait for transition to complete. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR_b.SOPCMTSF, 0U); + + /* Exit subosc speed mode first. */ + R_SYSTEM->SOPCCR = 0U; + + /* Wait for transition to complete. Check the entire register here since it should be set to 0 at this point. + * Checking the entire register is slightly more efficient. This will also hang the program if the LPM + * registers are not unlocked, which can help catch programming errors. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOPCCR, 0U); + #endif + + bsp_prv_operating_mode_opccr_set(operating_mode); + } + + #if BSP_PRV_POWER_USE_DCDC + + /* Enable DCDC if it was previously enabled. */ + if ((operating_mode <= BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) && (power_mode < BSP_POWER_MODE_LDO)) + { + R_BSP_PowerModeSet(power_mode); + power_mode = BSP_POWER_MODE_LDO; + } + #endif +} + +#endif + +#if BSP_PRV_PLL_SUPPORTED + +/*********************************************************************************************************************** + * Updates the operating frequency of the PLL. + * + * @param[in] pll_freq_hz New frequency of the PLL after the PLL is configured + **********************************************************************************************************************/ +void bsp_prv_prepare_pll (uint32_t pll_freq_hz) +{ + /* Store the PLL frequency, which is required to update SystemCoreClock after switching to PLL. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = pll_freq_hz; +} + +#endif + +/*******************************************************************************************************************//** + * Update SystemCoreClock variable based on current clock settings. + **********************************************************************************************************************/ +void SystemCoreClockUpdate (void) +{ +#if BSP_FEATURE_TZ_HAS_TRUSTZONE && (BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD) && BSP_FEATURE_TZ_VERSION == 2 + bool secure = !R_SYSTEM->CGFSAR_b.NONSEC00; +#endif + + uint32_t clock_index = FSP_STYPE3_REG8_READ(R_SYSTEM->SCKSCR, secure); + +#if !BSP_FEATURE_CGC_HAS_CPUCLK + uint32_t ick = + (FSP_STYPE3_REG32_READ(R_SYSTEM->SCKDIVCR, secure) & R_SYSTEM_SCKDIVCR_ICK_Msk) >> R_SYSTEM_SCKDIVCR_ICK_Pos; + SystemCoreClock = g_clock_freq[clock_index] >> ick; +#else + uint8_t cpuck = (FSP_STYPE3_REG8_READ(R_SYSTEM->SCKDIVCR2, secure) & R_SYSTEM_SCKDIVCR2_CPUCK_Msk) >> + R_SYSTEM_SCKDIVCR2_CPUCK_Pos; + uint8_t cpuclk_div = cpuck; + + if (8U == cpuclk_div) + { + SystemCoreClock = g_clock_freq[clock_index] / 3U; + } + else if (9U == cpuclk_div) + { + SystemCoreClock = g_clock_freq[clock_index] / 6U; + } + else if (10U == cpuclk_div) + { + SystemCoreClock = g_clock_freq[clock_index] / 12U; + } + else + { + SystemCoreClock = g_clock_freq[clock_index] >> cpuclk_div; + } +#endif +} + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + +/*******************************************************************************************************************//** + * Sets MSTP bits as required by the hardware manual for the MCU (reference Figure 9.2 "Example flow for changing the + * value of SCKDIVCR" in the RA6M3 manual R01UH0886EJ0100). + * + * This function must be called before entering standby or changing SCKDIVCR. + * + * @return bitmask of bits set, where each bit corresponds to an index in g_bsp_prv_power_change_mstp_data + **********************************************************************************************************************/ +uint32_t bsp_prv_power_change_mstp_set (void) +{ + uint32_t mstp_set_bitmask = 0U; + for (uint32_t i = 0U; i < g_bsp_prv_power_change_mstp_length; i++) + { + /* Get the MSTP register index and the bit to test from the MCU specific array. */ + uint32_t mstp_index = g_bsp_prv_power_change_mstp_data[i][0]; + uint32_t mstp_bit = 1U << g_bsp_prv_power_change_mstp_data[i][1]; + + /* Only set the bit if it's currently cleared. */ + if (!(gp_bsp_prv_mstp[mstp_index] & mstp_bit)) + { + gp_bsp_prv_mstp[mstp_index] |= mstp_bit; + mstp_set_bitmask |= 1U << i; + } + + /* This loop takes over 250 ns (30 cycles at 120 MHz) between 2 consecutive bits being set. It was measured + * at 58 cycles for default IAR build configurations and 59 cycles for default GCC build configurations. */ + } + + /* The time between setting last MSTP bit and setting SCKDIVCR takes over 750 ns (90 cycles at 120 MHz). It was + * measured at 96 cycles for default IAR build configurations and 102 cycles for default GCC build + * configurations. */ + + return mstp_set_bitmask; +} + +#endif + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + +/*******************************************************************************************************************//** + * Clears MSTP bits set by bsp_prv_power_change_mstp_set as required by the hardware manual for the MCU (reference + * Figure 9.2 "Example flow for changing the value of SCKDIVCR" in the RA6M3 manual R01UH0886EJ0100). + * + * This function must be called after exiting standby or changing SCKDIVCR. + * + * @param[in] mstp_clear_bitmask bitmask of bits to clear, where each bit corresponds to an index in + * g_bsp_prv_power_change_mstp_data + **********************************************************************************************************************/ +void bsp_prv_power_change_mstp_clear (uint32_t mstp_clear_bitmask) +{ + /* The time between setting SCKDIVCR and clearing the first MSTP bit takes over 250 ns (30 cycles at 120 MHz). It + * was measured at 38 cycles for default IAR build configurations and 68 cycles for default GCC build + * configurations. */ + + for (uint32_t i = 0U; i < g_bsp_prv_power_change_mstp_length; i++) + { + /* Only clear the bit if it was set in bsp_prv_power_change_mstp_set. */ + if ((1U << i) & mstp_clear_bitmask) + { + /* Get the MSTP register index and the bit to test from the MCU specific array. */ + uint32_t mstp_index = g_bsp_prv_power_change_mstp_data[i][0]; + uint32_t mstp_bit = 1U << g_bsp_prv_power_change_mstp_data[i][1]; + + gp_bsp_prv_mstp[mstp_index] &= ~mstp_bit; + } + + /* This loop takes over 250 ns (30 cycles at 120 MHz) between 2 consecutive bits being cleared. It was measured + * at 44 cycles for default IAR build configurations and 53 cycles for default GCC build configurations. */ + } +} + +#endif + +/*******************************************************************************************************************//** + * Write SCKDIVCR and SCKDIVCR2 in the correct order to ensure that CPUCLK frequency is greater than ICLK frequency. + * + * @param[in] sckdivcr The new SCKDIVCR setting. + * @param[in] sckdivcr2 The new SCKDIVCR2 setting. + **********************************************************************************************************************/ +void prv_clock_dividers_set (uint32_t sckdivcr, uint8_t sckdivcr2) +{ +#if BSP_FEATURE_CGC_HAS_CPUCLK + uint32_t requested_iclk_div = BSP_PRV_SCKDIVCR_DIV_VALUE( + (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRV_SCKDIVCR_DIV_MASK); + uint32_t current_iclk_div = BSP_PRV_SCKDIVCR_DIV_VALUE(R_SYSTEM->SCKDIVCR_b.ICK); + + if (requested_iclk_div >= current_iclk_div) + { + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR = sckdivcr; + R_SYSTEM->SCKDIVCR2 = sckdivcr2; + } + else + { + /* If the requested ICLK divider is less than the current ICLK divider, then writing to SCKDIVCR2 first + * will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR2 = sckdivcr2; + R_SYSTEM->SCKDIVCR = sckdivcr; + } + +#else + FSP_PARAMETER_NOT_USED(sckdivcr2); + + R_SYSTEM->SCKDIVCR = sckdivcr; +#endif +} + +/*******************************************************************************************************************//** + * Applies system core clock source and divider changes. The MCU is expected to be in high speed mode during this + * configuration and the CGC registers are expected to be unlocked in PRCR. + * + * @param[in] clock Desired system clock + * @param[in] sckdivcr Value to set in SCKDIVCR register + * @param[in] sckdivcr2 Value to set in SCKDIVCR2 register + **********************************************************************************************************************/ +void bsp_prv_clock_set (uint32_t clock, uint32_t sckdivcr, uint8_t sckdivcr2) +{ +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + + /* Set MSTP bits as required by the hardware manual. This is done first to ensure the 750 ns delay required after + * increasing any division ratio in SCKDIVCR is met. */ + uint32_t mstp_set_bitmask = bsp_prv_power_change_mstp_set(); +#endif + + uint32_t iclk_div = (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRV_SCKDIVCR_DIV_MASK; + + /* Adjust the MCU specific wait state right before the system clock is set, if the system clock frequency to be + * set is higher than before. */ + uint32_t clock_freq_hz_post_change = g_clock_freq[clock] / BSP_PRV_SCKDIVCR_DIV_VALUE(iclk_div); + uint8_t new_rom_wait_state = bsp_clock_set_prechange(clock_freq_hz_post_change); + + /* Switching to a faster source clock. */ + if (g_clock_freq[clock] >= g_clock_freq[R_SYSTEM->SCKSCR]) + { +#if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE + bool post_div_set_delay = false; + + if ((clock_freq_hz_post_change > SystemCoreClock) && + ((clock_freq_hz_post_change - SystemCoreClock) > BSP_MAX_CLOCK_CHANGE_THRESHOLD)) + { + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + if (iclk_div == sckdivcr2) + { + /* If dividers are equal, bump both down 1 notch. + * /1 and /2 are the only possible options. */ + uint32_t new_div = BSP_CLOCKS_SYS_CLOCK_DIV_2; + if (BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1) + { + new_div = BSP_CLOCKS_SYS_CLOCK_DIV_4; + } + + R_SYSTEM->SCKDIVCR = (BSP_PRV_STARTUP_SCKDIVCR & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (new_div << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = (uint8_t) new_div; + } + else + { + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + if (BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1) + { + /* Determine what the other dividers are using and stay aligned with that. */ + R_SYSTEM->SCKDIVCR2 = + (BSP_CFG_ICLK_DIV & 0x8) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + } + else + { + /* If not /1, can just add 1 to it. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2 + 1; + } + } + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* Wait for settling delay. */ + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* Trigger delay after setting dividers */ + post_div_set_delay = true; + } + /* Continue and set clock to actual target speed. */ +#endif + + /* Set the clock dividers before switching to the new clock source. */ + prv_clock_dividers_set(sckdivcr, sckdivcr2); + +#if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE + if (post_div_set_delay) + { + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClock = clock_freq_hz_post_change; + + /* Wait for settling delay. */ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + else +#endif + { + /* Switch to the new clock source. */ + R_SYSTEM->SCKSCR = (uint8_t) clock; + } + } + /* Switching to a slower source clock. */ + else + { +#if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE + if ((SystemCoreClock > clock_freq_hz_post_change) && + ((SystemCoreClock - clock_freq_hz_post_change) > BSP_MAX_CLOCK_CHANGE_THRESHOLD)) + { + uint32_t current_sckdivcr = R_SYSTEM->SCKDIVCR; + + /* Must first step CPUCLK down by factor of 2 or 3 if it is currently above threshold. */ + if (R_SYSTEM->SCKDIVCR2 == ((current_sckdivcr >> R_SYSTEM_SCKDIVCR_ICK_Pos) & 0xF)) + { + /* If ICLK and CPUCLK have same divider currently, move ICLK down 1 notch first. */ + uint32_t current_iclk_div = (current_sckdivcr >> R_SYSTEM_SCKDIVCR_ICK_Pos) & 0xF; + uint32_t new_div = current_iclk_div + 1; + if (current_iclk_div == 0) + { + /* Align with already selected divider for PCLKA because it must have one > 1 already. */ + new_div = + (current_sckdivcr & + (0x8 << R_SYSTEM_SCKDIVCR_PCKA_Pos)) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + } + + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + R_SYSTEM->SCKDIVCR = (current_sckdivcr & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (new_div << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = (uint8_t) new_div; + + SystemCoreClockUpdate(); + } + } + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); +#endif + R_SYSTEM->SCKSCR = (uint8_t) clock; + + /* Set the clock dividers after switching to the new clock source. */ + prv_clock_dividers_set(sckdivcr, sckdivcr2); + } + + /* Clock is now at requested frequency. */ + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClock = clock_freq_hz_post_change; + +#if BSP_TZ_SECURE_BUILD + if (NULL != g_bsp_clock_update_callback) + { + /* Set callback args. */ + bsp_clock_update_callback_args_t callback_args = + { + .pll_freq = g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] + }; + + /* Call the callback. */ + r_bsp_clock_update_callback_call(g_bsp_clock_update_callback, &callback_args); + } +#endif + + /* Adjust the MCU specific wait state soon after the system clock is set, if the system clock frequency to be + * set is lower than previous. */ + bsp_clock_set_postchange(SystemCoreClock, new_rom_wait_state); + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED + + /* Clear MSTP bits as required by the hardware manual. This is done last to ensure the 250 ns delay required after + * decreasing any division ratio in SCKDIVCR is met. */ + bsp_prv_power_change_mstp_clear(mstp_set_bitmask); +#endif +} + +#if BSP_CFG_SLEEP_MODE_DELAY_ENABLE || BSP_CFG_RTOS_SLEEP_MODE_DELAY_ENABLE + +bool bsp_prv_clock_prepare_pre_sleep (void) +{ + /* Must wait before entering or exiting sleep modes. + * See Section 10.7.10 in RA8M1 manual R01UH0994EJ0100 */ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* Need to slow CPUCLK down before sleeping if it is above 240MHz. */ + bool cpuclk_slowed = false; + if (SystemCoreClock > BSP_MAX_CLOCK_CHANGE_THRESHOLD) + { + /* Reduce speed of CPUCLK to /2 or /3 of current, select which ones based on what ICLK divider is. */ + R_SYSTEM->SCKDIVCR2 = + (R_SYSTEM->SCKDIVCR & + (0x8 << R_SYSTEM_SCKDIVCR_ICK_Pos)) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + cpuclk_slowed = true; + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + + return cpuclk_slowed; +} + +void bsp_prv_clock_prepare_post_sleep (bool cpuclk_slowed) +{ + /* Set CPUCLK back to original speed here if it was slowed down before sleeping (dropped to below 240MHz) + * Add delays as described in Section 10.7.10 of RA8M1 manual R01UH0994EJ0100 */ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + if (cpuclk_slowed) + { + /* Set divider of CPUCLK back to /1. This is the only possible value for it to have been over 240MHz before sleeping. */ + R_SYSTEM->SCKDIVCR2 = BSP_CLOCKS_SYS_CLOCK_DIV_1; + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } +} + +#endif + +#if !BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + +static void bsp_prv_clock_set_hard_reset (void) +{ + /* Wait states in SRAMWTSC are set after hard reset. No change required here. */ + + /* Calculate the wait states for ROM */ + #if BSP_FEATURE_CGC_HAS_FLWT + #if BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS + + /* Do nothing. Default setting in FLWT is correct. */ + #elif BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS || \ + BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS == 0 + R_FCACHE->FLWT = BSP_PRV_ROM_ONE_WAIT_CYCLES; + #elif 0 == BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS || \ + (BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + R_FCACHE->FLWT = BSP_PRV_ROM_TWO_WAIT_CYCLES; + #elif 0 == BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS || \ + (BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS) + R_FCACHE->FLWT = BSP_PRV_ROM_THREE_WAIT_CYCLES; + #elif 0 == BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS || \ + (BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS) + R_FCACHE->FLWT = BSP_PRV_ROM_FOUR_WAIT_CYCLES; + #else + R_FCACHE->FLWT = BSP_PRV_ROM_FIVE_WAIT_CYCLES; + #endif + #endif + + #if BSP_FEATURE_CGC_HAS_MEMWAIT && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + #if BSP_STARTUP_ICLK_HZ > BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ + + /* The MCU must be in high speed mode to set wait states to 2. High speed mode is the default out of reset. */ + R_SYSTEM->MEMWAIT = BSP_PRV_MEMWAIT_TWO_WAIT_CYCLES; + #endif + #endif + + #if BSP_FEATURE_CGC_HAS_FLDWAITR && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + #if BSP_STARTUP_ICLK_HZ > BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ + + /* The MCU must be in high speed mode to set wait states to 2. High speed mode is the default out of reset. */ + BSP_PRV_FLDWAITR_REG_ACCESS = BSP_PRV_FLDWAITR_TWO_WAIT_CYCLES; + #endif + #endif + + /* In order to avoid a system clock (momentarily) higher than expected, the order of switching the clock and + * dividers must be so that the frequency of the clock goes lower, instead of higher, before being correct. */ + + /* MOCO is the source clock after reset. If the new source clock is faster than the current source clock, + * then set the clock dividers before switching to the new source clock. */ + #if BSP_MOCO_FREQ_HZ <= BSP_STARTUP_SOURCE_CLOCK_HZ + #if BSP_FEATURE_CGC_HAS_CPUCLK + #if BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE && (BSP_STARTUP_CPUCLK_HZ >= BSP_MAX_CLOCK_CHANGE_THRESHOLD) + + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + #if BSP_CFG_ICLK_DIV == BSP_CFG_CPUCLK_DIV + + /* If dividers are equal, bump both down 1 notch. + * /1 and /2 are the only possible options. */ + #if BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1 + R_SYSTEM->SCKDIVCR = (BSP_PRV_STARTUP_SCKDIVCR & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (BSP_CLOCKS_SYS_CLOCK_DIV_2 << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = BSP_CLOCKS_SYS_CLOCK_DIV_2; + #else + R_SYSTEM->SCKDIVCR = (BSP_PRV_STARTUP_SCKDIVCR & ~(R_SYSTEM_SCKDIVCR_ICK_Msk)) | + (BSP_CLOCKS_SYS_CLOCK_DIV_4 << R_SYSTEM_SCKDIVCR_ICK_Pos); + R_SYSTEM->SCKDIVCR2 = BSP_CLOCKS_SYS_CLOCK_DIV_4; + #endif + #else + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #if BSP_CFG_CPUCLK_DIV == BSP_CLOCKS_SYS_CLOCK_DIV_1 + + /* Determine what the other dividers are using and stay aligned with that. */ + R_SYSTEM->SCKDIVCR2 = (BSP_CFG_ICLK_DIV & 0x8) ? BSP_CLOCKS_SYS_CLOCK_DIV_3 : BSP_CLOCKS_SYS_CLOCK_DIV_2; + #else + + /* If not /1, can just add 1 to it. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2 + 1; + #endif + #endif + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* Wait for settling delay. */ + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* Continue and set clock to actual target speed. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + + /* Wait for settling delay. */ + SystemCoreClockUpdate(); + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + #else + #if BSP_PRV_ICLK_DIV_VALUE >= BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_FEATURE_CGC_ICLK_DIV_RESET) + + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + #else + + /* If the requested ICLK divider is less than the current ICLK divider, then writing to SCKDIVCR2 first + * will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #endif + #else + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #endif + + /* Set the system source clock */ + R_SYSTEM->SCKSCR = BSP_CFG_CLOCK_SOURCE; + + /* MOCO is the source clock after reset. If the new source clock is slower than the current source clock, + * then set the clock dividers after switching to the new source clock. */ + #if BSP_MOCO_FREQ_HZ > BSP_STARTUP_SOURCE_CLOCK_HZ + #if BSP_FEATURE_CGC_HAS_CPUCLK + #if BSP_PRV_ICLK_DIV_VALUE >= BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_FEATURE_CGC_ICLK_DIV_RESET) + + /* If the requested ICLK divider is greater than or equal to the current ICLK divider, then writing to + * SCKDIVCR first will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + #else + + /* If the requested ICLK divider is less than the current ICLK divider, then writing to SCKDIVCR2 first + * will always satisfy the constraint: CPUCLK frequency >= ICLK frequency. */ + R_SYSTEM->SCKDIVCR2 = BSP_PRV_STARTUP_SCKDIVCR2; + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #else + R_SYSTEM->SCKDIVCR = BSP_PRV_STARTUP_SCKDIVCR; + #endif + #endif + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClockUpdate(); + + /* Clocks are now at requested frequencies. */ + + /* Adjust the MCU specific wait state soon after the system clock is set, if the system clock frequency to be + * set is lower than previous. */ + #if BSP_FEATURE_CGC_HAS_SRAMWTSC + #if BSP_STARTUP_ICLK_HZ <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS + #if BSP_FEATURE_CGC_HAS_SRAMPRCR2 == 1 + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_UNLOCK; + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_LOCK; + #else + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_UNLOCK; + + /* Execute data memory barrier before and after setting the wait states, See Section 50.4.2 in the RA8M1 + * manual R01UH0994EJ0100 */ + __DMB(); + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + __DMB(); + + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_LOCK; + #endif + #endif + #endif + + /* ROM wait states are 0 by default. No change required here. */ +} + +#endif + +/*******************************************************************************************************************//** + * Initializes variable to store system clock frequencies. + **********************************************************************************************************************/ +#if BSP_TZ_NONSECURE_BUILD +void bsp_clock_freq_var_init (void) +#else +static void bsp_clock_freq_var_init (void) +#endif +{ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_HOCO] = BSP_HOCO_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_MOCO] = BSP_MOCO_FREQ_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_LOCO] = BSP_LOCO_FREQ_HZ; +#if BSP_CLOCK_CFG_MAIN_OSC_POPULATED + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC] = BSP_CFG_XTAL_HZ; +#else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC] = 0U; +#endif +#if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK] = BSP_SUBCLOCK_FREQ_HZ; +#else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK] = 0U; +#endif +#if BSP_PRV_PLL_SUPPORTED + #if BSP_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_CLOCK_SOURCE + #if (3U != BSP_FEATURE_CGC_PLLCCR_TYPE) + + /* The PLL Is the startup clock. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_STARTUP_SOURCE_CLOCK_HZ; + #else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_CFG_PLL1P_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1Q] = BSP_CFG_PLL1Q_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1R] = BSP_CFG_PLL1R_FREQUENCY_HZ; + #endif + #else + + /* The PLL value will be calculated at initialization. */ + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_CFG_XTAL_HZ; + #endif +#endif + +#if BSP_TZ_NONSECURE_BUILD && BSP_CFG_CLOCKS_SECURE == 1 + + /* If the CGC is secure and this is a non secure project, register a callback for getting clock settings. */ + R_BSP_ClockUpdateCallbackSet(g_bsp_clock_update_callback, &g_callback_memory); +#endif + + /* Update PLL Clock Frequency based on BSP Configuration. */ +#if BSP_PRV_PLL_SUPPORTED && BSP_CLOCKS_SOURCE_CLOCK_PLL != BSP_CFG_CLOCK_SOURCE && BSP_PRV_PLL_USED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = ((g_clock_freq[BSP_CFG_PLL_SOURCE] * (BSP_CFG_PLL_MUL + 1U)) >> 1U) / + (BSP_CFG_PLL_DIV + 1U); + #elif (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = BSP_CFG_PLL1P_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1Q] = BSP_CFG_PLL1Q_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL1R] = BSP_CFG_PLL1R_FREQUENCY_HZ; + #elif (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = (g_clock_freq[BSP_CFG_PLL_SOURCE] * (BSP_CFG_PLL_MUL + 1U)) >> 1U; + #else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL] = ((g_clock_freq[BSP_CFG_PLL_SOURCE] * (BSP_CFG_PLL_MUL + 1U)) >> 1U) >> + BSP_CFG_PLL_DIV; + #endif +#endif + + /* Update PLL2 Clock Frequency based on BSP Configuration. */ +#if BSP_PRV_PLL2_SUPPORTED && BSP_PRV_PLL2_USED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2] = ((g_clock_freq[BSP_CFG_PLL2_SOURCE] * (BSP_CFG_PLL2_MUL + 1U)) >> 1U) / + (BSP_CFG_PLL2_DIV + 1U); + #elif (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2] = BSP_CFG_PLL2P_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2Q] = BSP_CFG_PLL2Q_FREQUENCY_HZ; + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2R] = BSP_CFG_PLL2R_FREQUENCY_HZ; + #else + g_clock_freq[BSP_CLOCKS_SOURCE_CLOCK_PLL2] = + ((g_clock_freq[BSP_CFG_PLL2_SOURCE] * (BSP_CFG_PLL2_MUL + 1U)) >> 1U) >> BSP_CFG_PLL2_DIV; + #endif +#endif + + /* The SystemCoreClock needs to be updated before calling R_BSP_SoftwareDelay. */ + SystemCoreClockUpdate(); +} + +#if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + +/* + * If the clock registers are not guaranteed to be set to their value after reset (Ie. the application is executing after a bootloader), + * then the current state of the registers must be taken into consideration before writing the clock configuration. + * + * The HOCO must be stopped in the following situations: + * - The application configures the HOCO to be stopped. + * - The application enables the FLL, but the HOCO is already running. In order to enable the FLL, the HOCO must be stopped. + * The PLL must be stopped in the following situations: + * - The application configures the PLL to be stopped. + * - The application configures settings that are different than the current settings, but the PLL is already running. In order to + * write new PLL settings, the PLL must be stopped. + * - The HOCO is the PLL source clock and the HOCO is being stopped. + * The PLL2 must be stopped in the following situations: + * - The application configures the PLL2 to be stopped. + * - The application configures settings that are different than the current settings, but the PLL2 is already running. In order to + * write new PLL2 settings, the PLL2 must be stopped. + * - The HOCO is the PLL2 source clock and the HOCO is being stopped. + * + * If the HOCO or PLL are being used as the system clock source and they need to be stopped, then the system clock source needs to be switched + * to the default system clock source before the current system clock source is disabled. + */ +void bsp_soft_reset_prepare (void) +{ + bool stop_hoco = false; + #if BSP_PRV_PLL_SUPPORTED + bool stop_pll = false; + #endif + #if BSP_PRV_PLL2_SUPPORTED + bool stop_pll2 = false; + #endif + + #if BSP_PRV_HOCO_USE_FLL || !BSP_PRV_HOCO_USED + #if BSP_PRV_HOCO_USE_FLL + + /* Determine if the FLL needs to be enabled. */ + bool enable_fll = (0 == R_SYSTEM->FLLCR1 && BSP_PRV_HOCO_USE_FLL); + #else + bool enable_fll = false; + #endif + + /* If the HOCO is already enabled and either the FLL needs to be enabled or the HOCO is not used, then stop the HOCO. */ + if ((0 == R_SYSTEM->HOCOCR) && (enable_fll || !BSP_PRV_HOCO_USED)) + { + stop_hoco = true; + } + #endif + + #if BSP_PRV_PLL_SUPPORTED + if (0 == R_SYSTEM->PLLCR) + { + /* + * If any of the following conditions are true, then the PLL needs to be stopped: + * - The PLL is not used + * - The PLL settings need to be changed + * - The HOCO is selected as the PLL clock source and the HOCO needs to be stopped + * - Note that PLL type 2 does not support running off of the HOCO + */ + #if BSP_PRV_PLL_USED + #if 3 == BSP_FEATURE_CGC_PLLCCR_TYPE + if ((BSP_PRV_PLLCCR != R_SYSTEM->PLLCCR) || (BSP_PRV_PLLCCR2 != R_SYSTEM->PLLCCR2) || + (stop_hoco && (1 == R_SYSTEM->PLLCCR_b.PLSRCSEL))) + #elif 2 == BSP_FEATURE_CGC_PLLCCR_TYPE + if (BSP_PRV_PLLCCR != R_SYSTEM->PLLCCR2) + #else + if ((BSP_PRV_PLLCCR != R_SYSTEM->PLLCCR) || (stop_hoco && (1 == R_SYSTEM->PLLCCR_b.PLSRCSEL))) + #endif + #endif + { + stop_pll = true; + } + } + #endif + + #if BSP_PRV_PLL2_SUPPORTED + if (0 == R_SYSTEM->PLL2CR) + { + /* + * If any of the following conditions are true, then the PLL2 needs to be stopped: + * - The PLL2 is not used + * - The PLL2 settings need to be changed + * - The HOCO is selected as the PLL2 clock source and the HOCO needs to be stopped + * - Note that PLL type 2 does not support running off of the HOCO + */ + #if BSP_PRV_PLL2_USED + #if 3 == BSP_FEATURE_CGC_PLLCCR_TYPE + if ((BSP_PRV_PLL2CCR != R_SYSTEM->PLL2CCR) || (BSP_PRV_PLL2CCR2 != R_SYSTEM->PLL2CCR2) || + (stop_hoco && (1 == R_SYSTEM->PLL2CCR_b.PL2SRCSEL))) + #else + if ((BSP_PRV_PLL2CCR != R_SYSTEM->PLL2CCR) || (stop_hoco && (1 == R_SYSTEM->PLL2CCR_b.PL2SRCSEL))) + #endif + #endif + { + stop_pll2 = true; + } + } + #endif + + uint8_t sckscr = R_SYSTEM->SCKSCR; + + /* If the System Clock source needs to be stopped, then switch to the MOCO. */ + #if BSP_PRV_PLL_SUPPORTED + if ((stop_hoco && (BSP_CLOCKS_SOURCE_CLOCK_HOCO == sckscr)) || + (stop_pll && (BSP_CLOCKS_SOURCE_CLOCK_PLL == sckscr))) + #else + if (stop_hoco && (BSP_CLOCKS_SOURCE_CLOCK_HOCO == sckscr)) + #endif + { + bsp_prv_clock_set(BSP_FEATURE_CGC_STARTUP_SCKSCR, + BSP_FEATURE_CGC_STARTUP_SCKDIVCR, + BSP_FEATURE_CGC_STARTUP_SCKDIVCR2); + } + + /* Disable the oscillators so that the application can write the new clock configuration. */ + + #if BSP_PRV_PLL_SUPPORTED + if (stop_pll) + { + R_SYSTEM->PLLCR = 1; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLLSF, 0); + } + #endif + + #if BSP_PRV_PLL2_SUPPORTED + if (stop_pll2) + { + R_SYSTEM->PLL2CR = 1; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLL2SF, 0); + } + #endif + + if (stop_hoco) + { + R_SYSTEM->HOCOCR = 1; + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 0); + } +} + +#endif + +/*******************************************************************************************************************//** + * Initializes system clocks. Makes no assumptions about current register settings. + **********************************************************************************************************************/ +void bsp_clock_init (void) +{ + /* Unlock CGC and LPM protection registers. */ +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = (uint16_t) BSP_PRV_PRCR_UNLOCK; +#else + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_UNLOCK; +#endif + +#if BSP_FEATURE_BSP_FLASH_CACHE + #if !BSP_CFG_USE_LOW_VOLTAGE_MODE && BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM + + /* Disable flash cache before modifying MEMWAIT, SOPCCR, or OPCCR. */ + R_BSP_FlashCacheDisable(); + #else + + /* Enable the flash cache and don't disable it while running from flash. On these MCUs, the flash cache does not + * need to be disabled when adjusting the operating power mode. */ + R_BSP_FlashCacheEnable(); + #endif +#endif + +#if BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER + + /* Disable the flash prefetch buffer. */ + R_FACI_LP->PFBER = 0; +#endif + + bsp_clock_freq_var_init(); + +#if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* Transition to an intermediate clock configuration in order to prepare for writing the new clock configuraiton. */ + bsp_soft_reset_prepare(); +#endif + +#if BSP_CLOCK_CFG_MAIN_OSC_POPULATED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* Update the main oscillator drive, source, and wait states if the main oscillator is stopped. If the main + * oscillator is running, the drive, source, and wait states are assumed to be already set appropriately. */ + if (R_SYSTEM->MOSCCR) + { + /* Don't write to MOSCWTCR unless MOSTP is 1 and MOSCSF = 0. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.MOSCSF, 0U); + + /* Configure main oscillator drive. */ + R_SYSTEM->MOMCR = BSP_PRV_MOMCR; + + /* Set the main oscillator wait time. */ + R_SYSTEM->MOSCWTCR = (uint8_t) BSP_CLOCK_CFG_MAIN_OSC_WAIT; + } + + #else + + /* Configure main oscillator drive. */ + R_SYSTEM->MOMCR = BSP_PRV_MOMCR; + + /* Set the main oscillator wait time. */ + R_SYSTEM->MOSCWTCR = (uint8_t) BSP_CLOCK_CFG_MAIN_OSC_WAIT; + #endif +#endif + + /* Initialize the sub-clock according to the BSP configuration. */ + bsp_sosc_init(); + +#if BSP_FEATURE_CGC_HAS_HOCOWTCR + #if BSP_FEATURE_CGC_HOCOWTCR_64MHZ_ONLY + + /* These MCUs only require writes to HOCOWTCR if HOCO is set to 64 MHz. */ + #if 64000000 == BSP_HOCO_HZ + #if BSP_CFG_USE_LOW_VOLTAGE_MODE + + /* Wait for HOCO to stabilize before writing to HOCOWTCR. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 1U); + #else + + /* HOCO is assumed to be stable because these MCUs also require the HOCO to be stable before changing the operating + * power control mode. */ + #endif + R_SYSTEM->HOCOWTCR = BSP_FEATURE_CGC_HOCOWTCR_VALUE; + #endif + #else + + /* These MCUs require HOCOWTCR to be set to the maximum value except in snooze mode. There is no restriction to + * writing this register. */ + R_SYSTEM->HOCOWTCR = BSP_FEATURE_CGC_HOCOWTCR_VALUE; + #endif +#endif + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* Switch to high-speed to prevent any issues with the subsequent clock configurations. */ + bsp_prv_operating_mode_set(BSP_PRV_OPERATING_MODE_HIGH_SPEED); + #elif BSP_FEATURE_CGC_LOW_VOLTAGE_MAX_FREQ_HZ > 0U + + /* MCUs that support low voltage mode start up in low voltage mode. */ + bsp_prv_operating_mode_opccr_set(BSP_PRV_OPERATING_MODE_HIGH_SPEED); + + #if !BSP_PRV_HOCO_USED + + /* HOCO must be running during startup in low voltage mode. If HOCO is not used, turn it off after exiting low + * voltage mode. */ + R_SYSTEM->HOCOCR = 1U; + #endif + #elif BSP_FEATURE_CGC_STARTUP_OPCCR_MODE != BSP_PRV_OPERATING_MODE_HIGH_SPEED + + /* Some MCUs do not start in high speed mode. */ + bsp_prv_operating_mode_opccr_set(BSP_PRV_OPERATING_MODE_HIGH_SPEED); + #endif +#endif + + /* The FLL function can only be used when the subclock is running. */ +#if BSP_PRV_HOCO_USE_FLL + + /* If FLL is to be used configure FLLCR1 and FLLCR2 before starting HOCO. */ + R_SYSTEM->FLLCR2 = BSP_PRV_FLL_FLLCR2; + R_SYSTEM->FLLCR1 = 1U; +#endif + + /* Start all clocks used by other clocks first. */ +#if BSP_PRV_HOCO_USED + R_SYSTEM->HOCOCR = 0U; + + #if BSP_PRV_HOCO_USE_FLL && (BSP_CLOCKS_SOURCE_CLOCK_HOCO != BSP_CFG_PLL_SOURCE) + + /* If FLL is enabled, wait for the FLL stabilization delay (1.8 ms) */ + R_BSP_SoftwareDelay(BSP_PRV_FLL_STABILIZATION_TIME_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + + #if BSP_PRV_STABILIZE_HOCO + + /* Wait for HOCO to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.HOCOSF, 1U); + #endif +#endif +#if BSP_PRV_MOCO_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* If the MOCO is not running, start it and wait for it to stabilize using a software delay. */ + if (0U != R_SYSTEM->MOCOCR) + { + R_SYSTEM->MOCOCR = 0U; + #if BSP_PRV_STABILIZE_MOCO + R_BSP_SoftwareDelay(BSP_FEATURE_CGC_MOCO_STABILIZATION_MAX_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + } + #endif +#endif +#if BSP_PRV_LOCO_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + + /* If the LOCO is not running, start it and wait for it to stabilize using a software delay. */ + if (0U != R_SYSTEM->LOCOCR) + { + R_SYSTEM->LOCOCR = 0U; + #if BSP_PRV_STABILIZE_LOCO + R_BSP_SoftwareDelay(BSP_FEATURE_CGC_LOCO_STABILIZATION_MAX_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + } + + #else + R_SYSTEM->LOCOCR = 0U; + #if BSP_PRV_STABILIZE_LOCO + R_BSP_SoftwareDelay(BSP_FEATURE_CGC_LOCO_STABILIZATION_MAX_US, BSP_DELAY_UNITS_MICROSECONDS); + #endif + #endif +#endif +#if BSP_PRV_MAIN_OSC_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + if (R_SYSTEM->MOSCCR) + #endif + { + R_SYSTEM->MOSCCR = 0U; + + #if BSP_PRV_STABILIZE_MAIN_OSC + + /* Wait for main oscillator to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.MOSCSF, 1U); + #endif + } +#endif + + /* Start clocks that require other clocks. At this point, all dependent clocks are running and stable if needed. */ + +#if BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_LOW_SPEED + #if BSP_FEATURE_CGC_HAS_PLL2 && BSP_CFG_PLL2_SOURCE != BSP_CLOCKS_CLOCK_DISABLED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + if (R_SYSTEM->PLL2CR) + #endif + { + R_SYSTEM->PLL2CCR = BSP_PRV_PLL2CCR; + #if (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + R_SYSTEM->PLL2CCR2 = BSP_PRV_PLL2CCR2; + #endif + + /* Start PLL2. */ + R_SYSTEM->PLL2CR = 0U; + } + #endif /* BSP_FEATURE_CGC_HAS_PLL2 && BSP_CFG_PLL2_ENABLE */ +#endif + +#if BSP_PRV_PLL_SUPPORTED && BSP_PRV_PLL_USED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + if (R_SYSTEM->PLLCR) + #endif + { + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) || (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + R_SYSTEM->PLLCCR = (uint16_t) BSP_PRV_PLLCCR; + #elif 2U == BSP_FEATURE_CGC_PLLCCR_TYPE + R_SYSTEM->PLLCCR2 = (uint8_t) BSP_PRV_PLLCCR; + #elif 3U == BSP_FEATURE_CGC_PLLCCR_TYPE + R_SYSTEM->PLLCCR = (uint16_t) BSP_PRV_PLLCCR; + R_SYSTEM->PLLCCR2 = (uint16_t) BSP_PRV_PLLCCR2; + #endif + + #if BSP_FEATURE_CGC_PLLCCR_WAIT_US > 0 + + /* This loop is provided to ensure at least 1 us passes between setting PLLMUL and clearing PLLSTP on some + * MCUs (see PLLSTP notes in Section 8.2.4 "PLL Control Register (PLLCR)" of the RA4M1 manual R01UH0887EJ0100). + * Five loops are needed here to ensure the most efficient path takes at least 1 us from the setting of + * PLLMUL to the clearing of PLLSTP. HOCO is the fastest clock we can be using here since PLL cannot be running + * while setting PLLCCR. */ + bsp_prv_software_delay_loop(BSP_DELAY_LOOPS_CALCULATE(BSP_PRV_MAX_HOCO_CYCLES_PER_US)); + #endif + + R_SYSTEM->PLLCR = 0U; + + #if BSP_PRV_STABILIZE_PLL + + /* Wait for PLL to stabilize. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OSCSF_b.PLLSF, 1U); + #endif + } +#endif + + /* Set source clock and dividers. */ +#if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + #if BSP_TZ_SECURE_BUILD + + /* In case of soft reset, make sure callback pointer is NULL initially. */ + g_bsp_clock_update_callback = NULL; + #endif + + #if BSP_FEATURE_CGC_HAS_CPUCLK + bsp_prv_clock_set(BSP_CFG_CLOCK_SOURCE, BSP_PRV_STARTUP_SCKDIVCR, BSP_PRV_STARTUP_SCKDIVCR2); + #else + bsp_prv_clock_set(BSP_CFG_CLOCK_SOURCE, BSP_PRV_STARTUP_SCKDIVCR, 0); + #endif +#else + bsp_prv_clock_set_hard_reset(); +#endif + + /* If the MCU can run in a lower power mode, apply the optimal operating speed mode. */ +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE + #if BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_HIGH_SPEED + bsp_prv_operating_mode_set(BSP_PRV_STARTUP_OPERATING_MODE); + #endif +#endif + +#if defined(BSP_PRV_POWER_USE_DCDC) && (BSP_PRV_POWER_USE_DCDC == BSP_PRV_POWER_DCDC_STARTUP) && \ + (BSP_PRV_STARTUP_OPERATING_MODE <= BSP_PRV_OPERATING_MODE_MIDDLE_SPEED) + + /* Start DCDC as part of BSP startup when configured (BSP_CFG_DCDC_ENABLE == 2). */ + R_BSP_PowerModeSet(BSP_CFG_DCDC_VOLTAGE_RANGE); +#endif + + /* Configure BCLK if it exists on the MCU. */ +#ifdef BSP_CFG_BCLK_OUTPUT + #if BSP_CFG_BCLK_OUTPUT > 0U + R_SYSTEM->BCKCR = BSP_CFG_BCLK_OUTPUT - 1U; + R_SYSTEM->EBCKOCR = 1U; + #else + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + R_SYSTEM->EBCKOCR = 0U; + #endif + #endif +#endif + + /* Configure SDRAM clock if it exists on the MCU. */ +#ifdef BSP_CFG_SDCLK_OUTPUT + R_SYSTEM->SDCKOCR = BSP_CFG_SDCLK_OUTPUT; +#endif + + /* Configure CLKOUT. */ +#if BSP_CFG_CLKOUT_SOURCE == BSP_CLOCKS_CLOCK_DISABLED + #if BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET + R_SYSTEM->CKOCR = 0U; + #endif +#else + uint8_t ckocr = BSP_CFG_CLKOUT_SOURCE | (BSP_CFG_CLKOUT_DIV << BSP_PRV_CKOCR_CKODIV_BIT); + R_SYSTEM->CKOCR = ckocr; + ckocr |= (1U << BSP_PRV_CKOCR_CKOEN_BIT); + R_SYSTEM->CKOCR = ckocr; +#endif + +#if BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_LOW_SPEED + #if BSP_CFG_UCK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED + + /* If the USB clock has a divider setting in SCKDIVCR2. */ + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV && !BSP_FEATURE_BSP_HAS_USBCKDIVCR + R_SYSTEM->SCKDIVCR2 = BSP_PRV_UCK_DIV << BSP_PRV_SCKDIVCR2_UCK_BIT; + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV && !BSP_FEATURE_BSP_HAS_USBCKDIVCR */ + + /* If there is a REQ bit in USBCKCR, then follow sequence from section 8.2.29 in RA6M4 hardware manual R01UH0890EJ0050. */ + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ + + /* Request to change the USB Clock. */ + R_SYSTEM->USBCKCR_b.USBCKSREQ = 1; + + /* Wait for the clock to be stopped. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->USBCKCR_b.USBCKSRDY, 1U); + + /* Write the settings. */ + R_SYSTEM->USBCKDIVCR = BSP_PRV_UCK_DIV; + + /* Select the USB Clock without enabling it. */ + R_SYSTEM->USBCKCR = BSP_CFG_UCK_SOURCE | R_SYSTEM_USBCKCR_USBCKSREQ_Msk; + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ */ + + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL + + /* Some MCUs use an alternate register for selecting the USB clock source. */ + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL_ALT + #if BSP_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_UCK_SOURCE + + /* Write to USBCKCR to select the PLL. */ + R_SYSTEM->USBCKCR_ALT = 0; + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_UCK_SOURCE + + /* Write to USBCKCR to select the HOCO. */ + R_SYSTEM->USBCKCR_ALT = 1; + #endif + #else + + /* Select the USB Clock. */ + R_SYSTEM->USBCKCR = BSP_CFG_UCK_SOURCE; + #endif + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ */ + + #if BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ + + /* Wait for the USB Clock to be started. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->USBCKCR_b.USBCKSRDY, 0U); + #endif /* BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ */ + #endif /* BSP_CFG_USB_ENABLE */ +#endif /* BSP_PRV_STARTUP_OPERATING_MODE != BSP_PRV_OPERATING_MODE_LOW_SPEED */ + + /* Set the OCTASPI clock if it exists on the MCU (See section 8.2.30 of the RA6M4 hardware manual R01UH0890EJ0050). */ +#if BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK && BSP_CFG_OCTA_SOURCE != BSP_CLOCKS_CLOCK_DISABLED + bsp_octaclk_settings_t octaclk_settings = + { + .source_clock = (bsp_clocks_source_t) BSP_CFG_OCTA_SOURCE, + .divider = (bsp_clocks_octaclk_div_t) BSP_CFG_OCTA_DIV + }; + R_BSP_OctaclkUpdate(&octaclk_settings); +#endif /* BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK && BSP_CFG_OCTASPI_CLOCK_ENABLE */ + + /* Set the CANFD clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_CANFD_CLOCK && (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) && \ + (BSP_CFG_CANFDCLK_SOURCE != BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) + + bsp_peripheral_clock_set(&R_SYSTEM->CANFDCKCR, + &R_SYSTEM->CANFDCKDIVCR, + BSP_CFG_CANFDCLK_DIV, + BSP_CFG_CANFDCLK_SOURCE); +#endif + + /* Set the SCISPI clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_SCISPI_CLOCK && (BSP_CFG_SCISPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->SCISPICKCR, + &R_SYSTEM->SCISPICKDIVCR, + BSP_CFG_SCISPICLK_DIV, + BSP_CFG_SCISPICLK_SOURCE); +#endif + + /* Set the SCI clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_SCI_CLOCK && (BSP_CFG_SCICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->SCICKCR, &R_SYSTEM->SCICKDIVCR, BSP_CFG_SCICLK_DIV, BSP_CFG_SCICLK_SOURCE); +#endif + + /* Set the SPI clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_SPI_CLOCK && (BSP_CFG_SPICLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->SPICKCR, &R_SYSTEM->SPICKDIVCR, BSP_CFG_SPICLK_DIV, BSP_CFG_SPICLK_SOURCE); +#endif + + /* Set the GPT clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_GPT_CLOCK && (BSP_CFG_GPTCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->GPTCKCR, &R_SYSTEM->GPTCKDIVCR, BSP_CFG_GPTCLK_DIV, BSP_CFG_GPTCLK_SOURCE); +#endif + + /* Set the IIC clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_IIC_CLOCK && (BSP_CFG_IICCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->IICCKCR, &R_SYSTEM->IICCKDIVCR, BSP_CFG_IICCLK_DIV, BSP_CFG_IICCLK_SOURCE); +#endif + + /* Set the CEC clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_CEC_CLOCK && (BSP_CFG_CECCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->CECCKCR, &R_SYSTEM->CECCKDIVCR, BSP_CFG_CECCLK_DIV, BSP_CFG_CECCLK_SOURCE); +#endif + + /* Set the I3C clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_I3C_CLOCK && (BSP_CFG_I3CCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->I3CCKCR, &R_SYSTEM->I3CCKDIVCR, BSP_CFG_I3CCLK_DIV, BSP_CFG_I3CCLK_SOURCE); +#endif + + /* Set the LCD clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_LCD_CLOCK && (BSP_CFG_LCDCLK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->LCDCKCR, &R_SYSTEM->LCDCKDIVCR, BSP_CFG_LCDCLK_DIV, BSP_CFG_LCDCLK_SOURCE); +#endif + + /* Set the USB-HS clock if it exists on the MCU */ +#if BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ && (BSP_CFG_U60CK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + bsp_peripheral_clock_set(&R_SYSTEM->USB60CKCR, &R_SYSTEM->USB60CKDIVCR, BSP_CFG_U60CK_DIV, BSP_CFG_U60CK_SOURCE); +#endif + + /* Set the SDADC clock if it exists on the MCU. */ +#if BSP_FEATURE_BSP_HAS_SDADC_CLOCK && (BSP_CFG_SDADC_CLOCK_SOURCE != BSP_CLOCKS_CLOCK_DISABLED) + #if BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_HOCO + uint8_t sdadcckcr = 1U; + #elif BSP_CFG_SDADC_CLOCK_SOURCE == BSP_CLOCKS_SOURCE_CLOCK_PLL + uint8_t sdadcckcr = 2U; + #else /* BSP_CLOCK_SOURCE_CLOCK_MOSC */ + uint8_t sdadcckcr = 0U; + #endif + + /* SDADC isn't controlled like the other peripheral clocks so we cannot use the generic setter. */ + R_SYSTEM->SDADCCKCR = sdadcckcr & R_SYSTEM_SDADCCKCR_SDADCCKSEL_Msk; +#endif + + /* Lock CGC and LPM protection registers. */ +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = (uint16_t) BSP_PRV_PRCR_LOCK; +#else + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_LOCK; +#endif + +#if BSP_FEATURE_BSP_FLASH_CACHE && BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM + R_BSP_FlashCacheEnable(); +#endif + +#if BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER + R_FACI_LP->PFBER = 1; +#endif +} + +#if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + +/*******************************************************************************************************************//** + * This function is called during SOSC stabilization when Sub-Clock oscillator is populated. + * This function is declared as a weak symbol higher up in this file because it is meant to be overridden by a user + * implemented version. One of the main uses for this function is to update the IWDT/WDT Refresh Register if an + * application starts IWDT/WDT automatically after reset. To use this function just copy this function into your own + * code and modify it to meet your needs. + * + * @param[in] delay_ms Stabilization Time for the clock. + **********************************************************************************************************************/ +void R_BSP_SubClockStabilizeWait (uint32_t delay_ms) +{ + /* Wait for clock to stabilize. */ + R_BSP_SoftwareDelay(delay_ms, BSP_DELAY_UNITS_MILLISECONDS); +} + +/*******************************************************************************************************************//** + * This function is called during SOSC registers initialization when Sub-Clock oscillator is populated. + * This function is declared as a weak symbol higher up in this file because it is meant to be overridden by a user + * implemented version. One of the main uses for this function is to skip waiting for stabilization time after reset. + * To use this function just copy this function into your own code and modify it to meet your needs. + * + * @param[in] delay_ms Stabilization Time for the clock. + **********************************************************************************************************************/ +void R_BSP_SubClockStabilizeWaitAfterReset (uint32_t delay_ms) +{ + #if (BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL) + + /* Wait for clock to stabilize after reset. */ + R_BSP_SoftwareDelay(delay_ms, BSP_DELAY_UNITS_MILLISECONDS); + #else + FSP_PARAMETER_NOT_USED(delay_ms); + #endif +} + +#endif + +#if (BSP_PRV_HAS_ENABLED_PERIPHERAL_CLOCKS == 1U) + +/*******************************************************************************************************************//** + * Set the peripheral clock on the MCU + * + * @param[in] p_clk_ctrl_reg Pointer to peripheral clock control register + * @param[in] p_clk_div_reg Pointer to peripheral clock division control register + * @param[in] peripheral_clk_div Peripheral clock division + * @param[in] peripheral_clk_source Peripheral clock source + * + * @return The wait states for FLWT required after the clock change (or 0 if FLWT does not exist). + **********************************************************************************************************************/ +static void bsp_peripheral_clock_set (volatile uint8_t * p_clk_ctrl_reg, + volatile uint8_t * p_clk_div_reg, + uint8_t peripheral_clk_div, + uint8_t peripheral_clk_source) +{ + /* Request to stop the peripheral clock. */ + *p_clk_ctrl_reg |= (uint8_t) BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK; + + /* Wait for the peripheral clock to stop. */ + FSP_HARDWARE_REGISTER_WAIT((uint8_t) ((*p_clk_ctrl_reg & BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK) >> + BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS), + 1U); + + /* Select the peripheral clock divisor and source. */ + *p_clk_div_reg = peripheral_clk_div; + *p_clk_ctrl_reg = peripheral_clk_source | BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK | + BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK; + + /* Request to start the peripheral clock. */ + *p_clk_ctrl_reg &= (uint8_t) ~BSP_PRV_PERIPHERAL_CLK_REQ_BIT_MASK; + + /* Wait for the peripheral clock to start. */ + FSP_HARDWARE_REGISTER_WAIT((uint8_t) ((*p_clk_ctrl_reg & BSP_PRV_PERIPHERAL_CLK_RDY_BIT_MASK) >> + BSP_PRV_PERIPHERAL_CLK_RDY_BIT_POS), + 0U); +} + +#endif + +/*******************************************************************************************************************//** + * Increases the ROM and RAM wait state settings to the minimum required based on the requested clock change. + * + * @param[in] requested_freq_hz New core clock frequency after the clock change. + * + * @return The wait states for FLWT required after the clock change (or 0 if FLWT does not exist). + **********************************************************************************************************************/ +static uint8_t bsp_clock_set_prechange (uint32_t requested_freq_hz) +{ + uint8_t new_rom_wait_state = 0U; + + FSP_PARAMETER_NOT_USED(requested_freq_hz); + +#if BSP_FEATURE_CGC_HAS_SRAMWTSC + + /* Wait states for SRAM (SRAM0, SRAM1 and SRAM0 (DED)). */ + if (requested_freq_hz > BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS) + { + #if BSP_FEATURE_CGC_HAS_SRAMPRCR2 == 1 + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_UNLOCK; + R_SRAM->SRAMWTSC = BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE; + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_LOCK; + #else + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_UNLOCK; + + /* Execute data memory barrier before and after setting the wait states, See Section 50.4.2 in the RA8M1 + * manual R01UH0994EJ0100 */ + __DMB(); + R_SRAM->SRAMWTSC = BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE; + __DMB(); + + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_LOCK; + #endif + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLWT + + /* Calculate the wait states for ROM */ + #if BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + + #elif BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + + #elif BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_THREE_WAIT_CYCLES; + } + + #elif BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS == 0 + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_THREE_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_FOUR_WAIT_CYCLES; + } + + #else + if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ZERO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_ONE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_TWO_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_THREE_WAIT_CYCLES; + } + else if (requested_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS) + { + new_rom_wait_state = BSP_PRV_ROM_FOUR_WAIT_CYCLES; + } + else + { + new_rom_wait_state = BSP_PRV_ROM_FIVE_WAIT_CYCLES; + } + #endif + + /* If more wait states are required after the change, then set the wait states before changing the clock. */ + if (new_rom_wait_state > R_FCACHE->FLWT) + { + R_FCACHE->FLWT = new_rom_wait_state; + } +#endif + +#if BSP_FEATURE_CGC_HAS_MEMWAIT && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (requested_freq_hz > BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ) + { + /* The MCU must be in high speed mode to set wait states to 2. The MCU should already be in high speed mode as + * a precondition to bsp_prv_clock_set. */ + R_SYSTEM->MEMWAIT = BSP_PRV_MEMWAIT_TWO_WAIT_CYCLES; + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLDWAITR && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (requested_freq_hz > BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ) + { + /* The MCU must be in high speed mode to set wait states to 2. The MCU should already be in high speed mode as + * a precondition to bsp_prv_clock_set. */ + BSP_PRV_FLDWAITR_REG_ACCESS = BSP_PRV_FLDWAITR_TWO_WAIT_CYCLES; + } +#endif + + return new_rom_wait_state; +} + +/*******************************************************************************************************************//** + * Decreases the ROM and RAM wait state settings to the minimum supported based on the applied clock change. + * + * @param[in] updated_freq_hz New clock frequency after clock change + * @param[in] new_rom_wait_state Optimal value for FLWT if it exists, 0 if FLWT does not exist on the MCU + **********************************************************************************************************************/ +static void bsp_clock_set_postchange (uint32_t updated_freq_hz, uint8_t new_rom_wait_state) +{ + /* These variables are unused for some MCUs. */ + FSP_PARAMETER_NOT_USED(new_rom_wait_state); + FSP_PARAMETER_NOT_USED(updated_freq_hz); + +#if BSP_FEATURE_CGC_HAS_SRAMWTSC + + /* Wait states for SRAM (SRAM0, SRAM1 and SRAM0 (DED)). */ + if (updated_freq_hz <= BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS) + { + #if BSP_FEATURE_CGC_HAS_SRAMPRCR2 == 1 + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_UNLOCK; + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + R_SRAM->SRAMPRCR2 = BSP_PRV_SRAM_LOCK; + #else + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_UNLOCK; + + /* Execute data memory barrier before and after setting the wait states,See Section 50.4.2 in the RA8M1 + * manual R01UH0994EJ0100*/ + __DMB(); + R_SRAM->SRAMWTSC = BSP_PRV_SRAMWTSC_WAIT_CYCLES_DISABLE; + __DMB(); + + R_SRAM->SRAMPRCR = BSP_PRV_SRAM_LOCK; + #endif + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLWT + if (new_rom_wait_state != R_FCACHE->FLWT) + { + R_FCACHE->FLWT = new_rom_wait_state; + } +#endif + +#if BSP_FEATURE_CGC_HAS_MEMWAIT && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (updated_freq_hz <= BSP_PRV_MEMWAIT_MAX_ZERO_WAIT_FREQ) + { + R_SYSTEM->MEMWAIT = BSP_PRV_MEMWAIT_ZERO_WAIT_CYCLES; + } +#endif + +#if BSP_FEATURE_CGC_HAS_FLDWAITR && !BSP_PRV_CLOCK_SUPPLY_TYPE_B + if (updated_freq_hz <= BSP_PRV_FLDWAITR_MAX_ONE_WAIT_FREQ) + { + BSP_PRV_FLDWAITR_REG_ACCESS = BSP_PRV_FLDWAITR_ONE_WAIT_CYCLES; + } +#endif +} + +/*******************************************************************************************************************//** + * Initializes sub-clock according to the BSP configuration. + **********************************************************************************************************************/ +static void bsp_sosc_init (void) +{ +#if BSP_FEATURE_CGC_HAS_SOSC + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #if BSP_FEATURE_RTC_IS_IRTC + #if ((BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL)) + + /* If sub-clock is used as system clock source or HOCO FLL source, wait for VRTC-domain become valid */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->VRTSR_b.VRTVLD, 1); + #else + + /* Check if VRTC-domain area is valid. */ + if (1U == R_SYSTEM->VRTSR_b.VRTVLD) + #endif + #endif + { + if (R_SYSTEM->SOSCCR || (BSP_CLOCK_CFG_SUBCLOCK_DRIVE != R_SYSTEM->SOMCR_b.SODRV)) + { + /* If Sub-Clock Oscillator is started at reset, stop it before configuring the subclock drive. */ + if (0U == R_SYSTEM->SOSCCR) + { + /* Stop the Sub-Clock Oscillator to update the SOMCR register. */ + R_SYSTEM->SOSCCR = 1U; + + /* Allow a stop interval of at least 5 SOSC clock cycles before configuring the drive capacity + * and restarting Sub-Clock Oscillator. */ + R_BSP_SoftwareDelay(BSP_PRV_SUBCLOCK_STOP_INTERVAL_US, BSP_DELAY_UNITS_MICROSECONDS); + + /* + * r01uh0893ej0120-ra4m3 8.2.9 SOSCCR : Sub-Clock Oscillator Control Register: + * When changing the value of the SOSTP bit, execute subsequent instructions + * only after reading the bit to check that the value is updated. + */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->SOSCCR, 1U); + } + + /* Configure the subclock drive as subclock is not running. */ + R_SYSTEM->SOMCR = + ((BSP_CLOCK_CFG_SUBCLOCK_DRIVE << BSP_FEATURE_CGC_SODRV_SHIFT) & BSP_FEATURE_CGC_SODRV_MASK); + + R_SYSTEM->SOSCCR = 0U; + + /* r01uh0893ej0120-ra4m3 8.2.9 SOSCCR : Sub-Clock Oscillator Control Register: + * After setting the SOSTP bit to 0, use the sub-clock only after the sub-clock + * oscillation stabilization time has elapsed. + */ + #if (BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE) || (BSP_PRV_HOCO_USE_FLL) + R_BSP_SubClockStabilizeWait(BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS); + #endif + } + else + { + /* + * RA MCUs like RA6M5 requires to use sub-clock after oscillation stabilization time + * has elapsed on Power-On-Reset. But, POR is not well supported on EK boards, so BSP + * has to wait on any reset. Please override this function in application if waiting + * for stabilization is not required. + */ + R_BSP_SubClockStabilizeWaitAfterReset(BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS); + } + } + + #else + R_SYSTEM->SOSCCR = 1U; + #endif +#endif +} + +/*******************************************************************************************************************//** + * Octa-SPI clock update. + * @param[in] p_octaclk_setting Pointer to Octaclk setting structure which provides information regarding + * Octaclk source and divider settings to be applied. + * @note The requested Octaclk source must be started before calling this function. + **********************************************************************************************************************/ +void R_BSP_OctaclkUpdate (bsp_octaclk_settings_t * p_octaclk_setting) +{ +#if BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK + + /* Store initial value of CGC and LPM protection registers. */ + #if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + uint16_t bsp_prv_prcr_orig = R_SYSTEM->PRCR_NS; + #else + uint16_t bsp_prv_prcr_orig = R_SYSTEM->PRCR; + #endif + + /* Unlock CGC and LPM protection registers. */ + #if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = (uint16_t) BSP_PRV_PRCR_UNLOCK; + #else + R_SYSTEM->PRCR = (uint16_t) BSP_PRV_PRCR_UNLOCK; + #endif + + /* Request to change the OCTASPI Clock. */ + R_SYSTEM->OCTACKCR_b.OCTACKSREQ = 1; + + /* Wait for the clock to be stopped. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OCTACKCR_b.OCTACKSRDY, 1U); + + /* Write the settings. */ + R_SYSTEM->OCTACKDIVCR = (uint8_t) p_octaclk_setting->divider; + R_SYSTEM->OCTACKCR = (uint8_t) (p_octaclk_setting->source_clock | R_SYSTEM_OCTACKCR_OCTACKSREQ_Msk); + + /* Start the OCTASPI Clock by setting OCTACKSREQ to zero. */ + R_SYSTEM->OCTACKCR = (uint8_t) p_octaclk_setting->source_clock; + + /* Wait for the OCTASPI Clock to be started. */ + FSP_HARDWARE_REGISTER_WAIT(R_SYSTEM->OCTACKCR_b.OCTACKSRDY, 0U); + + /* Restore CGC and LPM protection registers. */ + #if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + R_SYSTEM->PRCR_NS = bsp_prv_prcr_orig; + #else + R_SYSTEM->PRCR = bsp_prv_prcr_orig; + #endif +#else + FSP_PARAMETER_NOT_USED(p_octaclk_setting); +#endif +} + +/*******************************************************************************************************************//** + * Gets the frequency of a source clock. + * @param[in] clock Pointer to Octaclk setting structure which provides information regarding + * Octaclk source and divider settings to be applied. + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +uint32_t R_BSP_SourceClockHzGet (fsp_priv_source_clock_t clock) +{ + uint32_t source_clock = g_clock_freq[clock]; + + return source_clock; +} + +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR + +/*******************************************************************************************************************//** + * RTC Initialization + * + * Some RTC registers must be initialized after reset to ensure correct operation. + * This reset is not performed automatically if the RTC is used in a project as it will + * be handled by the RTC driver if needed. + **********************************************************************************************************************/ +void R_BSP_Init_RTC (void) +{ + /* RA4M3 UM r01uh0893ej0120: Figure 23.14 Initialization procedure */ + + /* RCKSEL bit is not initialized after reset. Use LOCO as the default + * clock source if it is available. Note RCR4.ROPSEL is also cleared. + */ + + #if BSP_FEATURE_RTC_IS_IRTC + if (0U == R_SYSTEM->VRTSR_b.VRTVLD) // Return if VRTC-domain is invalid + { + return; + } + #endif + + #if BSP_PRV_LOCO_USED && !BSP_FEATURE_RTC_IS_IRTC + R_RTC->RCR4 = 1 << R_RTC_RCR4_RCKSEL_Pos; + #else + + /* Sses SOSC as clock source, or there is no clock source. */ + R_RTC->RCR4 = 0; + #endif + + #if !BSP_CFG_RTC_USED + #if BSP_PRV_LOCO_USED || (BSP_FEATURE_CGC_HAS_SOSC && BSP_CLOCK_CFG_SUBCLOCK_POPULATED) + + /*Wait for 6 clocks: 200 > (6*1000000) / 32K */ + R_BSP_SoftwareDelay(BSP_PRV_RTC_RESET_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + + R_RTC->RCR2 = 0; + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR2, 0); + + R_RTC->RCR2_b.RESET = 1; + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR2_b.RESET, 0); + + /* Disable RTC interrupts */ + R_RTC->RCR1 = 0; + + /* When the RCR1 register is modified, check that all the bits are updated before proceeding + * (see section 26.2.17 "RTC Control Register 1 (RCR1)" of the RA6M3 manual R01UH0886EJ0100)*/ + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR1, 0); + + #if BSP_FEATURE_RTC_HAS_TCEN + for (uint8_t index = 0U; index < BSP_FEATURE_RTC_RTCCR_CHANNELS; index++) + { + /* RTCCRn.TCEN must be cleared after reset. */ + R_RTC->RTCCR[index].RTCCR_b.TCEN = 0U; + FSP_HARDWARE_REGISTER_WAIT(R_RTC->RTCCR[index].RTCCR_b.TCEN, 0); + } + #endif + #endif + #endif + + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + + /* VBTICTLR.VCHnINEN must be cleared after reset. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + R_SYSTEM->VBTICTLR = 0U; + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + #endif +} + +#endif + +#if BSP_FEATURE_RTC_IS_IRTC + +/*******************************************************************************************************************//** + * To check sub-clock status. + * + * @retval FSP_SUCCESS Sub-clock is ready to use. + * @retval FSP_ERR_INVALID_HW_CONDITION VRTC-domain area is invalid. + * @retval FSP_ERR_NOT_INITIALIZED Sub-clock has not been inititalized yet. + **********************************************************************************************************************/ +fsp_err_t R_BSP_SubclockStatusGet () +{ + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + + /* Check if VRTC-domain area is invalid */ + FSP_ERROR_RETURN(1U == R_SYSTEM->VRTSR_b.VRTVLD, FSP_ERR_INVALID_HW_CONDITION); + + /* Check if SOSC has been configured */ + if ((0U == R_SYSTEM->SOSCCR) && (BSP_CLOCK_CFG_SUBCLOCK_DRIVE == R_SYSTEM->SOMCR_b.SODRV)) + { + return FSP_SUCCESS; + } + #endif + + return FSP_ERR_NOT_INITIALIZED; +} + +/*******************************************************************************************************************//** + * To initialize the sub-clock. + * + * @retval FSP_SUCCESS Sub-clock successfully initialized. + * @retval FSP_ERR_INVALID_HW_CONDITION Sub-clock cannot be initialized. + **********************************************************************************************************************/ +fsp_err_t R_BSP_SubclockInitialize () +{ + #if BSP_CLOCK_CFG_SUBCLOCK_POPULATED + + /* Check if VRTC-domain area is valid */ + FSP_ERROR_RETURN(1U == R_SYSTEM->VRTSR_b.VRTVLD, FSP_ERR_INVALID_HW_CONDITION); + + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_CGC); + bsp_sosc_init(); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_CGC); + + return FSP_SUCCESS; + #else + + return FSP_ERR_INVALID_HW_CONDITION; + #endif +} + +#endif + +/** @} (end addtogroup BSP_MCU_PRV) */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h new file mode 100644 index 0000000000..9d3f7cf294 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_clocks.h @@ -0,0 +1,1126 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_CLOCKS_H +#define BSP_CLOCKS_H + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_clock_cfg.h" +#include "bsp_api.h" + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* The following definitions are macros instead of enums because the values are used in preprocessor conditionals. */ +/* Must match SCKCR.CKSEL values. */ +#define BSP_CLOCKS_SOURCE_CLOCK_HOCO (0) // The high speed on chip oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_MOCO (1) // The middle speed on chip oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_LOCO (2) // The low speed on chip oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC (3) // The main oscillator. +#define BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK (4) // The subclock oscillator. +#if 0 == BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS && 0 == BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS + #define BSP_CLOCKS_SOURCE_CLOCK_PLL (5) // The PLL oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2 (6) // The PLL2 oscillator. +#elif (0 != BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS && 0 != BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS) + #define BSP_CLOCKS_SOURCE_CLOCK_PLL (5) // The PLL oscillator. Treated as PLL1P. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL1P (BSP_CLOCKS_SOURCE_CLOCK_PLL) + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2 (6) // The PLL2 oscillator. Treated as PLL2P. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2P (BSP_CLOCKS_SOURCE_CLOCK_PLL2) + #define BSP_CLOCKS_SOURCE_CLOCK_PLL1Q (7) // The PLL1Q oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL1R (8) // The PLL1R oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2Q (9) // The PLL2Q oscillator. + #define BSP_CLOCKS_SOURCE_CLOCK_PLL2R (10) // The PLL2R oscillator. +#endif + +/* PLLs are not supported in the following scenarios: + * - When using low voltage mode + * - When using an MCU that does not have a PLL + * - When the PLL only accepts the main oscillator as a source and XTAL is not used + */ +#if BSP_FEATURE_CGC_HAS_PLL && !BSP_CFG_USE_LOW_VOLTAGE_MODE && \ + !((1U != BSP_FEATURE_CGC_PLLCCR_TYPE) && \ + (3U != BSP_FEATURE_CGC_PLLCCR_TYPE) && \ + (4U != BSP_FEATURE_CGC_PLLCCR_TYPE) && \ + !BSP_CLOCK_CFG_MAIN_OSC_POPULATED) + #define BSP_PRV_PLL_SUPPORTED (1) + #if BSP_FEATURE_CGC_HAS_PLL2 + #define BSP_PRV_PLL2_SUPPORTED (1) + #else + #define BSP_PRV_PLL2_SUPPORTED (0) + #endif +#else + #define BSP_PRV_PLL_SUPPORTED (0) + #define BSP_PRV_PLL2_SUPPORTED (0) +#endif + +/* The ICLK frequency at startup is used to determine the ideal operating mode to set after startup. The PLL frequency + * calculated here is also used to initialize the g_clock_freq array. */ +#if BSP_PRV_PLL_SUPPORTED + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) && (BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE) + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_HOCO_HZ) + #else + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #endif +#endif +#if BSP_PRV_PLL2_SUPPORTED + #if BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL2_SOURCE + #define BSP_PRV_PLL2_SOURCE_FREQ_HZ (BSP_HOCO_HZ) + #else + #define BSP_PRV_PLL2_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #endif +#endif + +/* Frequencies of clocks with fixed freqencies. */ +#define BSP_LOCO_FREQ_HZ (32768U) // LOCO frequency is fixed at 32768 Hz +#define BSP_SUBCLOCK_FREQ_HZ (32768U) // Subclock frequency is 32768 Hz +#define BSP_MOCO_FREQ_HZ (8000000U) // MOCO frequency is fixed at 8 MHz + +#if BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_HOCO_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_MOCO == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_MOCO_FREQ_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_LOCO == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_LOCO_FREQ_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_SUBCLOCK == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_SUBCLOCK_FREQ_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_CLOCK_SOURCE + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_CFG_XTAL_HZ) +#elif BSP_CLOCKS_SOURCE_CLOCK_PLL == BSP_CFG_CLOCK_SOURCE + #if (1U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #if BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #elif BSP_CLOCKS_SOURCE_CLOCK_HOCO == BSP_CFG_PLL_SOURCE + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_HOCO_HZ) + #endif + #define BSP_STARTUP_SOURCE_CLOCK_HZ (((BSP_PRV_PLL_SOURCE_FREQ_HZ * (BSP_CFG_PLL_MUL + 1U)) >> 1) / \ + (BSP_CFG_PLL_DIV + 1U)) + #elif (2U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #define BSP_PRV_PLL_SOURCE_FREQ_HZ (BSP_CFG_XTAL_HZ) + #define BSP_STARTUP_SOURCE_CLOCK_HZ ((BSP_PRV_PLL_SOURCE_FREQ_HZ * ((BSP_CFG_PLL_MUL + 1U) >> 1)) >> \ + (BSP_CFG_PLL_DIV)) + #elif (3U == BSP_FEATURE_CGC_PLLCCR_TYPE) + #define BSP_STARTUP_SOURCE_CLOCK_HZ (BSP_CFG_PLL1P_FREQUENCY_HZ) + #endif +#endif + +/* Convert divisor bitfield settings into divisor values to calculate startup clocks */ +#define BSP_PRV_SCKDIVCR_DIV_VALUE(div) (((div) & 8U) ? (3U << ((div) & ~8U)) : (1U << (div))) +#define BSP_PRV_CPUCLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_CPUCLK_DIV) +#define BSP_PRV_ICLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_ICLK_DIV) +#define BSP_PRV_PCLKA_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKA_DIV) +#define BSP_PRV_PCLKB_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKB_DIV) +#define BSP_PRV_PCLKC_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKC_DIV) +#define BSP_PRV_PCLKD_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKD_DIV) +#define BSP_PRV_PCLKE_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_PCLKE_DIV) +#define BSP_PRV_BCLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_BCLK_DIV) +#define BSP_PRV_FCLK_DIV_VALUE BSP_PRV_SCKDIVCR_DIV_VALUE(BSP_CFG_FCLK_DIV) + +/* Startup clock frequency of each system clock. These macros are only helpful if the system clock and dividers have + * not changed since startup. These macros are not used in FSP modules except for the clock startup code. */ +#define BSP_STARTUP_CPUCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_CPUCLK_DIV_VALUE) +#define BSP_STARTUP_ICLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_ICLK_DIV_VALUE) +#define BSP_STARTUP_PCLKA_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKA_DIV_VALUE) +#define BSP_STARTUP_PCLKB_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKB_DIV_VALUE) +#define BSP_STARTUP_PCLKC_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKC_DIV_VALUE) +#define BSP_STARTUP_PCLKD_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKD_DIV_VALUE) +#define BSP_STARTUP_PCLKE_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_PCLKE_DIV_VALUE) +#define BSP_STARTUP_BCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_BCLK_DIV_VALUE) +#define BSP_STARTUP_FCLK_HZ (BSP_STARTUP_SOURCE_CLOCK_HZ / BSP_PRV_FCLK_DIV_VALUE) + +/* System clock divider options. */ +#define BSP_CLOCKS_SYS_CLOCK_DIV_1 (0) // System clock divided by 1. +#define BSP_CLOCKS_SYS_CLOCK_DIV_2 (1) // System clock divided by 2. +#define BSP_CLOCKS_SYS_CLOCK_DIV_4 (2) // System clock divided by 4. +#define BSP_CLOCKS_SYS_CLOCK_DIV_8 (3) // System clock divided by 8. +#define BSP_CLOCKS_SYS_CLOCK_DIV_16 (4) // System clock divided by 16. +#define BSP_CLOCKS_SYS_CLOCK_DIV_32 (5) // System clock divided by 32. +#define BSP_CLOCKS_SYS_CLOCK_DIV_64 (6) // System clock divided by 64. +#define BSP_CLOCKS_SYS_CLOCK_DIV_128 (7) // System clock divided by 128 (available for CLKOUT only). +#define BSP_CLOCKS_SYS_CLOCK_DIV_3 (8) // System clock divided by 3. +#define BSP_CLOCKS_SYS_CLOCK_DIV_6 (9) // System clock divided by 6. +#define BSP_CLOCKS_SYS_CLOCK_DIV_12 (10) // System clock divided by 12. + +/* USB clock divider options. */ +#define BSP_CLOCKS_USB_CLOCK_DIV_1 (0) // Divide USB source clock by 1 +#define BSP_CLOCKS_USB_CLOCK_DIV_2 (1) // Divide USB source clock by 2 +#define BSP_CLOCKS_USB_CLOCK_DIV_3 (2) // Divide USB source clock by 3 +#define BSP_CLOCKS_USB_CLOCK_DIV_4 (3) // Divide USB source clock by 4 +#define BSP_CLOCKS_USB_CLOCK_DIV_5 (4) // Divide USB source clock by 5 +#define BSP_CLOCKS_USB_CLOCK_DIV_6 (5) // Divide USB source clock by 6 +#define BSP_CLOCKS_USB_CLOCK_DIV_8 (7) // Divide USB source clock by 8 + +/* USB60 clock divider options. */ +#define BSP_CLOCKS_USB60_CLOCK_DIV_1 (0) // Divide USB60 source clock by 1 +#define BSP_CLOCKS_USB60_CLOCK_DIV_2 (1) // Divide USB60 source clock by 2 +#define BSP_CLOCKS_USB60_CLOCK_DIV_3 (5) // Divide USB60 source clock by 3 +#define BSP_CLOCKS_USB60_CLOCK_DIV_4 (2) // Divide USB60 source clock by 4 +#define BSP_CLOCKS_USB60_CLOCK_DIV_5 (6) // Divide USB60 source clock by 5 +#define BSP_CLOCKS_USB60_CLOCK_DIV_6 (3) // Divide USB66 source clock by 6 +#define BSP_CLOCKS_USB60_CLOCK_DIV_8 (4) // Divide USB60 source clock by 8 + +/* GLCD clock divider options. */ +#define BSP_CLOCKS_LCD_CLOCK_DIV_1 (0) // Divide LCD source clock by 1 +#define BSP_CLOCKS_LCD_CLOCK_DIV_2 (1) // Divide LCD source clock by 2 +#define BSP_CLOCKS_LCD_CLOCK_DIV_3 (5) // Divide LCD source clock by 3 +#define BSP_CLOCKS_LCD_CLOCK_DIV_4 (2) // Divide LCD source clock by 4 +#define BSP_CLOCKS_LCD_CLOCK_DIV_5 (6) // Divide LCD source clock by 5 +#define BSP_CLOCKS_LCD_CLOCK_DIV_6 (3) // Divide LCD source clock by 6 +#define BSP_CLOCKS_LCD_CLOCK_DIV_8 (4) // Divide LCD source clock by 8 + +/* OCTA clock divider options. */ +#define BSP_CLOCKS_OCTA_CLOCK_DIV_1 (0) // Divide OCTA source clock by 1 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_2 (1) // Divide OCTA source clock by 2 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_4 (2) // Divide OCTA source clock by 4 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_6 (3) // Divide OCTA source clock by 6 +#define BSP_CLOCKS_OCTA_CLOCK_DIV_8 (4) // Divide OCTA source clock by 8 + +/* CANFD clock divider options. */ +#define BSP_CLOCKS_CANFD_CLOCK_DIV_1 (0) // Divide CANFD source clock by 1 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_2 (1) // Divide CANFD source clock by 2 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_3 (5) // Divide CANFD source clock by 3 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_4 (2) // Divide CANFD source clock by 4 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_5 (6) // Divide CANFD source clock by 5 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_6 (3) // Divide CANFD source clock by 6 +#define BSP_CLOCKS_CANFD_CLOCK_DIV_8 (4) // Divide CANFD source clock by 8 + +/* SCI clock divider options. */ +#define BSP_CLOCKS_SCI_CLOCK_DIV_1 (0) // Divide SCI source clock by 1 +#define BSP_CLOCKS_SCI_CLOCK_DIV_2 (1) // Divide SCI source clock by 2 +#define BSP_CLOCKS_SCI_CLOCK_DIV_3 (5) // Divide SCI source clock by 3 +#define BSP_CLOCKS_SCI_CLOCK_DIV_4 (2) // Divide SCI source clock by 4 +#define BSP_CLOCKS_SCI_CLOCK_DIV_5 (6) // Divide SCI source clock by 5 +#define BSP_CLOCKS_SCI_CLOCK_DIV_6 (3) // Divide SCI source clock by 6 +#define BSP_CLOCKS_SCI_CLOCK_DIV_8 (4) // Divide SCI source clock by 8 + +/* SPI clock divider options. */ +#define BSP_CLOCKS_SPI_CLOCK_DIV_1 (0) // Divide SPI source clock by 1 +#define BSP_CLOCKS_SPI_CLOCK_DIV_2 (1) // Divide SPI source clock by 2 +#define BSP_CLOCKS_SPI_CLOCK_DIV_3 (5) // Divide SPI source clock by 3 +#define BSP_CLOCKS_SPI_CLOCK_DIV_4 (2) // Divide SPI source clock by 4 +#define BSP_CLOCKS_SPI_CLOCK_DIV_5 (6) // Divide SPI source clock by 5 +#define BSP_CLOCKS_SPI_CLOCK_DIV_6 (3) // Divide SPI source clock by 6 +#define BSP_CLOCKS_SPI_CLOCK_DIV_8 (4) // Divide SPI source clock by 8 + +/* SCISPI clock divider options. */ +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_1 (0) // Divide SCISPI source clock by 1 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_2 (1) // Divide SCISPI source clock by 2 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_4 (2) // Divide SCISPI source clock by 4 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_6 (3) // Divide SCISPI source clock by 6 +#define BSP_CLOCKS_SCISPI_CLOCK_DIV_8 (4) // Divide SCISPI source clock by 8 + +/* GPT clock divider options. */ +#define BSP_CLOCKS_GPT_CLOCK_DIV_1 (0) // Divide GPT source clock by 1 +#define BSP_CLOCKS_GPT_CLOCK_DIV_2 (1) // Divide GPT source clock by 2 +#define BSP_CLOCKS_GPT_CLOCK_DIV_3 (5) // Divide GPT source clock by 3 +#define BSP_CLOCKS_GPT_CLOCK_DIV_4 (2) // Divide GPT source clock by 4 +#define BSP_CLOCKS_GPT_CLOCK_DIV_5 (6) // Divide GPT source clock by 5 +#define BSP_CLOCKS_GPT_CLOCK_DIV_6 (3) // Divide GPT source clock by 6 +#define BSP_CLOCKS_GPT_CLOCK_DIV_8 (4) // Divide GPT source clock by 8 + +/* IIC clock divider options. */ +#define BSP_CLOCKS_IIC_CLOCK_DIV_1 (0) // Divide IIC source clock by 1 +#define BSP_CLOCKS_IIC_CLOCK_DIV_2 (1) // Divide IIC source clock by 2 +#define BSP_CLOCKS_IIC_CLOCK_DIV_4 (2) // Divide IIC source clock by 4 +#define BSP_CLOCKS_IIC_CLOCK_DIV_6 (3) // Divide IIC source clock by 6 +#define BSP_CLOCKS_IIC_CLOCK_DIV_8 (4) // Divide IIC source clock by 8 + +/* CEC clock divider options. */ +#define BSP_CLOCKS_CEC_CLOCK_DIV_1 (0) // Divide CEC source clock by 1 +#define BSP_CLOCKS_CEC_CLOCK_DIV_2 (1) // Divide CEC source clock by 2 + +/* I3C clock divider options. */ +#define BSP_CLOCKS_I3C_CLOCK_DIV_1 (0) // Divide I3C source clock by 1 +#define BSP_CLOCKS_I3C_CLOCK_DIV_2 (1) // Divide I3C source clock by 2 +#define BSP_CLOCKS_I3C_CLOCK_DIV_3 (5) // Divide I3C source clock by 3 +#define BSP_CLOCKS_I3C_CLOCK_DIV_4 (2) // Divide I3C source clock by 4 +#define BSP_CLOCKS_I3C_CLOCK_DIV_5 (6) // Divide I3C source clock by 5 +#define BSP_CLOCKS_I3C_CLOCK_DIV_6 (3) // Divide I3C source clock by 6 +#define BSP_CLOCKS_I3C_CLOCK_DIV_8 (4) // Divide I3C source clock by 8 + +/* PLL divider options. */ +#define BSP_CLOCKS_PLL_DIV_1 (0) +#define BSP_CLOCKS_PLL_DIV_2 (1) +#define BSP_CLOCKS_PLL_DIV_3 (2) +#define BSP_CLOCKS_PLL_DIV_4 (3) +#define BSP_CLOCKS_PLL_DIV_5 (4) +#define BSP_CLOCKS_PLL_DIV_6 (5) +#define BSP_CLOCKS_PLL_DIV_8 (7) +#define BSP_CLOCKS_PLL_DIV_9 (8) +#define BSP_CLOCKS_PLL_DIV_16 (15) + +/* PLL multiplier options. */ +#if (4U == BSP_FEATURE_CGC_PLLCCR_TYPE) + +/* Offset from decimal multiplier to register value for PLLCCR type 4. */ + #define BSP_PRV_CLOCKS_PLL_MUL_INT_OFFSET (574) + +/** + * X=Integer portion of the multiplier. + * Y=Fractional portion of the multiplier. (not used for this PLLCCR type) + */ + #define BSP_CLOCKS_PLL_MUL(X, Y) (X - BSP_PRV_CLOCKS_PLL_MUL_INT_OFFSET) + +#elif (3U != BSP_FEATURE_CGC_PLLCCR_TYPE) + +/** + * X=Integer portion of the multiplier. + * Y=Fractional portion of the multiplier. + */ + #define BSP_CLOCKS_PLL_MUL(X, Y) (((X) << 1 | ((Y) >= 50U ? 1 : 0)) - 1U) + +#else + + #define BSP_PRV_CLOCKS_PLL_MUL_INT_SHIFT (2U) + #define BSP_PRV_CLOCKS_PLL_MUL_FRAC_MASK (0x3U) + #define BSP_PRV_CLOCKS_PLL_MUL_FRAC_SHIFT (0U) + +/** + * X=Integer portion of the multiplier. + * Y=Fractional portion of the multiplier. + */ + #define BSP_CLOCKS_PLL_MUL(X, Y) ((((X) -1U) << 2U) | ((Y) == 50U ? 3U : ((Y) / 33U))) + +#endif + +/* Configuration option used to disable clock output. */ +#define BSP_CLOCKS_CLOCK_DISABLED (0xFFU) + +/* HOCO cycles per microsecond. */ +#define BSP_PRV_HOCO_CYCLES_PER_US (BSP_HOCO_HZ / 1000000U) + +/* Maximum number of delay cycles required to ensure 1 us passes between setting PLLCCR and clearing PLLCR. */ +#if BSP_HOCO_HZ < 48000000U + #define BSP_PRV_MAX_HOCO_CYCLES_PER_US (BSP_PRV_HOCO_CYCLES_PER_US) +#else + #define BSP_PRV_MAX_HOCO_CYCLES_PER_US (48U) +#endif + +/* Create a mask of valid bits in SCKDIVCR. */ +#define BSP_PRV_SCKDIVCR_ICLK_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 24) +#if BSP_FEATURE_CGC_HAS_PCLKD + #define BSP_PRV_SCKDIVCR_PCLKD_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 0) +#else + #define BSP_PRV_SCKDIVCR_PCLKD_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKC + #define BSP_PRV_SCKDIVCR_PCLKC_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 4) +#else + #define BSP_PRV_SCKDIVCR_PCLKC_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKB + #define BSP_PRV_SCKDIVCR_PCLKB_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 8) +#else + #define BSP_PRV_SCKDIVCR_PCLKB_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKA + #define BSP_PRV_SCKDIVCR_PCLKA_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 12) +#else + #define BSP_PRV_SCKDIVCR_PCLKA_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_BCLK || BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB + #define BSP_PRV_SCKDIVCR_BCLK_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 16) +#else + #define BSP_PRV_SCKDIVCR_BCLK_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_PCLKE + #define BSP_PRV_SCKDIVCR_PCLKE_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 24) +#else + #define BSP_PRV_SCKDIVCR_PCLKE_MASK (0U) +#endif +#if BSP_FEATURE_CGC_HAS_FCLK + #define BSP_PRV_SCKDIVCR_FCLK_MASK (FSP_PRV_SCKDIVCR_DIV_MASK << 28) +#else + #define BSP_PRV_SCKDIVCR_FCLK_MASK (0U) +#endif +#define BSP_PRV_SCKDIVCR_MASK (BSP_PRV_SCKDIVCR_ICLK_MASK | BSP_PRV_SCKDIVCR_PCLKD_MASK | \ + BSP_PRV_SCKDIVCR_PCLKC_MASK | BSP_PRV_SCKDIVCR_PCLKB_MASK | \ + BSP_PRV_SCKDIVCR_PCLKA_MASK | BSP_PRV_SCKDIVCR_BCLK_MASK | \ + BSP_PRV_SCKDIVCR_PCLKE_MASK | BSP_PRV_SCKDIVCR_FCLK_MASK) + +/* FLL is only used when enabled, present and the subclock is populated. */ +#if BSP_FEATURE_CGC_HAS_FLL && BSP_CFG_FLL_ENABLE && BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #define BSP_PRV_HOCO_USE_FLL (1) + #ifndef BSP_PRV_FLL_STABILIZATION_TIME_US + #define BSP_PRV_FLL_STABILIZATION_TIME_US (1800) + #endif +#else + #define BSP_PRV_HOCO_USE_FLL (0) + #define BSP_PRV_FLL_STABILIZATION_TIME_US (0) +#endif + +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR + #define BSP_PRV_RTC_RESET_DELAY_US (200) +#endif + +/* Operating power control modes. */ +#define BSP_PRV_OPERATING_MODE_HIGH_SPEED (0U) // Should match OPCCR OPCM high speed +#define BSP_PRV_OPERATING_MODE_MIDDLE_SPEED (1U) // Should match OPCCR OPCM middle speed +#define BSP_PRV_OPERATING_MODE_LOW_VOLTAGE (2U) // Should match OPCCR OPCM low voltage +#define BSP_PRV_OPERATING_MODE_LOW_SPEED (3U) // Should match OPCCR OPCM low speed +#define BSP_PRV_OPERATING_MODE_SUBOSC_SPEED (4U) // Can be any value not otherwise used + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +#if BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD +typedef struct +{ + uint32_t pll_freq; +} bsp_clock_update_callback_args_t; + + #if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * bsp_clock_update_callback_t)(bsp_clock_update_callback_args_t * + p_callback_args); + #elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile bsp_clock_update_callback_t)(bsp_clock_update_callback_args_t * + p_callback_args); + #endif + +#endif + +/** PLL multiplier values */ +typedef enum e_cgc_pll_mul +{ + CGC_PLL_MUL_8_0 = BSP_CLOCKS_PLL_MUL(8U, 0U), ///< PLL multiplier of 8.0 + CGC_PLL_MUL_9_0 = BSP_CLOCKS_PLL_MUL(9U, 0U), ///< PLL multiplier of 9.0 + CGC_PLL_MUL_10_0 = BSP_CLOCKS_PLL_MUL(10U, 0U), ///< PLL multiplier of 10.00 + CGC_PLL_MUL_10_5 = BSP_CLOCKS_PLL_MUL(10U, 50U), ///< PLL multiplier of 10.50 + CGC_PLL_MUL_11_0 = BSP_CLOCKS_PLL_MUL(11U, 0U), ///< PLL multiplier of 11.00 + CGC_PLL_MUL_11_5 = BSP_CLOCKS_PLL_MUL(11U, 50U), ///< PLL multiplier of 11.50 + CGC_PLL_MUL_12_0 = BSP_CLOCKS_PLL_MUL(12U, 0U), ///< PLL multiplier of 12.00 + CGC_PLL_MUL_12_5 = BSP_CLOCKS_PLL_MUL(12U, 50U), ///< PLL multiplier of 12.50 + CGC_PLL_MUL_13_0 = BSP_CLOCKS_PLL_MUL(13U, 0U), ///< PLL multiplier of 13.00 + CGC_PLL_MUL_13_5 = BSP_CLOCKS_PLL_MUL(13U, 50U), ///< PLL multiplier of 13.50 + CGC_PLL_MUL_14_0 = BSP_CLOCKS_PLL_MUL(14U, 0U), ///< PLL multiplier of 14.00 + CGC_PLL_MUL_14_5 = BSP_CLOCKS_PLL_MUL(14U, 50U), ///< PLL multiplier of 14.50 + CGC_PLL_MUL_15_0 = BSP_CLOCKS_PLL_MUL(15U, 0U), ///< PLL multiplier of 15.00 + CGC_PLL_MUL_15_5 = BSP_CLOCKS_PLL_MUL(15U, 50U), ///< PLL multiplier of 15.50 + CGC_PLL_MUL_16_0 = BSP_CLOCKS_PLL_MUL(16U, 0U), ///< PLL multiplier of 16.00 + CGC_PLL_MUL_16_5 = BSP_CLOCKS_PLL_MUL(16U, 50U), ///< PLL multiplier of 16.50 + CGC_PLL_MUL_17_0 = BSP_CLOCKS_PLL_MUL(17U, 0U), ///< PLL multiplier of 17.00 + CGC_PLL_MUL_17_5 = BSP_CLOCKS_PLL_MUL(17U, 50U), ///< PLL multiplier of 17.50 + CGC_PLL_MUL_18_0 = BSP_CLOCKS_PLL_MUL(18U, 0U), ///< PLL multiplier of 18.00 + CGC_PLL_MUL_18_5 = BSP_CLOCKS_PLL_MUL(18U, 50U), ///< PLL multiplier of 18.50 + CGC_PLL_MUL_19_0 = BSP_CLOCKS_PLL_MUL(19U, 0U), ///< PLL multiplier of 19.00 + CGC_PLL_MUL_19_5 = BSP_CLOCKS_PLL_MUL(19U, 50U), ///< PLL multiplier of 19.50 + CGC_PLL_MUL_20_0 = BSP_CLOCKS_PLL_MUL(20U, 0U), ///< PLL multiplier of 20.00 + CGC_PLL_MUL_20_5 = BSP_CLOCKS_PLL_MUL(20U, 50U), ///< PLL multiplier of 20.50 + CGC_PLL_MUL_21_0 = BSP_CLOCKS_PLL_MUL(21U, 0U), ///< PLL multiplier of 21.00 + CGC_PLL_MUL_21_5 = BSP_CLOCKS_PLL_MUL(21U, 50U), ///< PLL multiplier of 21.50 + CGC_PLL_MUL_22_0 = BSP_CLOCKS_PLL_MUL(22U, 0U), ///< PLL multiplier of 22.00 + CGC_PLL_MUL_22_5 = BSP_CLOCKS_PLL_MUL(22U, 50U), ///< PLL multiplier of 22.50 + CGC_PLL_MUL_23_0 = BSP_CLOCKS_PLL_MUL(23U, 0U), ///< PLL multiplier of 23.00 + CGC_PLL_MUL_23_5 = BSP_CLOCKS_PLL_MUL(23U, 50U), ///< PLL multiplier of 23.50 + CGC_PLL_MUL_24_0 = BSP_CLOCKS_PLL_MUL(24U, 0U), ///< PLL multiplier of 24.00 + CGC_PLL_MUL_24_5 = BSP_CLOCKS_PLL_MUL(24U, 50U), ///< PLL multiplier of 24.50 + CGC_PLL_MUL_25_0 = BSP_CLOCKS_PLL_MUL(25U, 0U), ///< PLL multiplier of 25.00 + CGC_PLL_MUL_25_5 = BSP_CLOCKS_PLL_MUL(25U, 50U), ///< PLL multiplier of 25.50 + CGC_PLL_MUL_26_0 = BSP_CLOCKS_PLL_MUL(26U, 0U), ///< PLL multiplier of 26.00 + CGC_PLL_MUL_26_33 = BSP_CLOCKS_PLL_MUL(26U, 33U), ///< PLL multiplier of 26.33 + CGC_PLL_MUL_26_5 = BSP_CLOCKS_PLL_MUL(26U, 50U), ///< PLL multiplier of 26.50 + CGC_PLL_MUL_26_66 = BSP_CLOCKS_PLL_MUL(26U, 66U), ///< PLL multiplier of 26.66 + CGC_PLL_MUL_27_0 = BSP_CLOCKS_PLL_MUL(27U, 0U), ///< PLL multiplier of 27.00 + CGC_PLL_MUL_27_33 = BSP_CLOCKS_PLL_MUL(27U, 33U), ///< PLL multiplier of 27.33 + CGC_PLL_MUL_27_5 = BSP_CLOCKS_PLL_MUL(27U, 50U), ///< PLL multiplier of 27.50 + CGC_PLL_MUL_27_66 = BSP_CLOCKS_PLL_MUL(27U, 66U), ///< PLL multiplier of 27.66 + CGC_PLL_MUL_28_0 = BSP_CLOCKS_PLL_MUL(28U, 0U), ///< PLL multiplier of 28.00 + CGC_PLL_MUL_28_33 = BSP_CLOCKS_PLL_MUL(28U, 33U), ///< PLL multiplier of 28.33 + CGC_PLL_MUL_28_5 = BSP_CLOCKS_PLL_MUL(28U, 50U), ///< PLL multiplier of 28.50 + CGC_PLL_MUL_28_66 = BSP_CLOCKS_PLL_MUL(28U, 66U), ///< PLL multiplier of 28.66 + CGC_PLL_MUL_29_0 = BSP_CLOCKS_PLL_MUL(29U, 0U), ///< PLL multiplier of 29.00 + CGC_PLL_MUL_29_33 = BSP_CLOCKS_PLL_MUL(29U, 33U), ///< PLL multiplier of 29.33 + CGC_PLL_MUL_29_5 = BSP_CLOCKS_PLL_MUL(29U, 50U), ///< PLL multiplier of 29.50 + CGC_PLL_MUL_29_66 = BSP_CLOCKS_PLL_MUL(29U, 66U), ///< PLL multiplier of 29.66 + CGC_PLL_MUL_30_0 = BSP_CLOCKS_PLL_MUL(30U, 0U), ///< PLL multiplier of 30.00 + CGC_PLL_MUL_30_33 = BSP_CLOCKS_PLL_MUL(30U, 33U), ///< PLL multiplier of 30.33 + CGC_PLL_MUL_30_5 = BSP_CLOCKS_PLL_MUL(30U, 50U), ///< PLL multiplier of 30.50 + CGC_PLL_MUL_30_66 = BSP_CLOCKS_PLL_MUL(30U, 66U), ///< PLL multiplier of 30.66 + CGC_PLL_MUL_31_0 = BSP_CLOCKS_PLL_MUL(31U, 0U), ///< PLL multiplier of 31.00 + CGC_PLL_MUL_31_33 = BSP_CLOCKS_PLL_MUL(31U, 33U), ///< PLL multiplier of 31.33 + CGC_PLL_MUL_31_5 = BSP_CLOCKS_PLL_MUL(31U, 50U), ///< PLL multiplier of 31.50 + CGC_PLL_MUL_31_66 = BSP_CLOCKS_PLL_MUL(31U, 66U), ///< PLL multiplier of 31.66 + CGC_PLL_MUL_32_0 = BSP_CLOCKS_PLL_MUL(32U, 0U), ///< PLL multiplier of 32.00 + CGC_PLL_MUL_32_33 = BSP_CLOCKS_PLL_MUL(32U, 33U), ///< PLL multiplier of 32.33 + CGC_PLL_MUL_32_5 = BSP_CLOCKS_PLL_MUL(32U, 50U), ///< PLL multiplier of 32.50 + CGC_PLL_MUL_32_66 = BSP_CLOCKS_PLL_MUL(32U, 66U), ///< PLL multiplier of 32.66 + CGC_PLL_MUL_33_0 = BSP_CLOCKS_PLL_MUL(33U, 0U), ///< PLL multiplier of 33.00 + CGC_PLL_MUL_33_33 = BSP_CLOCKS_PLL_MUL(33U, 33U), ///< PLL multiplier of 33.33 + CGC_PLL_MUL_33_5 = BSP_CLOCKS_PLL_MUL(33U, 50U), ///< PLL multiplier of 33.50 + CGC_PLL_MUL_33_66 = BSP_CLOCKS_PLL_MUL(33U, 66U), ///< PLL multiplier of 33.66 + CGC_PLL_MUL_34_0 = BSP_CLOCKS_PLL_MUL(34U, 0U), ///< PLL multiplier of 34.00 + CGC_PLL_MUL_34_33 = BSP_CLOCKS_PLL_MUL(34U, 33U), ///< PLL multiplier of 34.33 + CGC_PLL_MUL_34_5 = BSP_CLOCKS_PLL_MUL(34U, 50U), ///< PLL multiplier of 34.50 + CGC_PLL_MUL_34_66 = BSP_CLOCKS_PLL_MUL(34U, 66U), ///< PLL multiplier of 34.66 + CGC_PLL_MUL_35_0 = BSP_CLOCKS_PLL_MUL(35U, 0U), ///< PLL multiplier of 35.00 + CGC_PLL_MUL_35_33 = BSP_CLOCKS_PLL_MUL(35U, 33U), ///< PLL multiplier of 35.33 + CGC_PLL_MUL_35_5 = BSP_CLOCKS_PLL_MUL(35U, 50U), ///< PLL multiplier of 35.50 + CGC_PLL_MUL_35_66 = BSP_CLOCKS_PLL_MUL(35U, 66U), ///< PLL multiplier of 35.66 + CGC_PLL_MUL_36_0 = BSP_CLOCKS_PLL_MUL(36U, 0U), ///< PLL multiplier of 36.00 + CGC_PLL_MUL_36_33 = BSP_CLOCKS_PLL_MUL(36U, 33U), ///< PLL multiplier of 36.33 + CGC_PLL_MUL_36_5 = BSP_CLOCKS_PLL_MUL(36U, 50U), ///< PLL multiplier of 36.50 + CGC_PLL_MUL_36_66 = BSP_CLOCKS_PLL_MUL(36U, 66U), ///< PLL multiplier of 36.66 + CGC_PLL_MUL_37_0 = BSP_CLOCKS_PLL_MUL(37U, 0U), ///< PLL multiplier of 37.00 + CGC_PLL_MUL_37_33 = BSP_CLOCKS_PLL_MUL(37U, 33U), ///< PLL multiplier of 37.33 + CGC_PLL_MUL_37_5 = BSP_CLOCKS_PLL_MUL(37U, 50U), ///< PLL multiplier of 37.50 + CGC_PLL_MUL_37_66 = BSP_CLOCKS_PLL_MUL(37U, 66U), ///< PLL multiplier of 37.66 + CGC_PLL_MUL_38_0 = BSP_CLOCKS_PLL_MUL(38U, 0U), ///< PLL multiplier of 38.00 + CGC_PLL_MUL_38_33 = BSP_CLOCKS_PLL_MUL(38U, 33U), ///< PLL multiplier of 38.33 + CGC_PLL_MUL_38_5 = BSP_CLOCKS_PLL_MUL(38U, 50U), ///< PLL multiplier of 38.50 + CGC_PLL_MUL_38_66 = BSP_CLOCKS_PLL_MUL(38U, 66U), ///< PLL multiplier of 38.66 + CGC_PLL_MUL_39_0 = BSP_CLOCKS_PLL_MUL(39U, 0U), ///< PLL multiplier of 39.00 + CGC_PLL_MUL_39_33 = BSP_CLOCKS_PLL_MUL(39U, 33U), ///< PLL multiplier of 39.33 + CGC_PLL_MUL_39_5 = BSP_CLOCKS_PLL_MUL(39U, 50U), ///< PLL multiplier of 39.50 + CGC_PLL_MUL_39_66 = BSP_CLOCKS_PLL_MUL(39U, 66U), ///< PLL multiplier of 39.66 + CGC_PLL_MUL_40_0 = BSP_CLOCKS_PLL_MUL(40U, 0U), ///< PLL multiplier of 40.00 + CGC_PLL_MUL_40_33 = BSP_CLOCKS_PLL_MUL(40U, 33U), ///< PLL multiplier of 40.33 + CGC_PLL_MUL_40_5 = BSP_CLOCKS_PLL_MUL(40U, 50U), ///< PLL multiplier of 40.50 + CGC_PLL_MUL_40_66 = BSP_CLOCKS_PLL_MUL(40U, 66U), ///< PLL multiplier of 40.66 + CGC_PLL_MUL_41_0 = BSP_CLOCKS_PLL_MUL(41U, 0U), ///< PLL multiplier of 41.00 + CGC_PLL_MUL_41_33 = BSP_CLOCKS_PLL_MUL(41U, 33U), ///< PLL multiplier of 41.33 + CGC_PLL_MUL_41_5 = BSP_CLOCKS_PLL_MUL(41U, 50U), ///< PLL multiplier of 41.50 + CGC_PLL_MUL_41_66 = BSP_CLOCKS_PLL_MUL(41U, 66U), ///< PLL multiplier of 41.66 + CGC_PLL_MUL_42_0 = BSP_CLOCKS_PLL_MUL(42U, 0U), ///< PLL multiplier of 42.00 + CGC_PLL_MUL_42_33 = BSP_CLOCKS_PLL_MUL(42U, 33U), ///< PLL multiplier of 42.33 + CGC_PLL_MUL_42_5 = BSP_CLOCKS_PLL_MUL(42U, 50U), ///< PLL multiplier of 42.50 + CGC_PLL_MUL_42_66 = BSP_CLOCKS_PLL_MUL(42U, 66U), ///< PLL multiplier of 42.66 + CGC_PLL_MUL_43_0 = BSP_CLOCKS_PLL_MUL(43U, 0U), ///< PLL multiplier of 43.00 + CGC_PLL_MUL_43_33 = BSP_CLOCKS_PLL_MUL(43U, 33U), ///< PLL multiplier of 43.33 + CGC_PLL_MUL_43_5 = BSP_CLOCKS_PLL_MUL(43U, 50U), ///< PLL multiplier of 43.50 + CGC_PLL_MUL_43_66 = BSP_CLOCKS_PLL_MUL(43U, 66U), ///< PLL multiplier of 43.66 + CGC_PLL_MUL_44_0 = BSP_CLOCKS_PLL_MUL(44U, 0U), ///< PLL multiplier of 44.00 + CGC_PLL_MUL_44_33 = BSP_CLOCKS_PLL_MUL(44U, 33U), ///< PLL multiplier of 44.33 + CGC_PLL_MUL_44_5 = BSP_CLOCKS_PLL_MUL(44U, 50U), ///< PLL multiplier of 44.50 + CGC_PLL_MUL_44_66 = BSP_CLOCKS_PLL_MUL(44U, 66U), ///< PLL multiplier of 44.66 + CGC_PLL_MUL_45_0 = BSP_CLOCKS_PLL_MUL(45U, 0U), ///< PLL multiplier of 45.00 + CGC_PLL_MUL_45_33 = BSP_CLOCKS_PLL_MUL(45U, 33U), ///< PLL multiplier of 45.33 + CGC_PLL_MUL_45_5 = BSP_CLOCKS_PLL_MUL(45U, 50U), ///< PLL multiplier of 45.50 + CGC_PLL_MUL_45_66 = BSP_CLOCKS_PLL_MUL(45U, 66U), ///< PLL multiplier of 45.66 + CGC_PLL_MUL_46_0 = BSP_CLOCKS_PLL_MUL(46U, 0U), ///< PLL multiplier of 46.00 + CGC_PLL_MUL_46_33 = BSP_CLOCKS_PLL_MUL(46U, 33U), ///< PLL multiplier of 46.33 + CGC_PLL_MUL_46_5 = BSP_CLOCKS_PLL_MUL(46U, 50U), ///< PLL multiplier of 46.50 + CGC_PLL_MUL_46_66 = BSP_CLOCKS_PLL_MUL(46U, 66U), ///< PLL multiplier of 46.66 + CGC_PLL_MUL_47_0 = BSP_CLOCKS_PLL_MUL(47U, 0U), ///< PLL multiplier of 47.00 + CGC_PLL_MUL_47_33 = BSP_CLOCKS_PLL_MUL(47U, 33U), ///< PLL multiplier of 47.33 + CGC_PLL_MUL_47_5 = BSP_CLOCKS_PLL_MUL(47U, 50U), ///< PLL multiplier of 47.50 + CGC_PLL_MUL_47_66 = BSP_CLOCKS_PLL_MUL(47U, 66U), ///< PLL multiplier of 47.66 + CGC_PLL_MUL_48_0 = BSP_CLOCKS_PLL_MUL(48U, 0U), ///< PLL multiplier of 48.00 + CGC_PLL_MUL_48_33 = BSP_CLOCKS_PLL_MUL(48U, 33U), ///< PLL multiplier of 48.33 + CGC_PLL_MUL_48_5 = BSP_CLOCKS_PLL_MUL(48U, 50U), ///< PLL multiplier of 48.50 + CGC_PLL_MUL_48_66 = BSP_CLOCKS_PLL_MUL(48U, 66U), ///< PLL multiplier of 48.66 + CGC_PLL_MUL_49_0 = BSP_CLOCKS_PLL_MUL(49U, 0U), ///< PLL multiplier of 49.00 + CGC_PLL_MUL_49_33 = BSP_CLOCKS_PLL_MUL(49U, 33U), ///< PLL multiplier of 49.33 + CGC_PLL_MUL_49_5 = BSP_CLOCKS_PLL_MUL(49U, 50U), ///< PLL multiplier of 49.50 + CGC_PLL_MUL_49_66 = BSP_CLOCKS_PLL_MUL(49U, 66U), ///< PLL multiplier of 49.66 + CGC_PLL_MUL_50_0 = BSP_CLOCKS_PLL_MUL(50U, 0U), ///< PLL multiplier of 50.00 + CGC_PLL_MUL_50_33 = BSP_CLOCKS_PLL_MUL(50U, 33U), ///< PLL multiplier of 50.33 + CGC_PLL_MUL_50_5 = BSP_CLOCKS_PLL_MUL(50U, 50U), ///< PLL multiplier of 50.50 + CGC_PLL_MUL_50_66 = BSP_CLOCKS_PLL_MUL(50U, 66U), ///< PLL multiplier of 50.66 + CGC_PLL_MUL_51_0 = BSP_CLOCKS_PLL_MUL(51U, 0U), ///< PLL multiplier of 51.00 + CGC_PLL_MUL_51_33 = BSP_CLOCKS_PLL_MUL(51U, 33U), ///< PLL multiplier of 51.33 + CGC_PLL_MUL_51_5 = BSP_CLOCKS_PLL_MUL(51U, 50U), ///< PLL multiplier of 51.50 + CGC_PLL_MUL_51_66 = BSP_CLOCKS_PLL_MUL(51U, 66U), ///< PLL multiplier of 51.66 + CGC_PLL_MUL_52_0 = BSP_CLOCKS_PLL_MUL(52U, 0U), ///< PLL multiplier of 52.00 + CGC_PLL_MUL_52_33 = BSP_CLOCKS_PLL_MUL(52U, 33U), ///< PLL multiplier of 52.33 + CGC_PLL_MUL_52_5 = BSP_CLOCKS_PLL_MUL(52U, 50U), ///< PLL multiplier of 52.50 + CGC_PLL_MUL_52_66 = BSP_CLOCKS_PLL_MUL(52U, 66U), ///< PLL multiplier of 52.66 + CGC_PLL_MUL_53_0 = BSP_CLOCKS_PLL_MUL(53U, 0U), ///< PLL multiplier of 53.00 + CGC_PLL_MUL_53_33 = BSP_CLOCKS_PLL_MUL(53U, 33U), ///< PLL multiplier of 53.33 + CGC_PLL_MUL_53_5 = BSP_CLOCKS_PLL_MUL(53U, 50U), ///< PLL multiplier of 53.50 + CGC_PLL_MUL_53_66 = BSP_CLOCKS_PLL_MUL(53U, 66U), ///< PLL multiplier of 53.66 + CGC_PLL_MUL_54_0 = BSP_CLOCKS_PLL_MUL(54U, 0U), ///< PLL multiplier of 54.00 + CGC_PLL_MUL_54_33 = BSP_CLOCKS_PLL_MUL(54U, 33U), ///< PLL multiplier of 54.33 + CGC_PLL_MUL_54_5 = BSP_CLOCKS_PLL_MUL(54U, 50U), ///< PLL multiplier of 54.50 + CGC_PLL_MUL_54_66 = BSP_CLOCKS_PLL_MUL(54U, 66U), ///< PLL multiplier of 54.66 + CGC_PLL_MUL_55_0 = BSP_CLOCKS_PLL_MUL(55U, 0U), ///< PLL multiplier of 55.00 + CGC_PLL_MUL_55_33 = BSP_CLOCKS_PLL_MUL(55U, 33U), ///< PLL multiplier of 55.33 + CGC_PLL_MUL_55_5 = BSP_CLOCKS_PLL_MUL(55U, 50U), ///< PLL multiplier of 55.50 + CGC_PLL_MUL_55_66 = BSP_CLOCKS_PLL_MUL(55U, 66U), ///< PLL multiplier of 55.66 + CGC_PLL_MUL_56_0 = BSP_CLOCKS_PLL_MUL(56U, 0U), ///< PLL multiplier of 56.00 + CGC_PLL_MUL_56_33 = BSP_CLOCKS_PLL_MUL(56U, 33U), ///< PLL multiplier of 56.33 + CGC_PLL_MUL_56_5 = BSP_CLOCKS_PLL_MUL(56U, 50U), ///< PLL multiplier of 56.50 + CGC_PLL_MUL_56_66 = BSP_CLOCKS_PLL_MUL(56U, 66U), ///< PLL multiplier of 56.66 + CGC_PLL_MUL_57_0 = BSP_CLOCKS_PLL_MUL(57U, 0U), ///< PLL multiplier of 57.00 + CGC_PLL_MUL_57_33 = BSP_CLOCKS_PLL_MUL(57U, 33U), ///< PLL multiplier of 57.33 + CGC_PLL_MUL_57_5 = BSP_CLOCKS_PLL_MUL(57U, 50U), ///< PLL multiplier of 57.50 + CGC_PLL_MUL_57_66 = BSP_CLOCKS_PLL_MUL(57U, 66U), ///< PLL multiplier of 57.66 + CGC_PLL_MUL_58_0 = BSP_CLOCKS_PLL_MUL(58U, 0U), ///< PLL multiplier of 58.00 + CGC_PLL_MUL_58_33 = BSP_CLOCKS_PLL_MUL(58U, 33U), ///< PLL multiplier of 58.33 + CGC_PLL_MUL_58_5 = BSP_CLOCKS_PLL_MUL(58U, 50U), ///< PLL multiplier of 58.50 + CGC_PLL_MUL_58_66 = BSP_CLOCKS_PLL_MUL(58U, 66U), ///< PLL multiplier of 58.66 + CGC_PLL_MUL_59_0 = BSP_CLOCKS_PLL_MUL(59U, 0U), ///< PLL multiplier of 59.00 + CGC_PLL_MUL_59_33 = BSP_CLOCKS_PLL_MUL(59U, 33U), ///< PLL multiplier of 59.33 + CGC_PLL_MUL_59_5 = BSP_CLOCKS_PLL_MUL(59U, 50U), ///< PLL multiplier of 59.50 + CGC_PLL_MUL_59_66 = BSP_CLOCKS_PLL_MUL(59U, 66U), ///< PLL multiplier of 59.66 + CGC_PLL_MUL_60_0 = BSP_CLOCKS_PLL_MUL(60U, 0U), ///< PLL multiplier of 60.00 + CGC_PLL_MUL_60_33 = BSP_CLOCKS_PLL_MUL(60U, 33U), ///< PLL multiplier of 60.33 + CGC_PLL_MUL_60_5 = BSP_CLOCKS_PLL_MUL(60U, 50U), ///< PLL multiplier of 60.50 + CGC_PLL_MUL_60_66 = BSP_CLOCKS_PLL_MUL(60U, 66U), ///< PLL multiplier of 60.66 + CGC_PLL_MUL_61_0 = BSP_CLOCKS_PLL_MUL(61U, 0U), ///< PLL multiplier of 61.00 + CGC_PLL_MUL_61_33 = BSP_CLOCKS_PLL_MUL(61U, 33U), ///< PLL multiplier of 61.33 + CGC_PLL_MUL_61_5 = BSP_CLOCKS_PLL_MUL(61U, 50U), ///< PLL multiplier of 61.50 + CGC_PLL_MUL_61_66 = BSP_CLOCKS_PLL_MUL(61U, 66U), ///< PLL multiplier of 61.66 + CGC_PLL_MUL_62_0 = BSP_CLOCKS_PLL_MUL(62U, 0U), ///< PLL multiplier of 62.00 + CGC_PLL_MUL_62_33 = BSP_CLOCKS_PLL_MUL(62U, 33U), ///< PLL multiplier of 62.33 + CGC_PLL_MUL_62_5 = BSP_CLOCKS_PLL_MUL(62U, 50U), ///< PLL multiplier of 62.50 + CGC_PLL_MUL_62_66 = BSP_CLOCKS_PLL_MUL(62U, 66U), ///< PLL multiplier of 62.66 + CGC_PLL_MUL_63_0 = BSP_CLOCKS_PLL_MUL(63U, 0U), ///< PLL multiplier of 63.00 + CGC_PLL_MUL_63_33 = BSP_CLOCKS_PLL_MUL(63U, 33U), ///< PLL multiplier of 63.33 + CGC_PLL_MUL_63_5 = BSP_CLOCKS_PLL_MUL(63U, 50U), ///< PLL multiplier of 63.50 + CGC_PLL_MUL_63_66 = BSP_CLOCKS_PLL_MUL(63U, 66U), ///< PLL multiplier of 63.66 + CGC_PLL_MUL_64_0 = BSP_CLOCKS_PLL_MUL(64U, 0U), ///< PLL multiplier of 64.00 + CGC_PLL_MUL_64_33 = BSP_CLOCKS_PLL_MUL(64U, 33U), ///< PLL multiplier of 64.33 + CGC_PLL_MUL_64_5 = BSP_CLOCKS_PLL_MUL(64U, 50U), ///< PLL multiplier of 64.50 + CGC_PLL_MUL_64_66 = BSP_CLOCKS_PLL_MUL(64U, 66U), ///< PLL multiplier of 64.66 + CGC_PLL_MUL_65_0 = BSP_CLOCKS_PLL_MUL(65U, 0U), ///< PLL multiplier of 65.00 + CGC_PLL_MUL_65_33 = BSP_CLOCKS_PLL_MUL(65U, 33U), ///< PLL multiplier of 65.33 + CGC_PLL_MUL_65_5 = BSP_CLOCKS_PLL_MUL(65U, 50U), ///< PLL multiplier of 65.50 + CGC_PLL_MUL_65_66 = BSP_CLOCKS_PLL_MUL(65U, 66U), ///< PLL multiplier of 65.66 + CGC_PLL_MUL_66_0 = BSP_CLOCKS_PLL_MUL(66U, 0U), ///< PLL multiplier of 66.00 + CGC_PLL_MUL_66_33 = BSP_CLOCKS_PLL_MUL(66U, 33U), ///< PLL multiplier of 66.33 + CGC_PLL_MUL_66_5 = BSP_CLOCKS_PLL_MUL(66U, 50U), ///< PLL multiplier of 66.50 + CGC_PLL_MUL_66_66 = BSP_CLOCKS_PLL_MUL(66U, 66U), ///< PLL multiplier of 66.66 + CGC_PLL_MUL_67_0 = BSP_CLOCKS_PLL_MUL(67U, 0U), ///< PLL multiplier of 67.00 + CGC_PLL_MUL_67_33 = BSP_CLOCKS_PLL_MUL(67U, 33U), ///< PLL multiplier of 67.33 + CGC_PLL_MUL_67_5 = BSP_CLOCKS_PLL_MUL(67U, 50U), ///< PLL multiplier of 67.50 + CGC_PLL_MUL_67_66 = BSP_CLOCKS_PLL_MUL(67U, 66U), ///< PLL multiplier of 67.66 + CGC_PLL_MUL_68_0 = BSP_CLOCKS_PLL_MUL(68U, 0U), ///< PLL multiplier of 68.00 + CGC_PLL_MUL_68_33 = BSP_CLOCKS_PLL_MUL(68U, 33U), ///< PLL multiplier of 68.33 + CGC_PLL_MUL_68_5 = BSP_CLOCKS_PLL_MUL(68U, 50U), ///< PLL multiplier of 68.50 + CGC_PLL_MUL_68_66 = BSP_CLOCKS_PLL_MUL(68U, 66U), ///< PLL multiplier of 68.66 + CGC_PLL_MUL_69_0 = BSP_CLOCKS_PLL_MUL(69U, 0U), ///< PLL multiplier of 69.00 + CGC_PLL_MUL_69_33 = BSP_CLOCKS_PLL_MUL(69U, 33U), ///< PLL multiplier of 69.33 + CGC_PLL_MUL_69_5 = BSP_CLOCKS_PLL_MUL(69U, 50U), ///< PLL multiplier of 69.50 + CGC_PLL_MUL_69_66 = BSP_CLOCKS_PLL_MUL(69U, 66U), ///< PLL multiplier of 69.66 + CGC_PLL_MUL_70_0 = BSP_CLOCKS_PLL_MUL(70U, 0U), ///< PLL multiplier of 70.00 + CGC_PLL_MUL_70_33 = BSP_CLOCKS_PLL_MUL(70U, 33U), ///< PLL multiplier of 70.33 + CGC_PLL_MUL_70_5 = BSP_CLOCKS_PLL_MUL(70U, 50U), ///< PLL multiplier of 70.50 + CGC_PLL_MUL_70_66 = BSP_CLOCKS_PLL_MUL(70U, 66U), ///< PLL multiplier of 70.66 + CGC_PLL_MUL_71_0 = BSP_CLOCKS_PLL_MUL(71U, 0U), ///< PLL multiplier of 71.00 + CGC_PLL_MUL_71_33 = BSP_CLOCKS_PLL_MUL(71U, 33U), ///< PLL multiplier of 71.33 + CGC_PLL_MUL_71_5 = BSP_CLOCKS_PLL_MUL(71U, 50U), ///< PLL multiplier of 71.50 + CGC_PLL_MUL_71_66 = BSP_CLOCKS_PLL_MUL(71U, 66U), ///< PLL multiplier of 71.66 + CGC_PLL_MUL_72_0 = BSP_CLOCKS_PLL_MUL(72U, 0U), ///< PLL multiplier of 72.00 + CGC_PLL_MUL_72_33 = BSP_CLOCKS_PLL_MUL(72U, 33U), ///< PLL multiplier of 72.33 + CGC_PLL_MUL_72_5 = BSP_CLOCKS_PLL_MUL(72U, 50U), ///< PLL multiplier of 72.50 + CGC_PLL_MUL_72_66 = BSP_CLOCKS_PLL_MUL(72U, 66U), ///< PLL multiplier of 72.66 + CGC_PLL_MUL_73_0 = BSP_CLOCKS_PLL_MUL(73U, 0U), ///< PLL multiplier of 73.00 + CGC_PLL_MUL_73_33 = BSP_CLOCKS_PLL_MUL(73U, 33U), ///< PLL multiplier of 73.33 + CGC_PLL_MUL_73_5 = BSP_CLOCKS_PLL_MUL(73U, 50U), ///< PLL multiplier of 73.50 + CGC_PLL_MUL_73_66 = BSP_CLOCKS_PLL_MUL(73U, 66U), ///< PLL multiplier of 73.66 + CGC_PLL_MUL_74_0 = BSP_CLOCKS_PLL_MUL(74U, 0U), ///< PLL multiplier of 74.00 + CGC_PLL_MUL_74_33 = BSP_CLOCKS_PLL_MUL(74U, 33U), ///< PLL multiplier of 74.33 + CGC_PLL_MUL_74_5 = BSP_CLOCKS_PLL_MUL(74U, 50U), ///< PLL multiplier of 74.50 + CGC_PLL_MUL_74_66 = BSP_CLOCKS_PLL_MUL(74U, 66U), ///< PLL multiplier of 74.66 + CGC_PLL_MUL_75_0 = BSP_CLOCKS_PLL_MUL(75U, 0U), ///< PLL multiplier of 75.00 + CGC_PLL_MUL_75_33 = BSP_CLOCKS_PLL_MUL(75U, 33U), ///< PLL multiplier of 75.33 + CGC_PLL_MUL_75_5 = BSP_CLOCKS_PLL_MUL(75U, 50U), ///< PLL multiplier of 75.50 + CGC_PLL_MUL_75_66 = BSP_CLOCKS_PLL_MUL(75U, 66U), ///< PLL multiplier of 75.66 + CGC_PLL_MUL_76_0 = BSP_CLOCKS_PLL_MUL(76U, 0U), ///< PLL multiplier of 76.00 + CGC_PLL_MUL_76_33 = BSP_CLOCKS_PLL_MUL(76U, 33U), ///< PLL multiplier of 76.33 + CGC_PLL_MUL_76_5 = BSP_CLOCKS_PLL_MUL(76U, 50U), ///< PLL multiplier of 76.50 + CGC_PLL_MUL_76_66 = BSP_CLOCKS_PLL_MUL(76U, 66U), ///< PLL multiplier of 76.66 + CGC_PLL_MUL_77_0 = BSP_CLOCKS_PLL_MUL(77U, 0U), ///< PLL multiplier of 77.00 + CGC_PLL_MUL_77_33 = BSP_CLOCKS_PLL_MUL(77U, 33U), ///< PLL multiplier of 77.33 + CGC_PLL_MUL_77_5 = BSP_CLOCKS_PLL_MUL(77U, 50U), ///< PLL multiplier of 77.50 + CGC_PLL_MUL_77_66 = BSP_CLOCKS_PLL_MUL(77U, 66U), ///< PLL multiplier of 77.66 + CGC_PLL_MUL_78_0 = BSP_CLOCKS_PLL_MUL(78U, 0U), ///< PLL multiplier of 78.00 + CGC_PLL_MUL_78_33 = BSP_CLOCKS_PLL_MUL(78U, 33U), ///< PLL multiplier of 78.33 + CGC_PLL_MUL_78_5 = BSP_CLOCKS_PLL_MUL(78U, 50U), ///< PLL multiplier of 78.50 + CGC_PLL_MUL_78_66 = BSP_CLOCKS_PLL_MUL(78U, 66U), ///< PLL multiplier of 78.66 + CGC_PLL_MUL_79_0 = BSP_CLOCKS_PLL_MUL(79U, 0U), ///< PLL multiplier of 79.00 + CGC_PLL_MUL_79_33 = BSP_CLOCKS_PLL_MUL(79U, 33U), ///< PLL multiplier of 79.33 + CGC_PLL_MUL_79_5 = BSP_CLOCKS_PLL_MUL(79U, 50U), ///< PLL multiplier of 79.50 + CGC_PLL_MUL_79_66 = BSP_CLOCKS_PLL_MUL(79U, 66U), ///< PLL multiplier of 79.66 + CGC_PLL_MUL_80_0 = BSP_CLOCKS_PLL_MUL(80U, 0U), ///< PLL multiplier of 80.00 + CGC_PLL_MUL_80_33 = BSP_CLOCKS_PLL_MUL(80U, 33U), ///< PLL multiplier of 80.33 + CGC_PLL_MUL_80_5 = BSP_CLOCKS_PLL_MUL(80U, 50U), ///< PLL multiplier of 80.50 + CGC_PLL_MUL_80_66 = BSP_CLOCKS_PLL_MUL(80U, 66U), ///< PLL multiplier of 80.66 + CGC_PLL_MUL_81_0 = BSP_CLOCKS_PLL_MUL(81U, 0U), ///< PLL multiplier of 81.00 + CGC_PLL_MUL_81_33 = BSP_CLOCKS_PLL_MUL(81U, 33U), ///< PLL multiplier of 81.33 + CGC_PLL_MUL_81_5 = BSP_CLOCKS_PLL_MUL(81U, 50U), ///< PLL multiplier of 81.50 + CGC_PLL_MUL_81_66 = BSP_CLOCKS_PLL_MUL(81U, 66U), ///< PLL multiplier of 81.66 + CGC_PLL_MUL_82_0 = BSP_CLOCKS_PLL_MUL(82U, 0U), ///< PLL multiplier of 82.00 + CGC_PLL_MUL_82_33 = BSP_CLOCKS_PLL_MUL(82U, 33U), ///< PLL multiplier of 82.33 + CGC_PLL_MUL_82_5 = BSP_CLOCKS_PLL_MUL(82U, 50U), ///< PLL multiplier of 82.50 + CGC_PLL_MUL_82_66 = BSP_CLOCKS_PLL_MUL(82U, 66U), ///< PLL multiplier of 82.66 + CGC_PLL_MUL_83_0 = BSP_CLOCKS_PLL_MUL(83U, 0U), ///< PLL multiplier of 83.00 + CGC_PLL_MUL_83_33 = BSP_CLOCKS_PLL_MUL(83U, 33U), ///< PLL multiplier of 83.33 + CGC_PLL_MUL_83_5 = BSP_CLOCKS_PLL_MUL(83U, 50U), ///< PLL multiplier of 83.50 + CGC_PLL_MUL_83_66 = BSP_CLOCKS_PLL_MUL(83U, 66U), ///< PLL multiplier of 83.66 + CGC_PLL_MUL_84_0 = BSP_CLOCKS_PLL_MUL(84U, 0U), ///< PLL multiplier of 84.00 + CGC_PLL_MUL_84_33 = BSP_CLOCKS_PLL_MUL(84U, 33U), ///< PLL multiplier of 84.33 + CGC_PLL_MUL_84_5 = BSP_CLOCKS_PLL_MUL(84U, 50U), ///< PLL multiplier of 84.50 + CGC_PLL_MUL_84_66 = BSP_CLOCKS_PLL_MUL(84U, 66U), ///< PLL multiplier of 84.66 + CGC_PLL_MUL_85_0 = BSP_CLOCKS_PLL_MUL(85U, 0U), ///< PLL multiplier of 85.00 + CGC_PLL_MUL_85_33 = BSP_CLOCKS_PLL_MUL(85U, 33U), ///< PLL multiplier of 85.33 + CGC_PLL_MUL_85_5 = BSP_CLOCKS_PLL_MUL(85U, 50U), ///< PLL multiplier of 85.50 + CGC_PLL_MUL_85_66 = BSP_CLOCKS_PLL_MUL(85U, 66U), ///< PLL multiplier of 85.66 + CGC_PLL_MUL_86_0 = BSP_CLOCKS_PLL_MUL(86U, 0U), ///< PLL multiplier of 86.00 + CGC_PLL_MUL_86_33 = BSP_CLOCKS_PLL_MUL(86U, 33U), ///< PLL multiplier of 86.33 + CGC_PLL_MUL_86_5 = BSP_CLOCKS_PLL_MUL(86U, 50U), ///< PLL multiplier of 86.50 + CGC_PLL_MUL_86_66 = BSP_CLOCKS_PLL_MUL(86U, 66U), ///< PLL multiplier of 86.66 + CGC_PLL_MUL_87_0 = BSP_CLOCKS_PLL_MUL(87U, 0U), ///< PLL multiplier of 87.00 + CGC_PLL_MUL_87_33 = BSP_CLOCKS_PLL_MUL(87U, 33U), ///< PLL multiplier of 87.33 + CGC_PLL_MUL_87_5 = BSP_CLOCKS_PLL_MUL(87U, 50U), ///< PLL multiplier of 87.50 + CGC_PLL_MUL_87_66 = BSP_CLOCKS_PLL_MUL(87U, 66U), ///< PLL multiplier of 87.66 + CGC_PLL_MUL_88_0 = BSP_CLOCKS_PLL_MUL(88U, 0U), ///< PLL multiplier of 88.00 + CGC_PLL_MUL_88_33 = BSP_CLOCKS_PLL_MUL(88U, 33U), ///< PLL multiplier of 88.33 + CGC_PLL_MUL_88_5 = BSP_CLOCKS_PLL_MUL(88U, 50U), ///< PLL multiplier of 88.50 + CGC_PLL_MUL_88_66 = BSP_CLOCKS_PLL_MUL(88U, 66U), ///< PLL multiplier of 88.66 + CGC_PLL_MUL_89_0 = BSP_CLOCKS_PLL_MUL(89U, 0U), ///< PLL multiplier of 89.00 + CGC_PLL_MUL_89_33 = BSP_CLOCKS_PLL_MUL(89U, 33U), ///< PLL multiplier of 89.33 + CGC_PLL_MUL_89_5 = BSP_CLOCKS_PLL_MUL(89U, 50U), ///< PLL multiplier of 89.50 + CGC_PLL_MUL_89_66 = BSP_CLOCKS_PLL_MUL(89U, 66U), ///< PLL multiplier of 89.66 + CGC_PLL_MUL_90_0 = BSP_CLOCKS_PLL_MUL(90U, 0U), ///< PLL multiplier of 90.00 + CGC_PLL_MUL_90_33 = BSP_CLOCKS_PLL_MUL(90U, 33U), ///< PLL multiplier of 90.33 + CGC_PLL_MUL_90_5 = BSP_CLOCKS_PLL_MUL(90U, 50U), ///< PLL multiplier of 90.50 + CGC_PLL_MUL_90_66 = BSP_CLOCKS_PLL_MUL(90U, 66U), ///< PLL multiplier of 90.66 + CGC_PLL_MUL_91_0 = BSP_CLOCKS_PLL_MUL(91U, 0U), ///< PLL multiplier of 91.00 + CGC_PLL_MUL_91_33 = BSP_CLOCKS_PLL_MUL(91U, 33U), ///< PLL multiplier of 91.33 + CGC_PLL_MUL_91_5 = BSP_CLOCKS_PLL_MUL(91U, 50U), ///< PLL multiplier of 91.50 + CGC_PLL_MUL_91_66 = BSP_CLOCKS_PLL_MUL(91U, 66U), ///< PLL multiplier of 91.66 + CGC_PLL_MUL_92_0 = BSP_CLOCKS_PLL_MUL(92U, 0U), ///< PLL multiplier of 92.00 + CGC_PLL_MUL_92_33 = BSP_CLOCKS_PLL_MUL(92U, 33U), ///< PLL multiplier of 92.33 + CGC_PLL_MUL_92_5 = BSP_CLOCKS_PLL_MUL(92U, 50U), ///< PLL multiplier of 92.50 + CGC_PLL_MUL_92_66 = BSP_CLOCKS_PLL_MUL(92U, 66U), ///< PLL multiplier of 92.66 + CGC_PLL_MUL_93_0 = BSP_CLOCKS_PLL_MUL(93U, 0U), ///< PLL multiplier of 93.00 + CGC_PLL_MUL_93_33 = BSP_CLOCKS_PLL_MUL(93U, 33U), ///< PLL multiplier of 93.33 + CGC_PLL_MUL_93_5 = BSP_CLOCKS_PLL_MUL(93U, 50U), ///< PLL multiplier of 93.50 + CGC_PLL_MUL_93_66 = BSP_CLOCKS_PLL_MUL(93U, 66U), ///< PLL multiplier of 93.66 + CGC_PLL_MUL_94_0 = BSP_CLOCKS_PLL_MUL(94U, 0U), ///< PLL multiplier of 94.00 + CGC_PLL_MUL_94_33 = BSP_CLOCKS_PLL_MUL(94U, 33U), ///< PLL multiplier of 94.33 + CGC_PLL_MUL_94_5 = BSP_CLOCKS_PLL_MUL(94U, 50U), ///< PLL multiplier of 94.50 + CGC_PLL_MUL_94_66 = BSP_CLOCKS_PLL_MUL(94U, 66U), ///< PLL multiplier of 94.66 + CGC_PLL_MUL_95_0 = BSP_CLOCKS_PLL_MUL(95U, 0U), ///< PLL multiplier of 95.00 + CGC_PLL_MUL_95_33 = BSP_CLOCKS_PLL_MUL(95U, 33U), ///< PLL multiplier of 95.33 + CGC_PLL_MUL_95_5 = BSP_CLOCKS_PLL_MUL(95U, 50U), ///< PLL multiplier of 95.50 + CGC_PLL_MUL_95_66 = BSP_CLOCKS_PLL_MUL(95U, 66U), ///< PLL multiplier of 95.66 + CGC_PLL_MUL_96_0 = BSP_CLOCKS_PLL_MUL(96U, 0U), ///< PLL multiplier of 96.00 + CGC_PLL_MUL_96_33 = BSP_CLOCKS_PLL_MUL(96U, 33U), ///< PLL multiplier of 96.33 + CGC_PLL_MUL_96_5 = BSP_CLOCKS_PLL_MUL(96U, 50U), ///< PLL multiplier of 96.50 + CGC_PLL_MUL_96_66 = BSP_CLOCKS_PLL_MUL(96U, 66U), ///< PLL multiplier of 96.66 + CGC_PLL_MUL_97_0 = BSP_CLOCKS_PLL_MUL(97U, 0U), ///< PLL multiplier of 97.00 + CGC_PLL_MUL_97_33 = BSP_CLOCKS_PLL_MUL(97U, 33U), ///< PLL multiplier of 97.33 + CGC_PLL_MUL_97_5 = BSP_CLOCKS_PLL_MUL(97U, 50U), ///< PLL multiplier of 97.50 + CGC_PLL_MUL_97_66 = BSP_CLOCKS_PLL_MUL(97U, 66U), ///< PLL multiplier of 97.66 + CGC_PLL_MUL_98_0 = BSP_CLOCKS_PLL_MUL(98U, 0U), ///< PLL multiplier of 98.00 + CGC_PLL_MUL_98_33 = BSP_CLOCKS_PLL_MUL(98U, 33U), ///< PLL multiplier of 98.33 + CGC_PLL_MUL_98_5 = BSP_CLOCKS_PLL_MUL(98U, 50U), ///< PLL multiplier of 98.50 + CGC_PLL_MUL_98_66 = BSP_CLOCKS_PLL_MUL(98U, 66U), ///< PLL multiplier of 98.66 + CGC_PLL_MUL_99_0 = BSP_CLOCKS_PLL_MUL(99U, 0U), ///< PLL multiplier of 99.00 + CGC_PLL_MUL_99_33 = BSP_CLOCKS_PLL_MUL(99U, 33U), ///< PLL multiplier of 99.33 + CGC_PLL_MUL_99_5 = BSP_CLOCKS_PLL_MUL(99U, 50U), ///< PLL multiplier of 99.50 + CGC_PLL_MUL_99_66 = BSP_CLOCKS_PLL_MUL(99U, 66U), ///< PLL multiplier of 99.66 + CGC_PLL_MUL_100_0 = BSP_CLOCKS_PLL_MUL(100U, 0U), ///< PLL multiplier of 100.00 + CGC_PLL_MUL_100_33 = BSP_CLOCKS_PLL_MUL(100U, 33U), ///< PLL multiplier of 100.33 + CGC_PLL_MUL_100_5 = BSP_CLOCKS_PLL_MUL(100U, 50U), ///< PLL multiplier of 100.50 + CGC_PLL_MUL_100_66 = BSP_CLOCKS_PLL_MUL(100U, 66U), ///< PLL multiplier of 100.66 + CGC_PLL_MUL_101_0 = BSP_CLOCKS_PLL_MUL(101U, 0U), ///< PLL multiplier of 101.00 + CGC_PLL_MUL_101_33 = BSP_CLOCKS_PLL_MUL(101U, 33U), ///< PLL multiplier of 101.33 + CGC_PLL_MUL_101_5 = BSP_CLOCKS_PLL_MUL(101U, 50U), ///< PLL multiplier of 101.50 + CGC_PLL_MUL_101_66 = BSP_CLOCKS_PLL_MUL(101U, 66U), ///< PLL multiplier of 101.66 + CGC_PLL_MUL_102_0 = BSP_CLOCKS_PLL_MUL(102U, 0U), ///< PLL multiplier of 102.00 + CGC_PLL_MUL_102_33 = BSP_CLOCKS_PLL_MUL(102U, 33U), ///< PLL multiplier of 102.33 + CGC_PLL_MUL_102_5 = BSP_CLOCKS_PLL_MUL(102U, 50U), ///< PLL multiplier of 102.50 + CGC_PLL_MUL_102_66 = BSP_CLOCKS_PLL_MUL(102U, 66U), ///< PLL multiplier of 102.66 + CGC_PLL_MUL_103_0 = BSP_CLOCKS_PLL_MUL(103U, 0U), ///< PLL multiplier of 103.00 + CGC_PLL_MUL_103_33 = BSP_CLOCKS_PLL_MUL(103U, 33U), ///< PLL multiplier of 103.33 + CGC_PLL_MUL_103_5 = BSP_CLOCKS_PLL_MUL(103U, 50U), ///< PLL multiplier of 103.50 + CGC_PLL_MUL_103_66 = BSP_CLOCKS_PLL_MUL(103U, 66U), ///< PLL multiplier of 103.66 + CGC_PLL_MUL_104_0 = BSP_CLOCKS_PLL_MUL(104U, 0U), ///< PLL multiplier of 104.00 + CGC_PLL_MUL_104_33 = BSP_CLOCKS_PLL_MUL(104U, 33U), ///< PLL multiplier of 104.33 + CGC_PLL_MUL_104_5 = BSP_CLOCKS_PLL_MUL(104U, 50U), ///< PLL multiplier of 104.50 + CGC_PLL_MUL_104_66 = BSP_CLOCKS_PLL_MUL(104U, 66U), ///< PLL multiplier of 104.66 + CGC_PLL_MUL_105_0 = BSP_CLOCKS_PLL_MUL(105U, 0U), ///< PLL multiplier of 105.00 + CGC_PLL_MUL_105_33 = BSP_CLOCKS_PLL_MUL(105U, 33U), ///< PLL multiplier of 105.33 + CGC_PLL_MUL_105_5 = BSP_CLOCKS_PLL_MUL(105U, 50U), ///< PLL multiplier of 105.50 + CGC_PLL_MUL_105_66 = BSP_CLOCKS_PLL_MUL(105U, 66U), ///< PLL multiplier of 105.66 + CGC_PLL_MUL_106_0 = BSP_CLOCKS_PLL_MUL(106U, 0U), ///< PLL multiplier of 106.00 + CGC_PLL_MUL_106_33 = BSP_CLOCKS_PLL_MUL(106U, 33U), ///< PLL multiplier of 106.33 + CGC_PLL_MUL_106_5 = BSP_CLOCKS_PLL_MUL(106U, 50U), ///< PLL multiplier of 106.50 + CGC_PLL_MUL_106_66 = BSP_CLOCKS_PLL_MUL(106U, 66U), ///< PLL multiplier of 106.66 + CGC_PLL_MUL_107_0 = BSP_CLOCKS_PLL_MUL(107U, 0U), ///< PLL multiplier of 107.00 + CGC_PLL_MUL_107_33 = BSP_CLOCKS_PLL_MUL(107U, 33U), ///< PLL multiplier of 107.33 + CGC_PLL_MUL_107_5 = BSP_CLOCKS_PLL_MUL(107U, 50U), ///< PLL multiplier of 107.50 + CGC_PLL_MUL_107_66 = BSP_CLOCKS_PLL_MUL(107U, 66U), ///< PLL multiplier of 107.66 + CGC_PLL_MUL_108_0 = BSP_CLOCKS_PLL_MUL(108U, 0U), ///< PLL multiplier of 108.00 + CGC_PLL_MUL_108_33 = BSP_CLOCKS_PLL_MUL(108U, 33U), ///< PLL multiplier of 108.33 + CGC_PLL_MUL_108_5 = BSP_CLOCKS_PLL_MUL(108U, 50U), ///< PLL multiplier of 108.50 + CGC_PLL_MUL_108_66 = BSP_CLOCKS_PLL_MUL(108U, 66U), ///< PLL multiplier of 108.66 + CGC_PLL_MUL_109_0 = BSP_CLOCKS_PLL_MUL(109U, 0U), ///< PLL multiplier of 109.00 + CGC_PLL_MUL_109_33 = BSP_CLOCKS_PLL_MUL(109U, 33U), ///< PLL multiplier of 109.33 + CGC_PLL_MUL_109_5 = BSP_CLOCKS_PLL_MUL(109U, 50U), ///< PLL multiplier of 109.50 + CGC_PLL_MUL_109_66 = BSP_CLOCKS_PLL_MUL(109U, 66U), ///< PLL multiplier of 109.66 + CGC_PLL_MUL_110_0 = BSP_CLOCKS_PLL_MUL(110U, 0U), ///< PLL multiplier of 110.00 + CGC_PLL_MUL_110_33 = BSP_CLOCKS_PLL_MUL(110U, 33U), ///< PLL multiplier of 110.33 + CGC_PLL_MUL_110_5 = BSP_CLOCKS_PLL_MUL(110U, 50U), ///< PLL multiplier of 110.50 + CGC_PLL_MUL_110_66 = BSP_CLOCKS_PLL_MUL(110U, 66U), ///< PLL multiplier of 110.66 + CGC_PLL_MUL_111_0 = BSP_CLOCKS_PLL_MUL(111U, 0U), ///< PLL multiplier of 111.00 + CGC_PLL_MUL_111_33 = BSP_CLOCKS_PLL_MUL(111U, 33U), ///< PLL multiplier of 111.33 + CGC_PLL_MUL_111_5 = BSP_CLOCKS_PLL_MUL(111U, 50U), ///< PLL multiplier of 111.50 + CGC_PLL_MUL_111_66 = BSP_CLOCKS_PLL_MUL(111U, 66U), ///< PLL multiplier of 111.66 + CGC_PLL_MUL_112_0 = BSP_CLOCKS_PLL_MUL(112U, 0U), ///< PLL multiplier of 112.00 + CGC_PLL_MUL_112_33 = BSP_CLOCKS_PLL_MUL(112U, 33U), ///< PLL multiplier of 112.33 + CGC_PLL_MUL_112_5 = BSP_CLOCKS_PLL_MUL(112U, 50U), ///< PLL multiplier of 112.50 + CGC_PLL_MUL_112_66 = BSP_CLOCKS_PLL_MUL(112U, 66U), ///< PLL multiplier of 112.66 + CGC_PLL_MUL_113_0 = BSP_CLOCKS_PLL_MUL(113U, 0U), ///< PLL multiplier of 113.00 + CGC_PLL_MUL_113_33 = BSP_CLOCKS_PLL_MUL(113U, 33U), ///< PLL multiplier of 113.33 + CGC_PLL_MUL_113_5 = BSP_CLOCKS_PLL_MUL(113U, 50U), ///< PLL multiplier of 113.50 + CGC_PLL_MUL_113_66 = BSP_CLOCKS_PLL_MUL(113U, 66U), ///< PLL multiplier of 113.66 + CGC_PLL_MUL_114_0 = BSP_CLOCKS_PLL_MUL(114U, 0U), ///< PLL multiplier of 114.00 + CGC_PLL_MUL_114_33 = BSP_CLOCKS_PLL_MUL(114U, 33U), ///< PLL multiplier of 114.33 + CGC_PLL_MUL_114_5 = BSP_CLOCKS_PLL_MUL(114U, 50U), ///< PLL multiplier of 114.50 + CGC_PLL_MUL_114_66 = BSP_CLOCKS_PLL_MUL(114U, 66U), ///< PLL multiplier of 114.66 + CGC_PLL_MUL_115_0 = BSP_CLOCKS_PLL_MUL(115U, 0U), ///< PLL multiplier of 115.00 + CGC_PLL_MUL_115_33 = BSP_CLOCKS_PLL_MUL(115U, 33U), ///< PLL multiplier of 115.33 + CGC_PLL_MUL_115_5 = BSP_CLOCKS_PLL_MUL(115U, 50U), ///< PLL multiplier of 115.50 + CGC_PLL_MUL_115_66 = BSP_CLOCKS_PLL_MUL(115U, 66U), ///< PLL multiplier of 115.66 + CGC_PLL_MUL_116_0 = BSP_CLOCKS_PLL_MUL(116U, 0U), ///< PLL multiplier of 116.00 + CGC_PLL_MUL_116_33 = BSP_CLOCKS_PLL_MUL(116U, 33U), ///< PLL multiplier of 116.33 + CGC_PLL_MUL_116_5 = BSP_CLOCKS_PLL_MUL(116U, 50U), ///< PLL multiplier of 116.50 + CGC_PLL_MUL_116_66 = BSP_CLOCKS_PLL_MUL(116U, 66U), ///< PLL multiplier of 116.66 + CGC_PLL_MUL_117_0 = BSP_CLOCKS_PLL_MUL(117U, 0U), ///< PLL multiplier of 117.00 + CGC_PLL_MUL_117_33 = BSP_CLOCKS_PLL_MUL(117U, 33U), ///< PLL multiplier of 117.33 + CGC_PLL_MUL_117_5 = BSP_CLOCKS_PLL_MUL(117U, 50U), ///< PLL multiplier of 117.50 + CGC_PLL_MUL_117_66 = BSP_CLOCKS_PLL_MUL(117U, 66U), ///< PLL multiplier of 117.66 + CGC_PLL_MUL_118_0 = BSP_CLOCKS_PLL_MUL(118U, 0U), ///< PLL multiplier of 118.00 + CGC_PLL_MUL_118_33 = BSP_CLOCKS_PLL_MUL(118U, 33U), ///< PLL multiplier of 118.33 + CGC_PLL_MUL_118_5 = BSP_CLOCKS_PLL_MUL(118U, 50U), ///< PLL multiplier of 118.50 + CGC_PLL_MUL_118_66 = BSP_CLOCKS_PLL_MUL(118U, 66U), ///< PLL multiplier of 118.66 + CGC_PLL_MUL_119_0 = BSP_CLOCKS_PLL_MUL(119U, 0U), ///< PLL multiplier of 119.00 + CGC_PLL_MUL_119_33 = BSP_CLOCKS_PLL_MUL(119U, 33U), ///< PLL multiplier of 119.33 + CGC_PLL_MUL_119_5 = BSP_CLOCKS_PLL_MUL(119U, 50U), ///< PLL multiplier of 119.50 + CGC_PLL_MUL_119_66 = BSP_CLOCKS_PLL_MUL(119U, 66U), ///< PLL multiplier of 119.66 + CGC_PLL_MUL_120_0 = BSP_CLOCKS_PLL_MUL(120U, 0U), ///< PLL multiplier of 120.00 + CGC_PLL_MUL_120_33 = BSP_CLOCKS_PLL_MUL(120U, 33U), ///< PLL multiplier of 120.33 + CGC_PLL_MUL_120_5 = BSP_CLOCKS_PLL_MUL(120U, 50U), ///< PLL multiplier of 120.50 + CGC_PLL_MUL_120_66 = BSP_CLOCKS_PLL_MUL(120U, 66U), ///< PLL multiplier of 120.66 + CGC_PLL_MUL_121_0 = BSP_CLOCKS_PLL_MUL(121U, 0U), ///< PLL multiplier of 121.00 + CGC_PLL_MUL_121_33 = BSP_CLOCKS_PLL_MUL(121U, 33U), ///< PLL multiplier of 121.33 + CGC_PLL_MUL_121_5 = BSP_CLOCKS_PLL_MUL(121U, 50U), ///< PLL multiplier of 121.50 + CGC_PLL_MUL_121_66 = BSP_CLOCKS_PLL_MUL(121U, 66U), ///< PLL multiplier of 121.66 + CGC_PLL_MUL_122_0 = BSP_CLOCKS_PLL_MUL(122U, 0U), ///< PLL multiplier of 122.00 + CGC_PLL_MUL_122_33 = BSP_CLOCKS_PLL_MUL(122U, 33U), ///< PLL multiplier of 122.33 + CGC_PLL_MUL_122_5 = BSP_CLOCKS_PLL_MUL(122U, 50U), ///< PLL multiplier of 122.50 + CGC_PLL_MUL_122_66 = BSP_CLOCKS_PLL_MUL(122U, 66U), ///< PLL multiplier of 122.66 + CGC_PLL_MUL_123_0 = BSP_CLOCKS_PLL_MUL(123U, 0U), ///< PLL multiplier of 123.00 + CGC_PLL_MUL_123_33 = BSP_CLOCKS_PLL_MUL(123U, 33U), ///< PLL multiplier of 123.33 + CGC_PLL_MUL_123_5 = BSP_CLOCKS_PLL_MUL(123U, 50U), ///< PLL multiplier of 123.50 + CGC_PLL_MUL_123_66 = BSP_CLOCKS_PLL_MUL(123U, 66U), ///< PLL multiplier of 123.66 + CGC_PLL_MUL_124_0 = BSP_CLOCKS_PLL_MUL(124U, 0U), ///< PLL multiplier of 124.00 + CGC_PLL_MUL_124_33 = BSP_CLOCKS_PLL_MUL(124U, 33U), ///< PLL multiplier of 124.33 + CGC_PLL_MUL_124_5 = BSP_CLOCKS_PLL_MUL(124U, 50U), ///< PLL multiplier of 124.50 + CGC_PLL_MUL_124_66 = BSP_CLOCKS_PLL_MUL(124U, 66U), ///< PLL multiplier of 124.66 + CGC_PLL_MUL_125_0 = BSP_CLOCKS_PLL_MUL(125U, 0U), ///< PLL multiplier of 125.00 + CGC_PLL_MUL_125_33 = BSP_CLOCKS_PLL_MUL(125U, 33U), ///< PLL multiplier of 125.33 + CGC_PLL_MUL_125_5 = BSP_CLOCKS_PLL_MUL(125U, 50U), ///< PLL multiplier of 125.50 + CGC_PLL_MUL_125_66 = BSP_CLOCKS_PLL_MUL(125U, 66U), ///< PLL multiplier of 125.66 + CGC_PLL_MUL_126_0 = BSP_CLOCKS_PLL_MUL(126U, 0U), ///< PLL multiplier of 126.00 + CGC_PLL_MUL_126_33 = BSP_CLOCKS_PLL_MUL(126U, 33U), ///< PLL multiplier of 126.33 + CGC_PLL_MUL_126_5 = BSP_CLOCKS_PLL_MUL(126U, 50U), ///< PLL multiplier of 126.50 + CGC_PLL_MUL_126_66 = BSP_CLOCKS_PLL_MUL(126U, 66U), ///< PLL multiplier of 126.66 + CGC_PLL_MUL_127_0 = BSP_CLOCKS_PLL_MUL(127U, 0U), ///< PLL multiplier of 127.00 + CGC_PLL_MUL_127_33 = BSP_CLOCKS_PLL_MUL(127U, 33U), ///< PLL multiplier of 127.33 + CGC_PLL_MUL_127_5 = BSP_CLOCKS_PLL_MUL(127U, 50U), ///< PLL multiplier of 127.50 + CGC_PLL_MUL_127_66 = BSP_CLOCKS_PLL_MUL(127U, 66U), ///< PLL multiplier of 127.66 + CGC_PLL_MUL_128_0 = BSP_CLOCKS_PLL_MUL(128U, 0U), ///< PLL multiplier of 128.00 + CGC_PLL_MUL_128_33 = BSP_CLOCKS_PLL_MUL(128U, 33U), ///< PLL multiplier of 128.33 + CGC_PLL_MUL_128_5 = BSP_CLOCKS_PLL_MUL(128U, 50U), ///< PLL multiplier of 128.50 + CGC_PLL_MUL_128_66 = BSP_CLOCKS_PLL_MUL(128U, 66U), ///< PLL multiplier of 128.66 + CGC_PLL_MUL_129_0 = BSP_CLOCKS_PLL_MUL(129U, 0U), ///< PLL multiplier of 129.00 + CGC_PLL_MUL_129_33 = BSP_CLOCKS_PLL_MUL(129U, 33U), ///< PLL multiplier of 129.33 + CGC_PLL_MUL_129_5 = BSP_CLOCKS_PLL_MUL(129U, 50U), ///< PLL multiplier of 129.50 + CGC_PLL_MUL_129_66 = BSP_CLOCKS_PLL_MUL(129U, 66U), ///< PLL multiplier of 129.66 + CGC_PLL_MUL_130_0 = BSP_CLOCKS_PLL_MUL(130U, 0U), ///< PLL multiplier of 130.00 + CGC_PLL_MUL_130_33 = BSP_CLOCKS_PLL_MUL(130U, 33U), ///< PLL multiplier of 130.33 + CGC_PLL_MUL_130_5 = BSP_CLOCKS_PLL_MUL(130U, 50U), ///< PLL multiplier of 130.50 + CGC_PLL_MUL_130_66 = BSP_CLOCKS_PLL_MUL(130U, 66U), ///< PLL multiplier of 130.66 + CGC_PLL_MUL_131_0 = BSP_CLOCKS_PLL_MUL(131U, 0U), ///< PLL multiplier of 131.00 + CGC_PLL_MUL_131_33 = BSP_CLOCKS_PLL_MUL(131U, 33U), ///< PLL multiplier of 131.33 + CGC_PLL_MUL_131_5 = BSP_CLOCKS_PLL_MUL(131U, 50U), ///< PLL multiplier of 131.50 + CGC_PLL_MUL_131_66 = BSP_CLOCKS_PLL_MUL(131U, 66U), ///< PLL multiplier of 131.66 + CGC_PLL_MUL_132_0 = BSP_CLOCKS_PLL_MUL(132U, 0U), ///< PLL multiplier of 132.00 + CGC_PLL_MUL_132_33 = BSP_CLOCKS_PLL_MUL(132U, 33U), ///< PLL multiplier of 132.33 + CGC_PLL_MUL_132_5 = BSP_CLOCKS_PLL_MUL(132U, 50U), ///< PLL multiplier of 132.50 + CGC_PLL_MUL_132_66 = BSP_CLOCKS_PLL_MUL(132U, 66U), ///< PLL multiplier of 132.66 + CGC_PLL_MUL_133_0 = BSP_CLOCKS_PLL_MUL(133U, 0U), ///< PLL multiplier of 133.00 + CGC_PLL_MUL_133_33 = BSP_CLOCKS_PLL_MUL(133U, 33U), ///< PLL multiplier of 133.33 + CGC_PLL_MUL_133_5 = BSP_CLOCKS_PLL_MUL(133U, 50U), ///< PLL multiplier of 133.50 + CGC_PLL_MUL_133_66 = BSP_CLOCKS_PLL_MUL(133U, 66U), ///< PLL multiplier of 133.66 + CGC_PLL_MUL_134_0 = BSP_CLOCKS_PLL_MUL(134U, 0U), ///< PLL multiplier of 134.00 + CGC_PLL_MUL_134_33 = BSP_CLOCKS_PLL_MUL(134U, 33U), ///< PLL multiplier of 134.33 + CGC_PLL_MUL_134_5 = BSP_CLOCKS_PLL_MUL(134U, 50U), ///< PLL multiplier of 134.50 + CGC_PLL_MUL_134_66 = BSP_CLOCKS_PLL_MUL(134U, 66U), ///< PLL multiplier of 134.66 + CGC_PLL_MUL_135_0 = BSP_CLOCKS_PLL_MUL(135U, 0U), ///< PLL multiplier of 135.00 + CGC_PLL_MUL_135_33 = BSP_CLOCKS_PLL_MUL(135U, 33U), ///< PLL multiplier of 135.33 + CGC_PLL_MUL_135_5 = BSP_CLOCKS_PLL_MUL(135U, 50U), ///< PLL multiplier of 135.50 + CGC_PLL_MUL_135_66 = BSP_CLOCKS_PLL_MUL(135U, 66U), ///< PLL multiplier of 135.66 + CGC_PLL_MUL_136_0 = BSP_CLOCKS_PLL_MUL(136U, 0U), ///< PLL multiplier of 136.00 + CGC_PLL_MUL_136_33 = BSP_CLOCKS_PLL_MUL(136U, 33U), ///< PLL multiplier of 136.33 + CGC_PLL_MUL_136_5 = BSP_CLOCKS_PLL_MUL(136U, 50U), ///< PLL multiplier of 136.50 + CGC_PLL_MUL_136_66 = BSP_CLOCKS_PLL_MUL(136U, 66U), ///< PLL multiplier of 136.66 + CGC_PLL_MUL_137_0 = BSP_CLOCKS_PLL_MUL(137U, 0U), ///< PLL multiplier of 137.00 + CGC_PLL_MUL_137_33 = BSP_CLOCKS_PLL_MUL(137U, 33U), ///< PLL multiplier of 137.33 + CGC_PLL_MUL_137_5 = BSP_CLOCKS_PLL_MUL(137U, 50U), ///< PLL multiplier of 137.50 + CGC_PLL_MUL_137_66 = BSP_CLOCKS_PLL_MUL(137U, 66U), ///< PLL multiplier of 137.66 + CGC_PLL_MUL_138_0 = BSP_CLOCKS_PLL_MUL(138U, 0U), ///< PLL multiplier of 138.00 + CGC_PLL_MUL_138_33 = BSP_CLOCKS_PLL_MUL(138U, 33U), ///< PLL multiplier of 138.33 + CGC_PLL_MUL_138_5 = BSP_CLOCKS_PLL_MUL(138U, 50U), ///< PLL multiplier of 138.50 + CGC_PLL_MUL_138_66 = BSP_CLOCKS_PLL_MUL(138U, 66U), ///< PLL multiplier of 138.66 + CGC_PLL_MUL_139_0 = BSP_CLOCKS_PLL_MUL(139U, 0U), ///< PLL multiplier of 139.00 + CGC_PLL_MUL_139_33 = BSP_CLOCKS_PLL_MUL(139U, 33U), ///< PLL multiplier of 139.33 + CGC_PLL_MUL_139_5 = BSP_CLOCKS_PLL_MUL(139U, 50U), ///< PLL multiplier of 139.50 + CGC_PLL_MUL_139_66 = BSP_CLOCKS_PLL_MUL(139U, 66U), ///< PLL multiplier of 139.66 + CGC_PLL_MUL_140_0 = BSP_CLOCKS_PLL_MUL(140U, 0U), ///< PLL multiplier of 140.00 + CGC_PLL_MUL_140_33 = BSP_CLOCKS_PLL_MUL(140U, 33U), ///< PLL multiplier of 140.33 + CGC_PLL_MUL_140_5 = BSP_CLOCKS_PLL_MUL(140U, 50U), ///< PLL multiplier of 140.50 + CGC_PLL_MUL_140_66 = BSP_CLOCKS_PLL_MUL(140U, 66U), ///< PLL multiplier of 140.66 + CGC_PLL_MUL_141_0 = BSP_CLOCKS_PLL_MUL(141U, 0U), ///< PLL multiplier of 141.00 + CGC_PLL_MUL_141_33 = BSP_CLOCKS_PLL_MUL(141U, 33U), ///< PLL multiplier of 141.33 + CGC_PLL_MUL_141_5 = BSP_CLOCKS_PLL_MUL(141U, 50U), ///< PLL multiplier of 141.50 + CGC_PLL_MUL_141_66 = BSP_CLOCKS_PLL_MUL(141U, 66U), ///< PLL multiplier of 141.66 + CGC_PLL_MUL_142_0 = BSP_CLOCKS_PLL_MUL(142U, 0U), ///< PLL multiplier of 142.00 + CGC_PLL_MUL_142_33 = BSP_CLOCKS_PLL_MUL(142U, 33U), ///< PLL multiplier of 142.33 + CGC_PLL_MUL_142_5 = BSP_CLOCKS_PLL_MUL(142U, 50U), ///< PLL multiplier of 142.50 + CGC_PLL_MUL_142_66 = BSP_CLOCKS_PLL_MUL(142U, 66U), ///< PLL multiplier of 142.66 + CGC_PLL_MUL_143_0 = BSP_CLOCKS_PLL_MUL(143U, 0U), ///< PLL multiplier of 143.00 + CGC_PLL_MUL_143_33 = BSP_CLOCKS_PLL_MUL(143U, 33U), ///< PLL multiplier of 143.33 + CGC_PLL_MUL_143_5 = BSP_CLOCKS_PLL_MUL(143U, 50U), ///< PLL multiplier of 143.50 + CGC_PLL_MUL_143_66 = BSP_CLOCKS_PLL_MUL(143U, 66U), ///< PLL multiplier of 143.66 + CGC_PLL_MUL_144_0 = BSP_CLOCKS_PLL_MUL(144U, 0U), ///< PLL multiplier of 144.00 + CGC_PLL_MUL_144_33 = BSP_CLOCKS_PLL_MUL(144U, 33U), ///< PLL multiplier of 144.33 + CGC_PLL_MUL_144_5 = BSP_CLOCKS_PLL_MUL(144U, 50U), ///< PLL multiplier of 144.50 + CGC_PLL_MUL_144_66 = BSP_CLOCKS_PLL_MUL(144U, 66U), ///< PLL multiplier of 144.66 + CGC_PLL_MUL_145_0 = BSP_CLOCKS_PLL_MUL(145U, 0U), ///< PLL multiplier of 145.00 + CGC_PLL_MUL_145_33 = BSP_CLOCKS_PLL_MUL(145U, 33U), ///< PLL multiplier of 145.33 + CGC_PLL_MUL_145_5 = BSP_CLOCKS_PLL_MUL(145U, 50U), ///< PLL multiplier of 145.50 + CGC_PLL_MUL_145_66 = BSP_CLOCKS_PLL_MUL(145U, 66U), ///< PLL multiplier of 145.66 + CGC_PLL_MUL_146_0 = BSP_CLOCKS_PLL_MUL(146U, 0U), ///< PLL multiplier of 146.00 + CGC_PLL_MUL_146_33 = BSP_CLOCKS_PLL_MUL(146U, 33U), ///< PLL multiplier of 146.33 + CGC_PLL_MUL_146_5 = BSP_CLOCKS_PLL_MUL(146U, 50U), ///< PLL multiplier of 146.50 + CGC_PLL_MUL_146_66 = BSP_CLOCKS_PLL_MUL(146U, 66U), ///< PLL multiplier of 146.66 + CGC_PLL_MUL_147_0 = BSP_CLOCKS_PLL_MUL(147U, 0U), ///< PLL multiplier of 147.00 + CGC_PLL_MUL_147_33 = BSP_CLOCKS_PLL_MUL(147U, 33U), ///< PLL multiplier of 147.33 + CGC_PLL_MUL_147_5 = BSP_CLOCKS_PLL_MUL(147U, 50U), ///< PLL multiplier of 147.50 + CGC_PLL_MUL_147_66 = BSP_CLOCKS_PLL_MUL(147U, 66U), ///< PLL multiplier of 147.66 + CGC_PLL_MUL_148_0 = BSP_CLOCKS_PLL_MUL(148U, 0U), ///< PLL multiplier of 148.00 + CGC_PLL_MUL_148_33 = BSP_CLOCKS_PLL_MUL(148U, 33U), ///< PLL multiplier of 148.33 + CGC_PLL_MUL_148_5 = BSP_CLOCKS_PLL_MUL(148U, 50U), ///< PLL multiplier of 148.50 + CGC_PLL_MUL_148_66 = BSP_CLOCKS_PLL_MUL(148U, 66U), ///< PLL multiplier of 148.66 + CGC_PLL_MUL_149_0 = BSP_CLOCKS_PLL_MUL(149U, 0U), ///< PLL multiplier of 149.00 + CGC_PLL_MUL_149_33 = BSP_CLOCKS_PLL_MUL(149U, 33U), ///< PLL multiplier of 149.33 + CGC_PLL_MUL_149_5 = BSP_CLOCKS_PLL_MUL(149U, 50U), ///< PLL multiplier of 149.50 + CGC_PLL_MUL_149_66 = BSP_CLOCKS_PLL_MUL(149U, 66U), ///< PLL multiplier of 149.66 + CGC_PLL_MUL_150_0 = BSP_CLOCKS_PLL_MUL(150U, 0U), ///< PLL multiplier of 150.00 + CGC_PLL_MUL_150_33 = BSP_CLOCKS_PLL_MUL(150U, 33U), ///< PLL multiplier of 150.33 + CGC_PLL_MUL_150_5 = BSP_CLOCKS_PLL_MUL(150U, 50U), ///< PLL multiplier of 150.50 + CGC_PLL_MUL_150_66 = BSP_CLOCKS_PLL_MUL(150U, 66U), ///< PLL multiplier of 150.66 + CGC_PLL_MUL_151_0 = BSP_CLOCKS_PLL_MUL(151U, 0U), ///< PLL multiplier of 151.00 + CGC_PLL_MUL_151_33 = BSP_CLOCKS_PLL_MUL(151U, 33U), ///< PLL multiplier of 151.33 + CGC_PLL_MUL_151_5 = BSP_CLOCKS_PLL_MUL(151U, 50U), ///< PLL multiplier of 151.50 + CGC_PLL_MUL_151_66 = BSP_CLOCKS_PLL_MUL(151U, 66U), ///< PLL multiplier of 151.66 + CGC_PLL_MUL_152_0 = BSP_CLOCKS_PLL_MUL(152U, 0U), ///< PLL multiplier of 152.00 + CGC_PLL_MUL_152_33 = BSP_CLOCKS_PLL_MUL(152U, 33U), ///< PLL multiplier of 152.33 + CGC_PLL_MUL_152_5 = BSP_CLOCKS_PLL_MUL(152U, 50U), ///< PLL multiplier of 152.50 + CGC_PLL_MUL_152_66 = BSP_CLOCKS_PLL_MUL(152U, 66U), ///< PLL multiplier of 152.66 + CGC_PLL_MUL_153_0 = BSP_CLOCKS_PLL_MUL(153U, 0U), ///< PLL multiplier of 153.00 + CGC_PLL_MUL_153_33 = BSP_CLOCKS_PLL_MUL(153U, 33U), ///< PLL multiplier of 153.33 + CGC_PLL_MUL_153_5 = BSP_CLOCKS_PLL_MUL(153U, 50U), ///< PLL multiplier of 153.50 + CGC_PLL_MUL_153_66 = BSP_CLOCKS_PLL_MUL(153U, 66U), ///< PLL multiplier of 153.66 + CGC_PLL_MUL_154_0 = BSP_CLOCKS_PLL_MUL(154U, 0U), ///< PLL multiplier of 154.00 + CGC_PLL_MUL_154_33 = BSP_CLOCKS_PLL_MUL(154U, 33U), ///< PLL multiplier of 154.33 + CGC_PLL_MUL_154_5 = BSP_CLOCKS_PLL_MUL(154U, 50U), ///< PLL multiplier of 154.50 + CGC_PLL_MUL_154_66 = BSP_CLOCKS_PLL_MUL(154U, 66U), ///< PLL multiplier of 154.66 + CGC_PLL_MUL_155_0 = BSP_CLOCKS_PLL_MUL(155U, 0U), ///< PLL multiplier of 155.00 + CGC_PLL_MUL_155_33 = BSP_CLOCKS_PLL_MUL(155U, 33U), ///< PLL multiplier of 155.33 + CGC_PLL_MUL_155_5 = BSP_CLOCKS_PLL_MUL(155U, 50U), ///< PLL multiplier of 155.50 + CGC_PLL_MUL_155_66 = BSP_CLOCKS_PLL_MUL(155U, 66U), ///< PLL multiplier of 155.66 + CGC_PLL_MUL_156_0 = BSP_CLOCKS_PLL_MUL(156U, 0U), ///< PLL multiplier of 156.00 + CGC_PLL_MUL_156_33 = BSP_CLOCKS_PLL_MUL(156U, 33U), ///< PLL multiplier of 156.33 + CGC_PLL_MUL_156_5 = BSP_CLOCKS_PLL_MUL(156U, 50U), ///< PLL multiplier of 156.50 + CGC_PLL_MUL_156_66 = BSP_CLOCKS_PLL_MUL(156U, 66U), ///< PLL multiplier of 156.66 + CGC_PLL_MUL_157_0 = BSP_CLOCKS_PLL_MUL(157U, 0U), ///< PLL multiplier of 157.00 + CGC_PLL_MUL_157_33 = BSP_CLOCKS_PLL_MUL(157U, 33U), ///< PLL multiplier of 157.33 + CGC_PLL_MUL_157_5 = BSP_CLOCKS_PLL_MUL(157U, 50U), ///< PLL multiplier of 157.50 + CGC_PLL_MUL_157_66 = BSP_CLOCKS_PLL_MUL(157U, 66U), ///< PLL multiplier of 157.66 + CGC_PLL_MUL_158_0 = BSP_CLOCKS_PLL_MUL(158U, 0U), ///< PLL multiplier of 158.00 + CGC_PLL_MUL_158_33 = BSP_CLOCKS_PLL_MUL(158U, 33U), ///< PLL multiplier of 158.33 + CGC_PLL_MUL_158_5 = BSP_CLOCKS_PLL_MUL(158U, 50U), ///< PLL multiplier of 158.50 + CGC_PLL_MUL_158_66 = BSP_CLOCKS_PLL_MUL(158U, 66U), ///< PLL multiplier of 158.66 + CGC_PLL_MUL_159_0 = BSP_CLOCKS_PLL_MUL(159U, 0U), ///< PLL multiplier of 159.00 + CGC_PLL_MUL_159_33 = BSP_CLOCKS_PLL_MUL(159U, 33U), ///< PLL multiplier of 159.33 + CGC_PLL_MUL_159_5 = BSP_CLOCKS_PLL_MUL(159U, 50U), ///< PLL multiplier of 159.50 + CGC_PLL_MUL_159_66 = BSP_CLOCKS_PLL_MUL(159U, 66U), ///< PLL multiplier of 159.66 + CGC_PLL_MUL_160_0 = BSP_CLOCKS_PLL_MUL(160U, 0U), ///< PLL multiplier of 160.00 + CGC_PLL_MUL_160_33 = BSP_CLOCKS_PLL_MUL(160U, 33U), ///< PLL multiplier of 160.33 + CGC_PLL_MUL_160_5 = BSP_CLOCKS_PLL_MUL(160U, 50U), ///< PLL multiplier of 160.50 + CGC_PLL_MUL_160_66 = BSP_CLOCKS_PLL_MUL(160U, 66U), ///< PLL multiplier of 160.66 + CGC_PLL_MUL_161_0 = BSP_CLOCKS_PLL_MUL(161U, 0U), ///< PLL multiplier of 161.00 + CGC_PLL_MUL_161_33 = BSP_CLOCKS_PLL_MUL(161U, 33U), ///< PLL multiplier of 161.33 + CGC_PLL_MUL_161_5 = BSP_CLOCKS_PLL_MUL(161U, 50U), ///< PLL multiplier of 161.50 + CGC_PLL_MUL_161_66 = BSP_CLOCKS_PLL_MUL(161U, 66U), ///< PLL multiplier of 161.66 + CGC_PLL_MUL_162_0 = BSP_CLOCKS_PLL_MUL(162U, 0U), ///< PLL multiplier of 162.00 + CGC_PLL_MUL_162_33 = BSP_CLOCKS_PLL_MUL(162U, 33U), ///< PLL multiplier of 162.33 + CGC_PLL_MUL_162_5 = BSP_CLOCKS_PLL_MUL(162U, 50U), ///< PLL multiplier of 162.50 + CGC_PLL_MUL_162_66 = BSP_CLOCKS_PLL_MUL(162U, 66U), ///< PLL multiplier of 162.66 + CGC_PLL_MUL_163_0 = BSP_CLOCKS_PLL_MUL(163U, 0U), ///< PLL multiplier of 163.00 + CGC_PLL_MUL_163_33 = BSP_CLOCKS_PLL_MUL(163U, 33U), ///< PLL multiplier of 163.33 + CGC_PLL_MUL_163_5 = BSP_CLOCKS_PLL_MUL(163U, 50U), ///< PLL multiplier of 163.50 + CGC_PLL_MUL_163_66 = BSP_CLOCKS_PLL_MUL(163U, 66U), ///< PLL multiplier of 163.66 + CGC_PLL_MUL_164_0 = BSP_CLOCKS_PLL_MUL(164U, 0U), ///< PLL multiplier of 164.00 + CGC_PLL_MUL_164_33 = BSP_CLOCKS_PLL_MUL(164U, 33U), ///< PLL multiplier of 164.33 + CGC_PLL_MUL_164_5 = BSP_CLOCKS_PLL_MUL(164U, 50U), ///< PLL multiplier of 164.50 + CGC_PLL_MUL_164_66 = BSP_CLOCKS_PLL_MUL(164U, 66U), ///< PLL multiplier of 164.66 + CGC_PLL_MUL_165_0 = BSP_CLOCKS_PLL_MUL(165U, 0U), ///< PLL multiplier of 165.00 + CGC_PLL_MUL_165_33 = BSP_CLOCKS_PLL_MUL(165U, 33U), ///< PLL multiplier of 165.33 + CGC_PLL_MUL_165_5 = BSP_CLOCKS_PLL_MUL(165U, 50U), ///< PLL multiplier of 165.50 + CGC_PLL_MUL_165_66 = BSP_CLOCKS_PLL_MUL(165U, 66U), ///< PLL multiplier of 165.66 + CGC_PLL_MUL_166_0 = BSP_CLOCKS_PLL_MUL(166U, 0U), ///< PLL multiplier of 166.00 + CGC_PLL_MUL_166_33 = BSP_CLOCKS_PLL_MUL(166U, 33U), ///< PLL multiplier of 166.33 + CGC_PLL_MUL_166_5 = BSP_CLOCKS_PLL_MUL(166U, 50U), ///< PLL multiplier of 166.50 + CGC_PLL_MUL_166_66 = BSP_CLOCKS_PLL_MUL(166U, 66U), ///< PLL multiplier of 166.66 + CGC_PLL_MUL_167_0 = BSP_CLOCKS_PLL_MUL(167U, 0U), ///< PLL multiplier of 167.00 + CGC_PLL_MUL_167_33 = BSP_CLOCKS_PLL_MUL(167U, 33U), ///< PLL multiplier of 167.33 + CGC_PLL_MUL_167_5 = BSP_CLOCKS_PLL_MUL(167U, 50U), ///< PLL multiplier of 167.50 + CGC_PLL_MUL_167_66 = BSP_CLOCKS_PLL_MUL(167U, 66U), ///< PLL multiplier of 167.66 + CGC_PLL_MUL_168_0 = BSP_CLOCKS_PLL_MUL(168U, 0U), ///< PLL multiplier of 168.00 + CGC_PLL_MUL_168_33 = BSP_CLOCKS_PLL_MUL(168U, 33U), ///< PLL multiplier of 168.33 + CGC_PLL_MUL_168_5 = BSP_CLOCKS_PLL_MUL(168U, 50U), ///< PLL multiplier of 168.50 + CGC_PLL_MUL_168_66 = BSP_CLOCKS_PLL_MUL(168U, 66U), ///< PLL multiplier of 168.66 + CGC_PLL_MUL_169_0 = BSP_CLOCKS_PLL_MUL(169U, 0U), ///< PLL multiplier of 169.00 + CGC_PLL_MUL_169_33 = BSP_CLOCKS_PLL_MUL(169U, 33U), ///< PLL multiplier of 169.33 + CGC_PLL_MUL_169_5 = BSP_CLOCKS_PLL_MUL(169U, 50U), ///< PLL multiplier of 169.50 + CGC_PLL_MUL_169_66 = BSP_CLOCKS_PLL_MUL(169U, 66U), ///< PLL multiplier of 169.66 + CGC_PLL_MUL_170_0 = BSP_CLOCKS_PLL_MUL(170U, 0U), ///< PLL multiplier of 170.00 + CGC_PLL_MUL_170_33 = BSP_CLOCKS_PLL_MUL(170U, 33U), ///< PLL multiplier of 170.33 + CGC_PLL_MUL_170_5 = BSP_CLOCKS_PLL_MUL(170U, 50U), ///< PLL multiplier of 170.50 + CGC_PLL_MUL_170_66 = BSP_CLOCKS_PLL_MUL(170U, 66U), ///< PLL multiplier of 170.66 + CGC_PLL_MUL_171_0 = BSP_CLOCKS_PLL_MUL(171U, 0U), ///< PLL multiplier of 171.00 + CGC_PLL_MUL_171_33 = BSP_CLOCKS_PLL_MUL(171U, 33U), ///< PLL multiplier of 171.33 + CGC_PLL_MUL_171_5 = BSP_CLOCKS_PLL_MUL(171U, 50U), ///< PLL multiplier of 171.50 + CGC_PLL_MUL_171_66 = BSP_CLOCKS_PLL_MUL(171U, 66U), ///< PLL multiplier of 171.66 + CGC_PLL_MUL_172_0 = BSP_CLOCKS_PLL_MUL(172U, 0U), ///< PLL multiplier of 172.00 + CGC_PLL_MUL_172_33 = BSP_CLOCKS_PLL_MUL(172U, 33U), ///< PLL multiplier of 172.33 + CGC_PLL_MUL_172_5 = BSP_CLOCKS_PLL_MUL(172U, 50U), ///< PLL multiplier of 172.50 + CGC_PLL_MUL_172_66 = BSP_CLOCKS_PLL_MUL(172U, 66U), ///< PLL multiplier of 172.66 + CGC_PLL_MUL_173_0 = BSP_CLOCKS_PLL_MUL(173U, 0U), ///< PLL multiplier of 173.00 + CGC_PLL_MUL_173_33 = BSP_CLOCKS_PLL_MUL(173U, 33U), ///< PLL multiplier of 173.33 + CGC_PLL_MUL_173_5 = BSP_CLOCKS_PLL_MUL(173U, 50U), ///< PLL multiplier of 173.50 + CGC_PLL_MUL_173_66 = BSP_CLOCKS_PLL_MUL(173U, 66U), ///< PLL multiplier of 173.66 + CGC_PLL_MUL_174_0 = BSP_CLOCKS_PLL_MUL(174U, 0U), ///< PLL multiplier of 174.00 + CGC_PLL_MUL_174_33 = BSP_CLOCKS_PLL_MUL(174U, 33U), ///< PLL multiplier of 174.33 + CGC_PLL_MUL_174_5 = BSP_CLOCKS_PLL_MUL(174U, 50U), ///< PLL multiplier of 174.50 + CGC_PLL_MUL_174_66 = BSP_CLOCKS_PLL_MUL(174U, 66U), ///< PLL multiplier of 174.66 + CGC_PLL_MUL_175_0 = BSP_CLOCKS_PLL_MUL(175U, 0U), ///< PLL multiplier of 175.00 + CGC_PLL_MUL_175_33 = BSP_CLOCKS_PLL_MUL(175U, 33U), ///< PLL multiplier of 175.33 + CGC_PLL_MUL_175_5 = BSP_CLOCKS_PLL_MUL(175U, 50U), ///< PLL multiplier of 175.50 + CGC_PLL_MUL_175_66 = BSP_CLOCKS_PLL_MUL(175U, 66U), ///< PLL multiplier of 175.66 + CGC_PLL_MUL_176_0 = BSP_CLOCKS_PLL_MUL(176U, 0U), ///< PLL multiplier of 176.00 + CGC_PLL_MUL_176_33 = BSP_CLOCKS_PLL_MUL(176U, 33U), ///< PLL multiplier of 176.33 + CGC_PLL_MUL_176_5 = BSP_CLOCKS_PLL_MUL(176U, 50U), ///< PLL multiplier of 176.50 + CGC_PLL_MUL_176_66 = BSP_CLOCKS_PLL_MUL(176U, 66U), ///< PLL multiplier of 176.66 + CGC_PLL_MUL_177_0 = BSP_CLOCKS_PLL_MUL(177U, 0U), ///< PLL multiplier of 177.00 + CGC_PLL_MUL_177_33 = BSP_CLOCKS_PLL_MUL(177U, 33U), ///< PLL multiplier of 177.33 + CGC_PLL_MUL_177_5 = BSP_CLOCKS_PLL_MUL(177U, 50U), ///< PLL multiplier of 177.50 + CGC_PLL_MUL_177_66 = BSP_CLOCKS_PLL_MUL(177U, 66U), ///< PLL multiplier of 177.66 + CGC_PLL_MUL_178_0 = BSP_CLOCKS_PLL_MUL(178U, 0U), ///< PLL multiplier of 178.00 + CGC_PLL_MUL_178_33 = BSP_CLOCKS_PLL_MUL(178U, 33U), ///< PLL multiplier of 178.33 + CGC_PLL_MUL_178_5 = BSP_CLOCKS_PLL_MUL(178U, 50U), ///< PLL multiplier of 178.50 + CGC_PLL_MUL_178_66 = BSP_CLOCKS_PLL_MUL(178U, 66U), ///< PLL multiplier of 178.66 + CGC_PLL_MUL_179_0 = BSP_CLOCKS_PLL_MUL(179U, 0U), ///< PLL multiplier of 179.00 + CGC_PLL_MUL_179_33 = BSP_CLOCKS_PLL_MUL(179U, 33U), ///< PLL multiplier of 179.33 + CGC_PLL_MUL_179_5 = BSP_CLOCKS_PLL_MUL(179U, 50U), ///< PLL multiplier of 179.50 + CGC_PLL_MUL_179_66 = BSP_CLOCKS_PLL_MUL(179U, 66U), ///< PLL multiplier of 179.66 + CGC_PLL_MUL_180_0 = BSP_CLOCKS_PLL_MUL(180U, 0U), ///< PLL multiplier of 180.00 + CGC_PLL_MUL_180_33 = BSP_CLOCKS_PLL_MUL(180U, 33U), ///< PLL multiplier of 180.33 + CGC_PLL_MUL_180_5 = BSP_CLOCKS_PLL_MUL(180U, 50U), ///< PLL multiplier of 180.50 + CGC_PLL_MUL_180_66 = BSP_CLOCKS_PLL_MUL(180U, 66U), ///< PLL multiplier of 180.66 + CGC_PLL_MUL_732_0 = BSP_CLOCKS_PLL_MUL(732U, 0U), ///< PLL multiplier of 732.00 + CGC_PLL_MUL_781_0 = BSP_CLOCKS_PLL_MUL(781U, 0U), ///< PLL multiplier of 781.00 +} cgc_pll_mul_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_clock_init(void); // Used internally by BSP + +#if BSP_TZ_NONSECURE_BUILD +void bsp_clock_freq_var_init(void); // Used internally by BSP + +#endif + +#if BSP_TZ_SECURE_BUILD +void r_bsp_clock_update_callback_set(bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory); + +#endif + +/* Used internally by CGC */ + +#if !BSP_CFG_USE_LOW_VOLTAGE_MODE +void bsp_prv_operating_mode_set(uint8_t operating_mode); + +#endif + +#if BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED +uint32_t bsp_prv_power_change_mstp_set(void); +void bsp_prv_power_change_mstp_clear(uint32_t mstp_clear_bitmask); + +#endif + +void bsp_prv_prepare_pll(uint32_t pll_freq_hz); +void bsp_prv_clock_set(uint32_t clock, uint32_t sckdivcr, uint8_t sckdivcr2); + +/* RTC Initialization */ +#if BSP_FEATURE_RTC_IS_AVAILABLE || BSP_FEATURE_RTC_HAS_TCEN || BSP_FEATURE_SYSC_HAS_VBTICTLR +void R_BSP_Init_RTC(void); + +#endif + +#if BSP_CFG_SLEEP_MODE_DELAY_ENABLE || BSP_CFG_RTOS_SLEEP_MODE_DELAY_ENABLE +bool bsp_prv_clock_prepare_pre_sleep(void); +void bsp_prv_clock_prepare_post_sleep(bool cpuclk_slowed); + +#endif + +/* The public function is used to get state or initialize the sub-clock. */ +#if BSP_FEATURE_RTC_IS_IRTC +fsp_err_t R_BSP_SubclockStatusGet(); +fsp_err_t R_BSP_SubclockInitialize(); + +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c new file mode 100644 index 0000000000..374b57196a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.c @@ -0,0 +1,325 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#if defined(__ICCARM__) + #define WEAK_ERROR_ATTRIBUTE + #define WEAK_INIT_ATTRIBUTE + #pragma weak fsp_error_log = fsp_error_log_internal + #pragma weak bsp_init = bsp_init_internal +#elif defined(__GNUC__) + + #define WEAK_ERROR_ATTRIBUTE __attribute__((weak, alias("fsp_error_log_internal"))) + + #define WEAK_INIT_ATTRIBUTE __attribute__((weak, alias("bsp_init_internal"))) +#endif + +#define FSP_SECTION_VERSION ".version" + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/** Prototype of initialization function called before main. This prototype sets the weak association of this + * function to an internal example implementation. If this function is defined in the application code, the + * application code version is used. */ + +void bsp_init(void * p_args) WEAK_INIT_ATTRIBUTE; + +void bsp_init_internal(void * p_args); /// Default initialization function + +#if ((1 == BSP_CFG_ERROR_LOG) || (1 == BSP_CFG_ASSERT)) + +/** Prototype of function called before errors are returned in FSP code if BSP_CFG_ERROR_LOG is set to 1. This + * prototype sets the weak association of this function to an internal example implementation. */ + +void fsp_error_log(fsp_err_t err, const char * file, int32_t line) WEAK_ERROR_ATTRIBUTE; + +void fsp_error_log_internal(fsp_err_t err, const char * file, int32_t line); /// Default error logger function + +#endif +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 1 +static bool bsp_valid_register_check(uint32_t register_address, + uint32_t const * const p_register_table, + uint32_t register_table_length); + +#endif + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/* FSP pack version structure. */ +static BSP_DONT_REMOVE const fsp_pack_version_t g_fsp_version BSP_PLACE_IN_SECTION (FSP_SECTION_VERSION) = +{ + .version_id_b = + { + .minor = FSP_VERSION_MINOR, + .major = FSP_VERSION_MAJOR, + .build = FSP_VERSION_BUILD, + .patch = FSP_VERSION_PATCH + } +}; + +/* Public FSP version name. */ +static BSP_DONT_REMOVE const uint8_t g_fsp_version_string[] BSP_PLACE_IN_SECTION(FSP_SECTION_VERSION) = + FSP_VERSION_STRING; + +/* Unique FSP version ID. */ +static BSP_DONT_REMOVE const uint8_t g_fsp_version_build_string[] BSP_PLACE_IN_SECTION(FSP_SECTION_VERSION) = + FSP_VERSION_BUILD_STRING; + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Get the FSP version based on compile time macros. + * + * @param[out] p_version Memory address to return version information to. + * + * @retval FSP_SUCCESS Version information stored. + * @retval FSP_ERR_ASSERTION The parameter p_version is NULL. + **********************************************************************************************************************/ +fsp_err_t R_FSP_VersionGet (fsp_pack_version_t * const p_version) +{ +#if BSP_CFG_PARAM_CHECKING_ENABLE + + /** Verify parameters are valid */ + FSP_ASSERT(NULL != p_version); +#endif + + *p_version = g_fsp_version; + + return FSP_SUCCESS; +} + +#if ((1 == BSP_CFG_ERROR_LOG) || (1 == BSP_CFG_ASSERT)) + +/*******************************************************************************************************************//** + * Default error logger function, used only if fsp_error_log is not defined in the user application. + * + * @param[in] err The error code encountered. + * @param[in] file The file name in which the error code was encountered. + * @param[in] line The line number at which the error code was encountered. + **********************************************************************************************************************/ +void fsp_error_log_internal (fsp_err_t err, const char * file, int32_t line) +{ + /** Do nothing. Do not generate any 'unused' warnings. */ + FSP_PARAMETER_NOT_USED(err); + FSP_PARAMETER_NOT_USED(file); + FSP_PARAMETER_NOT_USED(line); +} + +#endif + +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 1 + +/*******************************************************************************************************************//** + * Read a secure 8-bit STYPE3 register in the non-secure state. + * + * @param[in] p_reg The address of the secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY uint8_t R_BSP_NSC_STYPE3_RegU8Read (uint8_t volatile const * p_reg) +{ + uint8_t volatile * p_reg_s = (uint8_t volatile *) ((uint32_t) p_reg & ~BSP_FEATURE_TZ_NS_OFFSET); + + /* Table of secure registers that may be read from the non-secure application. */ + static const uint32_t valid_addresses[] = + { + (uint32_t) &R_SYSTEM->SCKDIVCR2, + (uint32_t) &R_SYSTEM->SCKSCR, + (uint32_t) &R_SYSTEM->SPICKDIVCR, + (uint32_t) &R_SYSTEM->SPICKCR, + (uint32_t) &R_SYSTEM->SCICKDIVCR, + (uint32_t) &R_SYSTEM->SCICKCR, + (uint32_t) &R_SYSTEM->CANFDCKCR, + (uint32_t) &R_SYSTEM->PLLCR, + (uint32_t) &R_SYSTEM->PLL2CR, + (uint32_t) &R_SYSTEM->MOCOCR, + (uint32_t) &R_SYSTEM->OPCCR, + }; + + if (bsp_valid_register_check((uint32_t) p_reg_s, valid_addresses, + sizeof(valid_addresses) / sizeof(valid_addresses[0]))) + { + return *p_reg_s; + } + + /* Generate a trustzone access violation by accessing the non-secure aliased address. */ + return *((uint8_t volatile *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET)); +} + +/*******************************************************************************************************************//** + * Read a secure 16-bit STYPE3 register in the non-secure state. + * + * @param[in] p_reg The address of the secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY uint16_t R_BSP_NSC_STYPE3_RegU16Read (uint16_t volatile const * p_reg) +{ + uint16_t volatile * p_reg_s = (uint16_t volatile *) ((uint32_t) p_reg & ~BSP_FEATURE_TZ_NS_OFFSET); + + /* Table of secure registers that may be read from the non-secure application. */ + static const uint32_t valid_addresses[] = + { + (uint32_t) &R_DTC->DTCSTS, + }; + + if (bsp_valid_register_check((uint32_t) p_reg_s, valid_addresses, + sizeof(valid_addresses) / sizeof(valid_addresses[0]))) + { + return *p_reg_s; + } + + /* Generate a trustzone access violation by accessing the non-secure aliased address. */ + return *((uint16_t volatile *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET)); +} + +/*******************************************************************************************************************//** + * Read a secure 32-bit STYPE3 register in the non-secure state. + * + * @param[in] p_reg The address of the secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY uint32_t R_BSP_NSC_STYPE3_RegU32Read (uint32_t volatile const * p_reg) +{ + uint32_t volatile * p_reg_s = (uint32_t volatile *) ((uint32_t) p_reg & ~BSP_FEATURE_TZ_NS_OFFSET); + + /* Table of secure registers that may be read from the non-secure application. */ + static const uint32_t valid_addresses[] = + { + (uint32_t) &R_SYSTEM->SCKDIVCR, + }; + + if (bsp_valid_register_check((uint32_t) p_reg_s, valid_addresses, + sizeof(valid_addresses) / sizeof(valid_addresses[0]))) + { + return *p_reg_s; + } + + /* Generate a trustzone access violation by accessing the non-secure aliased address. */ + return *((uint32_t volatile *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET)); +} + +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * Default initialization function, used only if bsp_init is not defined in the user application. + **********************************************************************************************************************/ +void bsp_init_internal (void * p_args) +{ + /* Do nothing. */ + FSP_PARAMETER_NOT_USED(p_args); +} + +#if defined(__ARMCC_VERSION) + +/*******************************************************************************************************************//** + * Default implementation of assert for AC6. + **********************************************************************************************************************/ +__attribute__((weak, noreturn)) +void __aeabi_assert (const char * expr, const char * file, int line) +{ + FSP_PARAMETER_NOT_USED(expr); + FSP_PARAMETER_NOT_USED(file); + FSP_PARAMETER_NOT_USED(line); + __BKPT(0); + while (1) + { + /* Do nothing. */ + } +} + +#elif defined(__GNUC__) + +/* The default assert implementation for GCC brings in printing/formatting code. FSP overrides the default assert + * behavior to reduce code size. */ + + #if !BSP_CFG_USE_STANDARD_ASSERT + +/*******************************************************************************************************************//** + * Default implementation of assert for GCC. + **********************************************************************************************************************/ +BSP_WEAK_REFERENCE void __assert_func (const char * file, int line, const char * func, const char * expr) +{ + FSP_PARAMETER_NOT_USED(file); + FSP_PARAMETER_NOT_USED(line); + FSP_PARAMETER_NOT_USED(func); + FSP_PARAMETER_NOT_USED(expr); + __BKPT(0); + while (1) + { + /* Do nothing. */ + } +} + + #endif + +#endif + +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 1 + +/*******************************************************************************************************************//** + * Check if a register address should be accessible by the non-secure application. + **********************************************************************************************************************/ +static bool bsp_valid_register_check (uint32_t register_address, + uint32_t const * const p_register_table, + uint32_t register_table_length) +{ + bool valid = false; + + /* Check if the given address is valid. */ + for (uint32_t i = 0; i < register_table_length; i++) + { + if (p_register_table[i] == register_address) + { + valid = true; + break; + } + } + + return valid; +} + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h new file mode 100644 index 0000000000..5f45859b78 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_common.h @@ -0,0 +1,582 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_COMMON_H +#define BSP_COMMON_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* C99 includes. */ +#include +#include +#include +#include +#include + +/* Different compiler support. */ +#include "../../inc/api/fsp_common_api.h" +#include "bsp_compiler_support.h" + +/* BSP TFU Includes. */ +#include "../../src/bsp/mcu/all/bsp_tfu.h" + +#include "bsp_cfg.h" + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** Used to signify that an ELC event is not able to be used as an interrupt. */ +#define BSP_IRQ_DISABLED (0xFFU) + +/* Version of this module's code and API. */ + +#if 1 == BSP_CFG_RTOS /* ThreadX */ + #include "tx_user.h" + #if defined(TX_ENABLE_EVENT_TRACE) || defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY) + #include "tx_api.h" + #define FSP_CONTEXT_SAVE tx_isr_start((uint32_t) R_FSP_CurrentIrqGet()); + #define FSP_CONTEXT_RESTORE tx_isr_end((uint32_t) R_FSP_CurrentIrqGet()); + #else + #define FSP_CONTEXT_SAVE + #define FSP_CONTEXT_RESTORE + #endif +#else + #define FSP_CONTEXT_SAVE + #define FSP_CONTEXT_RESTORE +#endif + +/** Macro that can be defined in order to enable logging in FSP modules. */ +#ifndef FSP_LOG_PRINT + #define FSP_LOG_PRINT(X) +#endif + +/** Macro to log and return error without an assertion. */ +#ifndef FSP_RETURN + + #define FSP_RETURN(err) FSP_ERROR_LOG((err)); \ + return err; +#endif + +/** This function is called before returning an error code. To stop on a runtime error, define fsp_error_log in + * user code and do required debugging (breakpoints, stack dump, etc) in this function.*/ +#if (1 == BSP_CFG_ERROR_LOG) + + #ifndef FSP_ERROR_LOG + #define FSP_ERROR_LOG(err) \ + fsp_error_log((err), __FILE__, __LINE__); + #endif +#else + + #define FSP_ERROR_LOG(err) +#endif + +/** Default assertion calls ::FSP_ERROR_RETURN if condition "a" is false. Used to identify incorrect use of API's in FSP + * functions. */ +#if (3 == BSP_CFG_ASSERT) + #define FSP_ASSERT(a) +#elif (2 == BSP_CFG_ASSERT) + #define FSP_ASSERT(a) {assert(a);} +#else + #define FSP_ASSERT(a) FSP_ERROR_RETURN((a), FSP_ERR_ASSERTION) +#endif // ifndef FSP_ASSERT + +/** All FSP error codes are returned using this macro. Calls ::FSP_ERROR_LOG function if condition "a" is false. Used + * to identify runtime errors in FSP functions. */ + +#define FSP_ERROR_RETURN(a, err) \ + { \ + if ((a)) \ + { \ + (void) 0; /* Do nothing */ \ + } \ + else \ + { \ + FSP_ERROR_LOG(err); \ + return err; \ + } \ + } + +/* Function-like macro used to wait for a condition to be met, most often used to wait for hardware register updates. + * This macro can be redefined to add a timeout if necessary. */ +#ifndef FSP_HARDWARE_REGISTER_WAIT + #define FSP_HARDWARE_REGISTER_WAIT(reg, required_value) while (reg != required_value) { /* Wait. */} +#endif + +#ifndef FSP_REGISTER_READ + +/* Read a register and discard the result. */ + #define FSP_REGISTER_READ(A) __ASM volatile ("" : : "r" (A)); +#endif + +/**************************************************************** + * + * This check is performed to select suitable ASM API with respect to core + * + * The macros __CORE__ , __ARM7EM__ and __ARM_ARCH_8M_BASE__ are undefined for GCC, but defined(__IAR_SYSTEMS_ICC__) is false for GCC, so + * the left half of the || expression evaluates to false for GCC regardless of the values of these macros. */ + +#if (defined(__IAR_SYSTEMS_ICC__) && ((__CORE__ == __ARM7EM__) || (__CORE__ == __ARM_ARCH_8M_BASE__))) || \ + defined(__ARM_ARCH_7EM__) // CM4 + #ifndef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #define BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION (0U) + #endif +#else // CM23 + #ifdef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #undef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #endif + #define BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION (0U) +#endif + +/* This macro defines a variable for saving previous mask value */ +#ifndef FSP_CRITICAL_SECTION_DEFINE + + #define FSP_CRITICAL_SECTION_DEFINE uint32_t old_mask_level = 0U +#endif + +/* These macros abstract methods to save and restore the interrupt state for different architectures. */ +#if (0 == BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION) + #define FSP_CRITICAL_SECTION_GET_CURRENT_STATE __get_PRIMASK + #define FSP_CRITICAL_SECTION_SET_STATE __set_PRIMASK + #define FSP_CRITICAL_SECTION_IRQ_MASK_SET (1U) +#else + #define FSP_CRITICAL_SECTION_GET_CURRENT_STATE __get_BASEPRI + #define FSP_CRITICAL_SECTION_SET_STATE __set_BASEPRI + #define FSP_CRITICAL_SECTION_IRQ_MASK_SET ((uint8_t) (BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION << \ + (8U - __NVIC_PRIO_BITS))) +#endif + +/** This macro temporarily saves the current interrupt state and disables interrupts. */ +#ifndef FSP_CRITICAL_SECTION_ENTER + #define FSP_CRITICAL_SECTION_ENTER \ + old_mask_level = FSP_CRITICAL_SECTION_GET_CURRENT_STATE(); \ + FSP_CRITICAL_SECTION_SET_STATE(FSP_CRITICAL_SECTION_IRQ_MASK_SET) +#endif + +/** This macro restores the previously saved interrupt state, reenabling interrupts. */ +#ifndef FSP_CRITICAL_SECTION_EXIT + #define FSP_CRITICAL_SECTION_EXIT FSP_CRITICAL_SECTION_SET_STATE(old_mask_level) +#endif + +/* Number of Cortex processor exceptions, used as an offset from XPSR value for the IRQn_Type macro. */ +#define FSP_PRIV_CORTEX_PROCESSOR_EXCEPTIONS (16U) + +/** Used to signify that the requested IRQ vector is not defined in this system. */ +#define FSP_INVALID_VECTOR ((IRQn_Type) - 33) + +/* Private definition used in bsp_clocks and R_FSP_SystemClockHzGet. Each bitfield in SCKDIVCR is up to 4 bits wide. */ +#if (BSP_CFG_MCU_PART_SERIES == 8) + #define FSP_PRV_SCKDIVCR_DIV_MASK (0xFU) +#else + #define FSP_PRV_SCKDIVCR_DIV_MASK (0x7U) +#endif + +/* Use the secure registers for secure projects and flat projects. */ +#if !BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_HAS_TRUSTZONE + #define FSP_PRIV_TZ_USE_SECURE_REGS (1) +#else + #define FSP_PRIV_TZ_USE_SECURE_REGS (0) +#endif + +/* Put certain BSP variables in uninitialized RAM when initializing BSP early. */ +#if BSP_CFG_EARLY_INIT + #define BSP_SECTION_EARLY_INIT BSP_PLACE_IN_SECTION(BSP_SECTION_NOINIT) +#else + #define BSP_SECTION_EARLY_INIT +#endif + +#if (BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD) && BSP_FEATURE_TZ_VERSION == 2 +BSP_CMSE_NONSECURE_ENTRY uint8_t R_BSP_NSC_STYPE3_RegU8Read(uint8_t volatile const * p_reg); +BSP_CMSE_NONSECURE_ENTRY uint16_t R_BSP_NSC_STYPE3_RegU16Read(uint16_t volatile const * p_reg); +BSP_CMSE_NONSECURE_ENTRY uint32_t R_BSP_NSC_STYPE3_RegU32Read(uint32_t volatile const * p_reg); + +#endif + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE && BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + +/* + * If the STYPE3 register's security attribution is set to secure, the non-secure application must read the register + * from the secure application using the provided non-secure callable functions. + */ + #define FSP_STYPE3_REG8_READ(X, S) (!(S) ? X : (R_BSP_NSC_STYPE3_RegU8Read((uint8_t const volatile *) &X))) + #define FSP_STYPE3_REG16_READ(X, S) (!(S) ? X : (R_BSP_NSC_STYPE3_RegU16Read((uint16_t const volatile *) &X))) + #define FSP_STYPE3_REG32_READ(X, S) (!(S) ? X : (R_BSP_NSC_STYPE3_RegU32Read((uint32_t const volatile *) &X))) +#elif BSP_FEATURE_TZ_HAS_TRUSTZONE && BSP_TZ_SECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + +/*******************************************************************************************************************//** + * Read a non-secure 8-bit STYPE3 register in the secure state. + * + * @param[in] p_reg The address of the non-secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +__STATIC_INLINE uint8_t R_BSP_S_STYPE3_RegU8Read (uint8_t volatile const * p_reg) +{ + p_reg = (uint8_t volatile const *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET); + + return *p_reg; +} + +/*******************************************************************************************************************//** + * Read a non-secure 16-bit STYPE3 register in the secure state. + * + * @param[in] p_reg The address of the non-secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +__STATIC_INLINE uint16_t R_BSP_S_STYPE3_RegU16Read (uint16_t volatile const * p_reg) +{ + p_reg = (uint16_t volatile const *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET); + + return *p_reg; +} + +/*******************************************************************************************************************//** + * Read a non-secure 32-bit STYPE3 register in the secure state. + * + * @param[in] p_reg The address of the non-secure register. + * + * @return Value read from the register. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_S_STYPE3_RegU32Read (uint32_t volatile const * p_reg) +{ + p_reg = (uint32_t volatile const *) ((uint32_t) p_reg | BSP_FEATURE_TZ_NS_OFFSET); + + return *p_reg; +} + +/* + * If the STYPE3 register's security attribution is set to non-secure, the secure application must read the register + * using the non-secure aliased address. + */ + #define FSP_STYPE3_REG8_READ(X, S) ((S) ? (X) : R_BSP_S_STYPE3_RegU8Read((uint8_t const volatile *) &X)) + #define FSP_STYPE3_REG16_READ(X, S) ((S) ? (X) : R_BSP_S_STYPE3_RegU16Read((uint16_t const volatile *) &X)) + #define FSP_STYPE3_REG32_READ(X, S) ((S) ? (X) : R_BSP_S_STYPE3_RegU32Read((uint32_t const volatile *) &X)) +#else + #define FSP_STYPE3_REG8_READ(X, S) (X) + #define FSP_STYPE3_REG16_READ(X, S) (X) + #define FSP_STYPE3_REG32_READ(X, S) (X) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Different warm start entry locations in the BSP. */ +typedef enum e_bsp_warm_start_event +{ + BSP_WARM_START_RESET = 0, ///< Called almost immediately after reset. No C runtime environment, clocks, or IRQs. + BSP_WARM_START_POST_CLOCK, ///< Called after clock initialization. No C runtime environment or IRQs. + BSP_WARM_START_POST_C ///< Called after clocks and C runtime environment have been set up +} bsp_warm_start_event_t; + +/* Private enum used in R_FSP_SystemClockHzGet. Maps clock name to base bit in SCKDIVCR. */ +typedef enum e_fsp_priv_clock +{ + FSP_PRIV_CLOCK_PCLKD = 0, + FSP_PRIV_CLOCK_PCLKC = 4, + FSP_PRIV_CLOCK_PCLKB = 8, + FSP_PRIV_CLOCK_PCLKA = 12, + FSP_PRIV_CLOCK_BCLK = 16, + FSP_PRIV_CLOCK_PCLKE = 20, + FSP_PRIV_CLOCK_ICLK = 24, + FSP_PRIV_CLOCK_FCLK = 28, + FSP_PRIV_CLOCK_CPUCLK = 32, +} fsp_priv_clock_t; + +/* Private enum used in R_FSP_SciSpiClockHzGe. Maps clock name to base bit in SCISPICKCR. */ +typedef enum e_fsp_priv_source_clock +{ + FSP_PRIV_CLOCK_HOCO = 0, ///< The high speed on chip oscillator + FSP_PRIV_CLOCK_MOCO = 1, ///< The middle speed on chip oscillator + FSP_PRIV_CLOCK_LOCO = 2, ///< The low speed on chip oscillator + FSP_PRIV_CLOCK_MAIN_OSC = 3, ///< The main oscillator + FSP_PRIV_CLOCK_SUBCLOCK = 4, ///< The subclock oscillator + FSP_PRIV_CLOCK_PLL = 5, ///< The PLL oscillator + FSP_PRIV_CLOCK_PLL2 = 6, ///< The PLL2 oscillator +} fsp_priv_source_clock_t; + +typedef struct st_bsp_unique_id +{ + union + { + uint32_t unique_id_words[4]; + uint8_t unique_id_bytes[16]; + }; +} bsp_unique_id_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +uint32_t R_BSP_SourceClockHzGet(fsp_priv_source_clock_t clock); + +/*********************************************************************************************************************** + * Global variables (defined in other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Return active interrupt vector number value + * + * @return Active interrupt vector number value + **********************************************************************************************************************/ +__STATIC_INLINE IRQn_Type R_FSP_CurrentIrqGet (void) +{ + xPSR_Type xpsr_value; + xpsr_value.w = __get_xPSR(); + + return (IRQn_Type) (xpsr_value.b.ISR - FSP_PRIV_CORTEX_PROCESSOR_EXCEPTIONS); +} + +/*******************************************************************************************************************//** + * Gets the frequency of a system clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SystemClockHzGet (fsp_priv_clock_t clock) +{ + uint32_t sckdivcr = FSP_STYPE3_REG32_READ(R_SYSTEM->SCKDIVCR, BSP_CFG_CLOCKS_SECURE); + uint32_t clock_div = (sckdivcr >> clock) & FSP_PRV_SCKDIVCR_DIV_MASK; + +#if BSP_FEATURE_CGC_HAS_CPUCLK + if (FSP_PRIV_CLOCK_CPUCLK == clock) + { + return SystemCoreClock; + } + + /* Get CPUCLK divisor */ + uint32_t cpuclk_div = FSP_STYPE3_REG8_READ(R_SYSTEM->SCKDIVCR2, BSP_CFG_CLOCKS_SECURE) & FSP_PRV_SCKDIVCR_DIV_MASK; + + /* Determine if either divisor is a multiple of 3 */ + if ((cpuclk_div | clock_div) & 8U) + { + /* Convert divisor settings to their actual values */ + cpuclk_div = (cpuclk_div & 8U) ? (3U << (cpuclk_div & 7U)) : (1U << cpuclk_div); + clock_div = (clock_div & 8U) ? (3U << (clock_div & 7U)) : (1U << clock_div); + + /* Calculate clock with multiplication and division instead of shifting */ + return (SystemCoreClock * cpuclk_div) / clock_div; + } + else + { + return (SystemCoreClock << cpuclk_div) >> clock_div; + } + +#else + uint32_t iclk_div = (sckdivcr >> FSP_PRIV_CLOCK_ICLK) & FSP_PRV_SCKDIVCR_DIV_MASK; + + return (SystemCoreClock << iclk_div) >> clock_div; +#endif +} + +/*******************************************************************************************************************//** + * Converts a clock's CKDIVCR register value to a clock divider (Eg: SPICKDIVCR). + * + * @return Clock Divider + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_ClockDividerGet (uint32_t ckdivcr) +{ + if (2U >= ckdivcr) + { + + /* clock_div: + * - Clock Divided by 1: 0 + * - Clock Divided by 2: 1 + * - Clock Divided by 4: 2 + */ + return 1U << ckdivcr; + } + else if (3U == ckdivcr) + { + + /* Clock Divided by 6 */ + return 6U; + } + else if (4U == ckdivcr) + { + + /* Clock Divided by 8 */ + return 8U; + } + else if (5U == ckdivcr) + { + + /* Clock Divided by 3 */ + return 3U; + } + + /* Clock Divided by 5 */ + return 5U; +} + +#if BSP_FEATURE_BSP_HAS_SCISPI_CLOCK + +/*******************************************************************************************************************//** + * Gets the frequency of a SCI/SPI clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SciSpiClockHzGet (void) +{ + uint32_t scispidivcr = R_SYSTEM->SCISPICKDIVCR; + uint32_t clock_div = R_FSP_ClockDividerGet(scispidivcr & FSP_PRV_SCKDIVCR_DIV_MASK); + fsp_priv_source_clock_t scispicksel = (fsp_priv_source_clock_t) R_SYSTEM->SCISPICKCR_b.SCISPICKSEL; + + return R_BSP_SourceClockHzGet(scispicksel) / clock_div; +} + +#endif +#if BSP_FEATURE_BSP_HAS_SPI_CLOCK + +/*******************************************************************************************************************//** + * Gets the frequency of a SPI clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SpiClockHzGet (void) +{ + uint32_t spidivcr = FSP_STYPE3_REG8_READ(R_SYSTEM->SPICKDIVCR, BSP_CFG_CLOCKS_SECURE); + uint32_t clock_div = R_FSP_ClockDividerGet(spidivcr & FSP_PRV_SCKDIVCR_DIV_MASK); + fsp_priv_source_clock_t spicksel = + (fsp_priv_source_clock_t) ((FSP_STYPE3_REG8_READ(R_SYSTEM->SPICKCR, + BSP_CFG_CLOCKS_SECURE) & R_SYSTEM_SPICKCR_CKSEL_Msk) >> + R_SYSTEM_SPICKCR_CKSEL_Pos); + + return R_BSP_SourceClockHzGet(spicksel) / clock_div; +} + +#endif +#if BSP_FEATURE_BSP_HAS_SCI_CLOCK + +/*******************************************************************************************************************//** + * Gets the frequency of a SCI clock. + * + * @return Frequency of requested clock in Hertz. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_FSP_SciClockHzGet (void) +{ + uint32_t scidivcr = FSP_STYPE3_REG8_READ(R_SYSTEM->SCICKDIVCR, BSP_CFG_CLOCKS_SECURE); + uint32_t clock_div = R_FSP_ClockDividerGet(scidivcr & FSP_PRV_SCKDIVCR_DIV_MASK); + fsp_priv_source_clock_t scicksel = + (fsp_priv_source_clock_t) (FSP_STYPE3_REG8_READ(R_SYSTEM->SCICKCR, + BSP_CFG_CLOCKS_SECURE) & R_SYSTEM_SCICKCR_SCICKSEL_Msk >> + R_SYSTEM_SCICKCR_SCICKSEL_Pos); + + return R_BSP_SourceClockHzGet(scicksel) / clock_div; +} + +#endif + +/*******************************************************************************************************************//** + * Get unique ID for this device. + * + * @return A pointer to the unique identifier structure + **********************************************************************************************************************/ +__STATIC_INLINE bsp_unique_id_t const * R_BSP_UniqueIdGet (void) +{ +#if BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_NONSECURE_BUILD == 1 + + return (bsp_unique_id_t *) (BSP_FEATURE_BSP_UNIQUE_ID_POINTER | BSP_FEATURE_TZ_NS_OFFSET); +#else + + return (bsp_unique_id_t *) BSP_FEATURE_BSP_UNIQUE_ID_POINTER; +#endif +} + +/*******************************************************************************************************************//** + * Disables the flash cache. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_FlashCacheDisable (void) +{ +#if BSP_FEATURE_BSP_FLASH_CACHE + R_FCACHE->FCACHEE = 0U; +#endif + +#if BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE + + /* Disable the C-Cache. */ + R_CACHE->CCACTL = 0U; +#endif +} + +/*******************************************************************************************************************//** + * Enables the flash cache. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_FlashCacheEnable (void) +{ +#if BSP_FEATURE_BSP_FLASH_CACHE + + /* Invalidate the flash cache and wait until it is invalidated. (See section 55.3.2.2 "Operation" of the Flash Cache + * in the RA6M3 manual R01UH0878EJ0100). */ + R_FCACHE->FCACHEIV = 1U; + FSP_HARDWARE_REGISTER_WAIT(R_FCACHE->FCACHEIV, 0U); + + /* Enable flash cache. */ + R_FCACHE->FCACHEE = 1U; +#endif + +#if BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE + + /* Configure the C-Cache line size. */ + R_CACHE->CCALCF = BSP_CFG_C_CACHE_LINE_SIZE; + + /* Enable the C-Cache. */ + R_CACHE->CCACTL = 1U; +#endif +} + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +#if ((1 == BSP_CFG_ERROR_LOG) || (1 == BSP_CFG_ASSERT)) + +/** Prototype of default function called before errors are returned in FSP code if BSP_CFG_LOG_ERRORS is set to 1. */ +void fsp_error_log(fsp_err_t err, const char * file, int32_t line); + +#endif + +/** In the event of an unrecoverable error the BSP will by default call the __BKPT() intrinsic function which will + * alert the user of the error. The user can override this default behavior by defining their own + * BSP_CFG_HANDLE_UNRECOVERABLE_ERROR macro. + */ +#if !defined(BSP_CFG_HANDLE_UNRECOVERABLE_ERROR) + + #define BSP_CFG_HANDLE_UNRECOVERABLE_ERROR(x) __BKPT((x)) +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h new file mode 100644 index 0000000000..43a316e183 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_compiler_support.h @@ -0,0 +1,120 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_COMPILER_SUPPORT_H + #define BSP_COMPILER_SUPPORT_H + + #if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + #include "arm_cmse.h" + #endif + + #ifdef __cplusplus +extern "C" { + #endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + #if defined(__ARMCC_VERSION) /* AC6 compiler */ + +/* The AC6 linker requires uninitialized code to be placed in a section that starts with ".bss." Without this, load + * memory (ROM) is reserved unnecessarily. */ + #define BSP_UNINIT_SECTION_PREFIX ".bss" + #ifndef BSP_SECTION_HEAP + #define BSP_SECTION_HEAP BSP_UNINIT_SECTION_PREFIX ".heap" + #endif + #define BSP_DONT_REMOVE __attribute__((used)) + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) + #elif defined(__GNUC__) /* GCC compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #ifndef BSP_SECTION_HEAP + #define BSP_SECTION_HEAP ".heap" + #endif + #define BSP_DONT_REMOVE + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) + #elif defined(__ICCARM__) /* IAR compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #ifndef BSP_SECTION_HEAP + #define BSP_SECTION_HEAP "HEAP" + #endif + #define BSP_DONT_REMOVE __root + #define BSP_ATTRIBUTE_STACKLESS __stackless + #define BSP_FORCE_INLINE _Pragma("inline=forced") + #endif + + #ifndef BSP_SECTION_STACK + #define BSP_SECTION_STACK BSP_UNINIT_SECTION_PREFIX ".stack" + #endif + #define BSP_SECTION_NOINIT BSP_UNINIT_SECTION_PREFIX ".noinit" + #define BSP_SECTION_FIXED_VECTORS ".fixed_vectors" + #define BSP_SECTION_APPLICATION_VECTORS ".application_vectors" + #define BSP_SECTION_ROM_REGISTERS ".rom_registers" + #define BSP_SECTION_ID_CODE ".id_code" + +/* Compiler neutral macros. */ + #define BSP_PLACE_IN_SECTION(x) __attribute__((section(x))) __attribute__((__used__)) + + #define BSP_ALIGN_VARIABLE(x) __attribute__((aligned(x))) + + #define BSP_PACKED __attribute__((aligned(1))) // DEPRECATED + + #define BSP_WEAK_REFERENCE __attribute__((weak)) + +/** Stacks (and heap) must be sized and aligned to an integer multiple of this number. */ + #define BSP_STACK_ALIGNMENT (8) + +/*********************************************************************************************************************** + * TrustZone definitions + **********************************************************************************************************************/ + #if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) && !defined(__clang_analyzer__) + #if defined(__ICCARM__) /* IAR compiler */ + #define BSP_CMSE_NONSECURE_CALL __cmse_nonsecure_call + #define BSP_CMSE_NONSECURE_ENTRY __cmse_nonsecure_entry + #else + #define BSP_CMSE_NONSECURE_CALL __attribute__((cmse_nonsecure_call)) + #define BSP_CMSE_NONSECURE_ENTRY __attribute__((cmse_nonsecure_entry)) + #endif + #else + #define BSP_CMSE_NONSECURE_CALL + #define BSP_CMSE_NONSECURE_ENTRY + #endif + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end of addtogroup BSP_MCU) */ + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c new file mode 100644 index 0000000000..03768614d4 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.c @@ -0,0 +1,189 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "bsp_delay.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_DELAY_NS_PER_SECOND (1000000000) +#define BSP_DELAY_NS_PER_US (1000) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Delay for at least the specified duration in units and return. + * @param[in] delay The number of 'units' to delay. + * @param[in] units The 'base' (bsp_delay_units_t) for the units specified. Valid values are: + * BSP_DELAY_UNITS_SECONDS, BSP_DELAY_UNITS_MILLISECONDS, BSP_DELAY_UNITS_MICROSECONDS.@n + * For example:@n + * At 1 MHz one cycle takes 1 microsecond (.000001 seconds).@n + * At 12 MHz one cycle takes 1/12 microsecond or 83 nanoseconds.@n + * Therefore one run through bsp_prv_software_delay_loop() takes: + * ~ (83 * BSP_DELAY_LOOP_CYCLES) or 332 ns. + * A delay of 2 us therefore requires 2000ns/332ns or 6 loops. + * + * The 'theoretical' maximum delay that may be obtained is determined by a full 32 bit loop count and the system clock rate. + * @120MHz: ((0xFFFFFFFF loops * 4 cycles /loop) / 120000000) = 143 seconds. + * @32MHz: ((0xFFFFFFFF loops * 4 cycles /loop) / 32000000) = 536 seconds + * + * Note that requests for very large delays will be affected by rounding in the calculations and the actual delay + * achieved may be slightly longer. @32 MHz, for example, a request for 532 seconds will be closer to 536 seconds. + * + * Note also that if the calculations result in a loop_cnt of zero, the bsp_prv_software_delay_loop() function is not called + * at all. In this case the requested delay is too small (nanoseconds) to be carried out by the loop itself, and the + * overhead associated with executing the code to just get to this point has certainly satisfied the requested delay. + * + * @note This function calls bsp_cpu_clock_get() which ultimately calls R_CGC_SystemClockFreqGet() and therefore requires + * that the BSP has already initialized the CGC (which it does as part of the Sysinit). + * Care should be taken to ensure this remains the case if in the future this function were to be called as part + * of the BSP initialization. + * + * @note This function will delay for **at least** the specified duration. Due to overhead in calculating the correct number + * of loops to delay, very small delay values (generally 1-5 microseconds) may be significantly longer than specified. + * Approximate overhead for this function is as follows: + * - CM4: 20-50 cycles + * - CM33: 10-60 cycles + * - CM23: 75-200 cycles + * + * @note If more accurate microsecond timing must be performed in software it is recommended to use + * bsp_prv_software_delay_loop() directly. In this case, use BSP_DELAY_LOOP_CYCLES or BSP_DELAY_LOOPS_CALCULATE() + * to convert a calculated delay cycle count to a number of software delay loops. + * + * @note Delays may be longer than expected when compiler optimization is turned off. + * + * @warning The delay will be longer than specified on CM23 devices when the core clock is greater than 32 MHz. Setting + * BSP_DELAY_LOOP_CYCLES to 6 will improve accuracy at 48 MHz but will result in shorter than expected delays + * at lower speeds. + **********************************************************************************************************************/ + +void R_BSP_SoftwareDelay (uint32_t delay, bsp_delay_units_t units) +{ + uint32_t iclk_hz; + uint32_t cycles_requested; + uint32_t ns_per_cycle; + uint32_t loops_required = 0; + uint32_t total_us = (delay * units); /** Convert the requested time to microseconds. */ + uint64_t ns_64bits; + + iclk_hz = SystemCoreClock; /** Get the system clock frequency in Hz. */ + + /* Running on the Sub-clock (32768 Hz) there are 30517 ns/cycle. This means one cycle takes 31 us. One execution + * loop of the delay_loop takes 6 cycles which at 32768 Hz is 180 us. That does not include the overhead below prior to even getting + * to the delay loop. Given this, at this frequency anything less then a delay request of 122 us will not even generate a single + * pass through the delay loop. For this reason small delays (<=~200 us) at this slow clock rate will not be possible and such a request + * will generate a minimum delay of ~200 us.*/ + ns_per_cycle = BSP_DELAY_NS_PER_SECOND / iclk_hz; /** Get the # of nanoseconds/cycle. */ + + /* We want to get the time in total nanoseconds but need to be conscious of overflowing 32 bits. We also do not want to do 64 bit */ + /* division as that pulls in a division library. */ + ns_64bits = (uint64_t) total_us * (uint64_t) BSP_DELAY_NS_PER_US; // Convert to ns. + + /* Have we overflowed 32 bits? */ + if (ns_64bits <= UINT32_MAX) + { + /* No, we will not overflow. */ + cycles_requested = ((uint32_t) ns_64bits / ns_per_cycle); + loops_required = cycles_requested / BSP_DELAY_LOOP_CYCLES; + } + else + { + /* We did overflow. Try dividing down first. */ + total_us = (total_us / (ns_per_cycle * BSP_DELAY_LOOP_CYCLES)); + ns_64bits = (uint64_t) total_us * (uint64_t) BSP_DELAY_NS_PER_US; // Convert to ns. + + /* Have we overflowed 32 bits? */ + if (ns_64bits <= UINT32_MAX) + { + /* No, we will not overflow. */ + loops_required = (uint32_t) ns_64bits; + } + else + { + /* We still overflowed, use the max count for cycles */ + loops_required = UINT32_MAX; + } + } + + /** Only delay if the supplied parameters constitute a delay. */ + if (loops_required > (uint32_t) 0) + { + bsp_prv_software_delay_loop(loops_required); + } +} + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * This assembly language routine takes roughly 4 cycles per loop. 2 additional cycles + * occur when the loop exits. The 'naked' attribute indicates that the specified function does not need + * prologue/epilogue sequences generated by the compiler. + * @param[in] loop_cnt The number of loops to iterate. + **********************************************************************************************************************/ +BSP_ATTRIBUTE_STACKLESS void bsp_prv_software_delay_loop (__attribute__( + (unused)) uint32_t loop_cnt) +{ + __asm volatile ( +#if defined(RENESAS_CORTEX_M85) && (defined(__ARMCC_VERSION) || defined(__GNUC__)) + + /* Align the branch target to a 64-bit boundary, a CM85 specific optimization. */ + /* IAR does not support alignment control within inline assembly. */ + ".balign 8\n" +#endif + "sw_delay_loop: \n" +#if defined(__ICCARM__) || defined(__ARMCC_VERSION) || (defined(__llvm__) && !defined(__CLANG_TIDY__)) + " subs r0, #1 \n" ///< 1 cycle +#elif defined(__GNUC__) + " sub r0, r0, #1 \n" ///< 1 cycle +#endif + + " cmp r0, #0 \n" ///< 1 cycle + +/* CM0 and CM23 have a different instruction set */ +#if defined(__CORE_CM0PLUS_H_GENERIC) || defined(__CORE_CM23_H_GENERIC) + " bne sw_delay_loop \n" ///< 2 cycles +#else + " bne.n sw_delay_loop \n" ///< 2 cycles +#endif + " bx lr \n"); ///< 2 cycles +} diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h new file mode 100644 index 0000000000..8a2c20c0b2 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_delay.h @@ -0,0 +1,87 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_DELAY_H +#define BSP_DELAY_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#include "bsp_compiler_support.h" + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* The number of cycles required per software delay loop. */ +#ifndef BSP_DELAY_LOOP_CYCLES + #if defined(RENESAS_CORTEX_M85) + +/* On M85 cores, code alignment can affect execution speed. bsp_prv_software_delay_loop is aligned to 8 bytes for + * GCC and AC6, but IAR does not support aligning code. The below ensures the correct loop cycle count is used in + * this case. */ + #if defined(__ICCARM__) + #define BSP_DELAY_LOOP_CYCLES (((uint32_t) bsp_prv_software_delay_loop & 0x6) ? 2 : 1) + #else + #define BSP_DELAY_LOOP_CYCLES (1) + #endif + #else + #define BSP_DELAY_LOOP_CYCLES (4) + #endif +#endif + +/* Calculates the number of delay loops to pass to bsp_prv_software_delay_loop to achieve at least the requested cycle + * count delay. This is 1 loop longer than optimal if cycles is a multiple of BSP_DELAY_LOOP_CYCLES, but it ensures + * the requested number of loops is at least 1 since bsp_prv_software_delay_loop cannot be called with a loop count + * of 0. */ +#define BSP_DELAY_LOOPS_CALCULATE(cycles) (((cycles) / BSP_DELAY_LOOP_CYCLES) + 1U) + +/** Available delay units for R_BSP_SoftwareDelay(). These are ultimately used to calculate a total # of microseconds */ +typedef enum +{ + BSP_DELAY_UNITS_SECONDS = 1000000, ///< Requested delay amount is in seconds + BSP_DELAY_UNITS_MILLISECONDS = 1000, ///< Requested delay amount is in milliseconds + BSP_DELAY_UNITS_MICROSECONDS = 1 ///< Requested delay amount is in microseconds +} bsp_delay_units_t; + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +BSP_ATTRIBUTE_STACKLESS void bsp_prv_software_delay_loop(uint32_t loop_cnt); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h new file mode 100644 index 0000000000..ef1dd59e68 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_exceptions.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU) */ + +#ifndef BSP_EXCEPTIONS_H + #define BSP_EXCEPTIONS_H + + #ifdef __cplusplus +extern "C" { + #endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/* This list includes only Arm standard exceptions. Renesas interrupts are defined in vector_data.h. */ +typedef enum IRQn +{ + 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 */ + MemoryManagement_IRQn = -12, /* 4 Memory Management MPU mismatch, including Access Violation and No Match */ + BusFault_IRQn = -11, /* 5 Bus Fault Pre-Fetch-, Memory Access, other address/memory Fault */ + UsageFault_IRQn = -10, /* 6 Usage Fault i.e. Undef Instruction, Illegal State Transition */ + SecureFault_IRQn = -9, /* 7 Secure Fault Interrupt */ + SVCall_IRQn = -5, /* 11 System Service Call via SVC instruction */ + DebugMonitor_IRQn = -4, /* 12 Debug Monitor */ + PendSV_IRQn = -2, /* 14 Pendable request for system service */ + SysTick_IRQn = -1, /* 15 System Tick Timer */ +} IRQn_Type; + + #ifdef __cplusplus +} + #endif + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c new file mode 100644 index 0000000000..f94729092c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.c @@ -0,0 +1,131 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_GRP_IRQ_TOTAL_ITEMS (16U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** This array holds callback functions. */ +bsp_grp_irq_cb_t g_bsp_group_irq_sources[BSP_GRP_IRQ_TOTAL_ITEMS] BSP_SECTION_EARLY_INIT; + +void NMI_Handler(void); +static void bsp_group_irq_call(bsp_grp_irq_t irq); + +/*******************************************************************************************************************//** + * Calls the callback function for an interrupt if a callback has been registered. + * + * @param[in] irq Which interrupt to check and possibly call. + * + * @retval FSP_SUCCESS Callback was called. + * @retval FSP_ERR_INVALID_ARGUMENT No valid callback has been registered for this interrupt source. + * + * @warning This function is called from within an interrupt + **********************************************************************************************************************/ +static void bsp_group_irq_call (bsp_grp_irq_t irq) +{ + /** Check for valid callback */ + if (NULL != g_bsp_group_irq_sources[irq]) + { + /** Callback has been found. Call it. */ + g_bsp_group_irq_sources[irq](irq); + } +} + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Register a callback function for supported interrupts. If NULL is passed for the callback argument then any + * previously registered callbacks are unregistered. + * + * @param[in] irq Interrupt for which to register a callback. + * @param[in] p_callback Pointer to function to call when interrupt occurs. + * + * @retval FSP_SUCCESS Callback registered + * @retval FSP_ERR_ASSERTION Callback pointer is NULL + **********************************************************************************************************************/ +fsp_err_t R_BSP_GroupIrqWrite (bsp_grp_irq_t irq, void (* p_callback)(bsp_grp_irq_t irq)) +{ +#if BSP_CFG_PARAM_CHECKING_ENABLE + + /* Check pointer for NULL value. */ + FSP_ASSERT(p_callback); +#endif + + /* Register callback. */ + g_bsp_group_irq_sources[irq] = p_callback; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Non-maskable interrupt handler. This exception is defined by the BSP, unlike other system exceptions, because + * there are many sources that map to the NMI exception. + **********************************************************************************************************************/ +void NMI_Handler (void) +{ + /* NMISR is masked by NMIER to prevent iterating over NMI status flags that are not enabled. */ + uint16_t nmier = R_ICU->NMIER; + uint16_t nmisr = R_ICU->NMISR & nmier; + + /* Loop over all NMI status flags */ + for (bsp_grp_irq_t irq = BSP_GRP_IRQ_IWDT_ERROR; irq <= (bsp_grp_irq_t) (BSP_GRP_IRQ_TOTAL_ITEMS - 1); irq++) + { + /* If the current irq status register is set call the irq callback. */ + if (0U != (nmisr & (1U << irq))) + { + (void) bsp_group_irq_call(irq); + } + } + + /* Clear status flags that have been handled. */ + R_ICU->NMICLR = nmisr; + +#if BSP_CFG_MCU_PART_SERIES == 8 + + /* Wait for NMISR to be cleared before exiting the ISR to prevent the IRQ from being regenerated. + * See section "13.2.12 NMICLR : Non-Maskable Interrupt Status Clear Register" in the RA8M1 manual + * R01UH0994EJ0100 */ + FSP_HARDWARE_REGISTER_WAIT((R_ICU->NMISR & nmisr), 0); +#endif +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h new file mode 100644 index 0000000000..001fa8e527 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_group_irq.h @@ -0,0 +1,83 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_GROUP_IRQ_H +#define BSP_GROUP_IRQ_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +#ifndef BSP_OVERRIDE_GROUP_IRQ_T + +/** Which interrupts can have callbacks registered. */ +typedef enum e_bsp_grp_irq +{ + BSP_GRP_IRQ_IWDT_ERROR = 0, ///< IWDT underflow/refresh error has occurred + BSP_GRP_IRQ_WDT_ERROR = 1, ///< WDT underflow/refresh error has occurred + BSP_GRP_IRQ_LVD1 = 2, ///< Voltage monitoring 1 interrupt + BSP_GRP_IRQ_LVD2 = 3, ///< Voltage monitoring 2 interrupt + BSP_GRP_IRQ_VBATT = 4, ///< VBATT monitor interrupt + BSP_GRP_IRQ_OSC_STOP_DETECT = 6, ///< Oscillation stop is detected + BSP_GRP_IRQ_NMI_PIN = 7, ///< NMI Pin interrupt + BSP_GRP_IRQ_RAM_PARITY = 8, ///< RAM Parity Error + BSP_GRP_IRQ_RAM_ECC = 9, ///< RAM ECC Error + BSP_GRP_IRQ_MPU_BUS_SLAVE = 10, ///< MPU Bus Slave Error + BSP_GRP_IRQ_MPU_BUS_MASTER = 11, ///< MPU Bus Master Error + BSP_GRP_IRQ_MPU_STACK = 12, ///< MPU Stack Error + BSP_GRP_IRQ_TRUSTZONE = 13, ///< MPU Stack Error + BSP_GRP_IRQ_CACHE_PARITY = 15, ///< MPU Stack Error +} bsp_grp_irq_t; + +#endif + +/* Callback type. */ +typedef void (* bsp_grp_irq_cb_t)(bsp_grp_irq_t irq); + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_group_interrupt_open(void); // Used internally by BSP + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c new file mode 100644 index 0000000000..3c3ca2dc45 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.c @@ -0,0 +1,55 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#include "bsp_guard.h" + +/* Only the secure project has nonsecure callable functions. */ +#if BSP_TZ_SECURE_BUILD + +/* If the CGG Security Attribution is configured to secure access only. */ + #if BSP_CFG_CLOCKS_SECURE == 1 + +/*******************************************************************************************************************//** + * Set the callback used by the secure project to notify the nonsecure project when the clock settings have changed. + * + * @retval FSP_SUCCESS Callback set. + * @retval FSP_ERR_ASSERTION An input parameter is invalid. + **********************************************************************************************************************/ +BSP_CMSE_NONSECURE_ENTRY fsp_err_t R_BSP_ClockUpdateCallbackSet (bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory) +{ + bsp_clock_update_callback_t p_callback_checked = + (bsp_clock_update_callback_t) cmse_check_address_range((void *) p_callback, sizeof(void *), CMSE_AU_NONSECURE); + + bsp_clock_update_callback_args_t * p_callback_memory_checked = + (bsp_clock_update_callback_args_t *) cmse_check_address_range(p_callback_memory, + sizeof(bsp_clock_update_callback_args_t), + CMSE_AU_NONSECURE); + FSP_ASSERT(p_callback == p_callback_checked); + FSP_ASSERT(p_callback_memory == p_callback_memory_checked); + + r_bsp_clock_update_callback_set(p_callback_checked, p_callback_memory_checked); + + return FSP_SUCCESS; +} + + #endif + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h new file mode 100644 index 0000000000..ae5bb696e0 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_guard.h @@ -0,0 +1,46 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_GUARD_H +#define BSP_GUARD_H + +#include "bsp_api.h" + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#if BSP_TZ_SECURE_BUILD || BSP_TZ_NONSECURE_BUILD +BSP_CMSE_NONSECURE_ENTRY fsp_err_t R_BSP_ClockUpdateCallbackSet(bsp_clock_update_callback_t p_callback, + bsp_clock_update_callback_args_t * p_callback_memory); + +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c new file mode 100644 index 0000000000..130761000a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.c @@ -0,0 +1,41 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ +volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h new file mode 100644 index 0000000000..db50c6f88a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_io.h @@ -0,0 +1,470 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @defgroup BSP_IO BSP I/O access + * @ingroup RENESAS_COMMON + * @brief This module provides basic read/write access to port pins. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_IO_H +#define BSP_IO_H + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Private definition to set enumeration values. */ +#define BSP_IO_PRV_PFS_PSEL_OFFSET (24) +#define BSP_IO_PRV_8BIT_MASK (0xFF) +#define BSP_IO_PWPR_B0WI_OFFSET (7U) +#define BSP_IO_PWPR_PFSWE_OFFSET (6U) +#define BSP_IO_PFS_PDR_OUTPUT (4U) +#define BSP_IO_PRV_PIN_WRITE_MASK (0xFFFE3FFE) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Levels that can be set and read for individual pins */ +typedef enum e_bsp_io_level +{ + BSP_IO_LEVEL_LOW = 0, ///< Low + BSP_IO_LEVEL_HIGH ///< High +} bsp_io_level_t; + +/** Direction of individual pins */ +typedef enum e_bsp_io_dir +{ + BSP_IO_DIRECTION_INPUT = 0, ///< Input + BSP_IO_DIRECTION_OUTPUT ///< Output +} bsp_io_direction_t; + +/** Superset list of all possible IO ports. */ +typedef enum e_bsp_io_port +{ + BSP_IO_PORT_00 = 0x0000, ///< IO port 0 + BSP_IO_PORT_01 = 0x0100, ///< IO port 1 + BSP_IO_PORT_02 = 0x0200, ///< IO port 2 + BSP_IO_PORT_03 = 0x0300, ///< IO port 3 + BSP_IO_PORT_04 = 0x0400, ///< IO port 4 + BSP_IO_PORT_05 = 0x0500, ///< IO port 5 + BSP_IO_PORT_06 = 0x0600, ///< IO port 6 + BSP_IO_PORT_07 = 0x0700, ///< IO port 7 + BSP_IO_PORT_08 = 0x0800, ///< IO port 8 + BSP_IO_PORT_09 = 0x0900, ///< IO port 9 + BSP_IO_PORT_10 = 0x0A00, ///< IO port 10 + BSP_IO_PORT_11 = 0x0B00, ///< IO port 11 + BSP_IO_PORT_12 = 0x0C00, ///< IO port 12 + BSP_IO_PORT_13 = 0x0D00, ///< IO port 13 + BSP_IO_PORT_14 = 0x0E00, ///< IO port 14 +} bsp_io_port_t; + +/** Superset list of all possible IO port pins. */ +typedef enum e_bsp_io_port_pin_t +{ + BSP_IO_PORT_00_PIN_00 = 0x0000, ///< IO port 0 pin 0 + BSP_IO_PORT_00_PIN_01 = 0x0001, ///< IO port 0 pin 1 + BSP_IO_PORT_00_PIN_02 = 0x0002, ///< IO port 0 pin 2 + BSP_IO_PORT_00_PIN_03 = 0x0003, ///< IO port 0 pin 3 + BSP_IO_PORT_00_PIN_04 = 0x0004, ///< IO port 0 pin 4 + BSP_IO_PORT_00_PIN_05 = 0x0005, ///< IO port 0 pin 5 + BSP_IO_PORT_00_PIN_06 = 0x0006, ///< IO port 0 pin 6 + BSP_IO_PORT_00_PIN_07 = 0x0007, ///< IO port 0 pin 7 + BSP_IO_PORT_00_PIN_08 = 0x0008, ///< IO port 0 pin 8 + BSP_IO_PORT_00_PIN_09 = 0x0009, ///< IO port 0 pin 9 + BSP_IO_PORT_00_PIN_10 = 0x000A, ///< IO port 0 pin 10 + BSP_IO_PORT_00_PIN_11 = 0x000B, ///< IO port 0 pin 11 + BSP_IO_PORT_00_PIN_12 = 0x000C, ///< IO port 0 pin 12 + BSP_IO_PORT_00_PIN_13 = 0x000D, ///< IO port 0 pin 13 + BSP_IO_PORT_00_PIN_14 = 0x000E, ///< IO port 0 pin 14 + BSP_IO_PORT_00_PIN_15 = 0x000F, ///< IO port 0 pin 15 + + BSP_IO_PORT_01_PIN_00 = 0x0100, ///< IO port 1 pin 0 + BSP_IO_PORT_01_PIN_01 = 0x0101, ///< IO port 1 pin 1 + BSP_IO_PORT_01_PIN_02 = 0x0102, ///< IO port 1 pin 2 + BSP_IO_PORT_01_PIN_03 = 0x0103, ///< IO port 1 pin 3 + BSP_IO_PORT_01_PIN_04 = 0x0104, ///< IO port 1 pin 4 + BSP_IO_PORT_01_PIN_05 = 0x0105, ///< IO port 1 pin 5 + BSP_IO_PORT_01_PIN_06 = 0x0106, ///< IO port 1 pin 6 + BSP_IO_PORT_01_PIN_07 = 0x0107, ///< IO port 1 pin 7 + BSP_IO_PORT_01_PIN_08 = 0x0108, ///< IO port 1 pin 8 + BSP_IO_PORT_01_PIN_09 = 0x0109, ///< IO port 1 pin 9 + BSP_IO_PORT_01_PIN_10 = 0x010A, ///< IO port 1 pin 10 + BSP_IO_PORT_01_PIN_11 = 0x010B, ///< IO port 1 pin 11 + BSP_IO_PORT_01_PIN_12 = 0x010C, ///< IO port 1 pin 12 + BSP_IO_PORT_01_PIN_13 = 0x010D, ///< IO port 1 pin 13 + BSP_IO_PORT_01_PIN_14 = 0x010E, ///< IO port 1 pin 14 + BSP_IO_PORT_01_PIN_15 = 0x010F, ///< IO port 1 pin 15 + + BSP_IO_PORT_02_PIN_00 = 0x0200, ///< IO port 2 pin 0 + BSP_IO_PORT_02_PIN_01 = 0x0201, ///< IO port 2 pin 1 + BSP_IO_PORT_02_PIN_02 = 0x0202, ///< IO port 2 pin 2 + BSP_IO_PORT_02_PIN_03 = 0x0203, ///< IO port 2 pin 3 + BSP_IO_PORT_02_PIN_04 = 0x0204, ///< IO port 2 pin 4 + BSP_IO_PORT_02_PIN_05 = 0x0205, ///< IO port 2 pin 5 + BSP_IO_PORT_02_PIN_06 = 0x0206, ///< IO port 2 pin 6 + BSP_IO_PORT_02_PIN_07 = 0x0207, ///< IO port 2 pin 7 + BSP_IO_PORT_02_PIN_08 = 0x0208, ///< IO port 2 pin 8 + BSP_IO_PORT_02_PIN_09 = 0x0209, ///< IO port 2 pin 9 + BSP_IO_PORT_02_PIN_10 = 0x020A, ///< IO port 2 pin 10 + BSP_IO_PORT_02_PIN_11 = 0x020B, ///< IO port 2 pin 11 + BSP_IO_PORT_02_PIN_12 = 0x020C, ///< IO port 2 pin 12 + BSP_IO_PORT_02_PIN_13 = 0x020D, ///< IO port 2 pin 13 + BSP_IO_PORT_02_PIN_14 = 0x020E, ///< IO port 2 pin 14 + BSP_IO_PORT_02_PIN_15 = 0x020F, ///< IO port 2 pin 15 + + BSP_IO_PORT_03_PIN_00 = 0x0300, ///< IO port 3 pin 0 + BSP_IO_PORT_03_PIN_01 = 0x0301, ///< IO port 3 pin 1 + BSP_IO_PORT_03_PIN_02 = 0x0302, ///< IO port 3 pin 2 + BSP_IO_PORT_03_PIN_03 = 0x0303, ///< IO port 3 pin 3 + BSP_IO_PORT_03_PIN_04 = 0x0304, ///< IO port 3 pin 4 + BSP_IO_PORT_03_PIN_05 = 0x0305, ///< IO port 3 pin 5 + BSP_IO_PORT_03_PIN_06 = 0x0306, ///< IO port 3 pin 6 + BSP_IO_PORT_03_PIN_07 = 0x0307, ///< IO port 3 pin 7 + BSP_IO_PORT_03_PIN_08 = 0x0308, ///< IO port 3 pin 8 + BSP_IO_PORT_03_PIN_09 = 0x0309, ///< IO port 3 pin 9 + BSP_IO_PORT_03_PIN_10 = 0x030A, ///< IO port 3 pin 10 + BSP_IO_PORT_03_PIN_11 = 0x030B, ///< IO port 3 pin 11 + BSP_IO_PORT_03_PIN_12 = 0x030C, ///< IO port 3 pin 12 + BSP_IO_PORT_03_PIN_13 = 0x030D, ///< IO port 3 pin 13 + BSP_IO_PORT_03_PIN_14 = 0x030E, ///< IO port 3 pin 14 + BSP_IO_PORT_03_PIN_15 = 0x030F, ///< IO port 3 pin 15 + + BSP_IO_PORT_04_PIN_00 = 0x0400, ///< IO port 4 pin 0 + BSP_IO_PORT_04_PIN_01 = 0x0401, ///< IO port 4 pin 1 + BSP_IO_PORT_04_PIN_02 = 0x0402, ///< IO port 4 pin 2 + BSP_IO_PORT_04_PIN_03 = 0x0403, ///< IO port 4 pin 3 + BSP_IO_PORT_04_PIN_04 = 0x0404, ///< IO port 4 pin 4 + BSP_IO_PORT_04_PIN_05 = 0x0405, ///< IO port 4 pin 5 + BSP_IO_PORT_04_PIN_06 = 0x0406, ///< IO port 4 pin 6 + BSP_IO_PORT_04_PIN_07 = 0x0407, ///< IO port 4 pin 7 + BSP_IO_PORT_04_PIN_08 = 0x0408, ///< IO port 4 pin 8 + BSP_IO_PORT_04_PIN_09 = 0x0409, ///< IO port 4 pin 9 + BSP_IO_PORT_04_PIN_10 = 0x040A, ///< IO port 4 pin 10 + BSP_IO_PORT_04_PIN_11 = 0x040B, ///< IO port 4 pin 11 + BSP_IO_PORT_04_PIN_12 = 0x040C, ///< IO port 4 pin 12 + BSP_IO_PORT_04_PIN_13 = 0x040D, ///< IO port 4 pin 13 + BSP_IO_PORT_04_PIN_14 = 0x040E, ///< IO port 4 pin 14 + BSP_IO_PORT_04_PIN_15 = 0x040F, ///< IO port 4 pin 15 + + BSP_IO_PORT_05_PIN_00 = 0x0500, ///< IO port 5 pin 0 + BSP_IO_PORT_05_PIN_01 = 0x0501, ///< IO port 5 pin 1 + BSP_IO_PORT_05_PIN_02 = 0x0502, ///< IO port 5 pin 2 + BSP_IO_PORT_05_PIN_03 = 0x0503, ///< IO port 5 pin 3 + BSP_IO_PORT_05_PIN_04 = 0x0504, ///< IO port 5 pin 4 + BSP_IO_PORT_05_PIN_05 = 0x0505, ///< IO port 5 pin 5 + BSP_IO_PORT_05_PIN_06 = 0x0506, ///< IO port 5 pin 6 + BSP_IO_PORT_05_PIN_07 = 0x0507, ///< IO port 5 pin 7 + BSP_IO_PORT_05_PIN_08 = 0x0508, ///< IO port 5 pin 8 + BSP_IO_PORT_05_PIN_09 = 0x0509, ///< IO port 5 pin 9 + BSP_IO_PORT_05_PIN_10 = 0x050A, ///< IO port 5 pin 10 + BSP_IO_PORT_05_PIN_11 = 0x050B, ///< IO port 5 pin 11 + BSP_IO_PORT_05_PIN_12 = 0x050C, ///< IO port 5 pin 12 + BSP_IO_PORT_05_PIN_13 = 0x050D, ///< IO port 5 pin 13 + BSP_IO_PORT_05_PIN_14 = 0x050E, ///< IO port 5 pin 14 + BSP_IO_PORT_05_PIN_15 = 0x050F, ///< IO port 5 pin 15 + + BSP_IO_PORT_06_PIN_00 = 0x0600, ///< IO port 6 pin 0 + BSP_IO_PORT_06_PIN_01 = 0x0601, ///< IO port 6 pin 1 + BSP_IO_PORT_06_PIN_02 = 0x0602, ///< IO port 6 pin 2 + BSP_IO_PORT_06_PIN_03 = 0x0603, ///< IO port 6 pin 3 + BSP_IO_PORT_06_PIN_04 = 0x0604, ///< IO port 6 pin 4 + BSP_IO_PORT_06_PIN_05 = 0x0605, ///< IO port 6 pin 5 + BSP_IO_PORT_06_PIN_06 = 0x0606, ///< IO port 6 pin 6 + BSP_IO_PORT_06_PIN_07 = 0x0607, ///< IO port 6 pin 7 + BSP_IO_PORT_06_PIN_08 = 0x0608, ///< IO port 6 pin 8 + BSP_IO_PORT_06_PIN_09 = 0x0609, ///< IO port 6 pin 9 + BSP_IO_PORT_06_PIN_10 = 0x060A, ///< IO port 6 pin 10 + BSP_IO_PORT_06_PIN_11 = 0x060B, ///< IO port 6 pin 11 + BSP_IO_PORT_06_PIN_12 = 0x060C, ///< IO port 6 pin 12 + BSP_IO_PORT_06_PIN_13 = 0x060D, ///< IO port 6 pin 13 + BSP_IO_PORT_06_PIN_14 = 0x060E, ///< IO port 6 pin 14 + BSP_IO_PORT_06_PIN_15 = 0x060F, ///< IO port 6 pin 15 + + BSP_IO_PORT_07_PIN_00 = 0x0700, ///< IO port 7 pin 0 + BSP_IO_PORT_07_PIN_01 = 0x0701, ///< IO port 7 pin 1 + BSP_IO_PORT_07_PIN_02 = 0x0702, ///< IO port 7 pin 2 + BSP_IO_PORT_07_PIN_03 = 0x0703, ///< IO port 7 pin 3 + BSP_IO_PORT_07_PIN_04 = 0x0704, ///< IO port 7 pin 4 + BSP_IO_PORT_07_PIN_05 = 0x0705, ///< IO port 7 pin 5 + BSP_IO_PORT_07_PIN_06 = 0x0706, ///< IO port 7 pin 6 + BSP_IO_PORT_07_PIN_07 = 0x0707, ///< IO port 7 pin 7 + BSP_IO_PORT_07_PIN_08 = 0x0708, ///< IO port 7 pin 8 + BSP_IO_PORT_07_PIN_09 = 0x0709, ///< IO port 7 pin 9 + BSP_IO_PORT_07_PIN_10 = 0x070A, ///< IO port 7 pin 10 + BSP_IO_PORT_07_PIN_11 = 0x070B, ///< IO port 7 pin 11 + BSP_IO_PORT_07_PIN_12 = 0x070C, ///< IO port 7 pin 12 + BSP_IO_PORT_07_PIN_13 = 0x070D, ///< IO port 7 pin 13 + BSP_IO_PORT_07_PIN_14 = 0x070E, ///< IO port 7 pin 14 + BSP_IO_PORT_07_PIN_15 = 0x070F, ///< IO port 7 pin 15 + + BSP_IO_PORT_08_PIN_00 = 0x0800, ///< IO port 8 pin 0 + BSP_IO_PORT_08_PIN_01 = 0x0801, ///< IO port 8 pin 1 + BSP_IO_PORT_08_PIN_02 = 0x0802, ///< IO port 8 pin 2 + BSP_IO_PORT_08_PIN_03 = 0x0803, ///< IO port 8 pin 3 + BSP_IO_PORT_08_PIN_04 = 0x0804, ///< IO port 8 pin 4 + BSP_IO_PORT_08_PIN_05 = 0x0805, ///< IO port 8 pin 5 + BSP_IO_PORT_08_PIN_06 = 0x0806, ///< IO port 8 pin 6 + BSP_IO_PORT_08_PIN_07 = 0x0807, ///< IO port 8 pin 7 + BSP_IO_PORT_08_PIN_08 = 0x0808, ///< IO port 8 pin 8 + BSP_IO_PORT_08_PIN_09 = 0x0809, ///< IO port 8 pin 9 + BSP_IO_PORT_08_PIN_10 = 0x080A, ///< IO port 8 pin 10 + BSP_IO_PORT_08_PIN_11 = 0x080B, ///< IO port 8 pin 11 + BSP_IO_PORT_08_PIN_12 = 0x080C, ///< IO port 8 pin 12 + BSP_IO_PORT_08_PIN_13 = 0x080D, ///< IO port 8 pin 13 + BSP_IO_PORT_08_PIN_14 = 0x080E, ///< IO port 8 pin 14 + BSP_IO_PORT_08_PIN_15 = 0x080F, ///< IO port 8 pin 15 + + BSP_IO_PORT_09_PIN_00 = 0x0900, ///< IO port 9 pin 0 + BSP_IO_PORT_09_PIN_01 = 0x0901, ///< IO port 9 pin 1 + BSP_IO_PORT_09_PIN_02 = 0x0902, ///< IO port 9 pin 2 + BSP_IO_PORT_09_PIN_03 = 0x0903, ///< IO port 9 pin 3 + BSP_IO_PORT_09_PIN_04 = 0x0904, ///< IO port 9 pin 4 + BSP_IO_PORT_09_PIN_05 = 0x0905, ///< IO port 9 pin 5 + BSP_IO_PORT_09_PIN_06 = 0x0906, ///< IO port 9 pin 6 + BSP_IO_PORT_09_PIN_07 = 0x0907, ///< IO port 9 pin 7 + BSP_IO_PORT_09_PIN_08 = 0x0908, ///< IO port 9 pin 8 + BSP_IO_PORT_09_PIN_09 = 0x0909, ///< IO port 9 pin 9 + BSP_IO_PORT_09_PIN_10 = 0x090A, ///< IO port 9 pin 10 + BSP_IO_PORT_09_PIN_11 = 0x090B, ///< IO port 9 pin 11 + BSP_IO_PORT_09_PIN_12 = 0x090C, ///< IO port 9 pin 12 + BSP_IO_PORT_09_PIN_13 = 0x090D, ///< IO port 9 pin 13 + BSP_IO_PORT_09_PIN_14 = 0x090E, ///< IO port 9 pin 14 + BSP_IO_PORT_09_PIN_15 = 0x090F, ///< IO port 9 pin 15 + + BSP_IO_PORT_10_PIN_00 = 0x0A00, ///< IO port 10 pin 0 + BSP_IO_PORT_10_PIN_01 = 0x0A01, ///< IO port 10 pin 1 + BSP_IO_PORT_10_PIN_02 = 0x0A02, ///< IO port 10 pin 2 + BSP_IO_PORT_10_PIN_03 = 0x0A03, ///< IO port 10 pin 3 + BSP_IO_PORT_10_PIN_04 = 0x0A04, ///< IO port 10 pin 4 + BSP_IO_PORT_10_PIN_05 = 0x0A05, ///< IO port 10 pin 5 + BSP_IO_PORT_10_PIN_06 = 0x0A06, ///< IO port 10 pin 6 + BSP_IO_PORT_10_PIN_07 = 0x0A07, ///< IO port 10 pin 7 + BSP_IO_PORT_10_PIN_08 = 0x0A08, ///< IO port 10 pin 8 + BSP_IO_PORT_10_PIN_09 = 0x0A09, ///< IO port 10 pin 9 + BSP_IO_PORT_10_PIN_10 = 0x0A0A, ///< IO port 10 pin 10 + BSP_IO_PORT_10_PIN_11 = 0x0A0B, ///< IO port 10 pin 11 + BSP_IO_PORT_10_PIN_12 = 0x0A0C, ///< IO port 10 pin 12 + BSP_IO_PORT_10_PIN_13 = 0x0A0D, ///< IO port 10 pin 13 + BSP_IO_PORT_10_PIN_14 = 0x0A0E, ///< IO port 10 pin 14 + BSP_IO_PORT_10_PIN_15 = 0x0A0F, ///< IO port 10 pin 15 + + BSP_IO_PORT_11_PIN_00 = 0x0B00, ///< IO port 11 pin 0 + BSP_IO_PORT_11_PIN_01 = 0x0B01, ///< IO port 11 pin 1 + BSP_IO_PORT_11_PIN_02 = 0x0B02, ///< IO port 11 pin 2 + BSP_IO_PORT_11_PIN_03 = 0x0B03, ///< IO port 11 pin 3 + BSP_IO_PORT_11_PIN_04 = 0x0B04, ///< IO port 11 pin 4 + BSP_IO_PORT_11_PIN_05 = 0x0B05, ///< IO port 11 pin 5 + BSP_IO_PORT_11_PIN_06 = 0x0B06, ///< IO port 11 pin 6 + BSP_IO_PORT_11_PIN_07 = 0x0B07, ///< IO port 11 pin 7 + BSP_IO_PORT_11_PIN_08 = 0x0B08, ///< IO port 11 pin 8 + BSP_IO_PORT_11_PIN_09 = 0x0B09, ///< IO port 11 pin 9 + BSP_IO_PORT_11_PIN_10 = 0x0B0A, ///< IO port 11 pin 10 + BSP_IO_PORT_11_PIN_11 = 0x0B0B, ///< IO port 11 pin 11 + BSP_IO_PORT_11_PIN_12 = 0x0B0C, ///< IO port 11 pin 12 + BSP_IO_PORT_11_PIN_13 = 0x0B0D, ///< IO port 11 pin 13 + BSP_IO_PORT_11_PIN_14 = 0x0B0E, ///< IO port 11 pin 14 + BSP_IO_PORT_11_PIN_15 = 0x0B0F, ///< IO port 11 pin 15 + + BSP_IO_PORT_12_PIN_00 = 0x0C00, ///< IO port 12 pin 0 + BSP_IO_PORT_12_PIN_01 = 0x0C01, ///< IO port 12 pin 1 + BSP_IO_PORT_12_PIN_02 = 0x0C02, ///< IO port 12 pin 2 + BSP_IO_PORT_12_PIN_03 = 0x0C03, ///< IO port 12 pin 3 + BSP_IO_PORT_12_PIN_04 = 0x0C04, ///< IO port 12 pin 4 + BSP_IO_PORT_12_PIN_05 = 0x0C05, ///< IO port 12 pin 5 + BSP_IO_PORT_12_PIN_06 = 0x0C06, ///< IO port 12 pin 6 + BSP_IO_PORT_12_PIN_07 = 0x0C07, ///< IO port 12 pin 7 + BSP_IO_PORT_12_PIN_08 = 0x0C08, ///< IO port 12 pin 8 + BSP_IO_PORT_12_PIN_09 = 0x0C09, ///< IO port 12 pin 9 + BSP_IO_PORT_12_PIN_10 = 0x0C0A, ///< IO port 12 pin 10 + BSP_IO_PORT_12_PIN_11 = 0x0C0B, ///< IO port 12 pin 11 + BSP_IO_PORT_12_PIN_12 = 0x0C0C, ///< IO port 12 pin 12 + BSP_IO_PORT_12_PIN_13 = 0x0C0D, ///< IO port 12 pin 13 + BSP_IO_PORT_12_PIN_14 = 0x0C0E, ///< IO port 12 pin 14 + BSP_IO_PORT_12_PIN_15 = 0x0C0F, ///< IO port 12 pin 15 + + BSP_IO_PORT_13_PIN_00 = 0x0D00, ///< IO port 13 pin 0 + BSP_IO_PORT_13_PIN_01 = 0x0D01, ///< IO port 13 pin 1 + BSP_IO_PORT_13_PIN_02 = 0x0D02, ///< IO port 13 pin 2 + BSP_IO_PORT_13_PIN_03 = 0x0D03, ///< IO port 13 pin 3 + BSP_IO_PORT_13_PIN_04 = 0x0D04, ///< IO port 13 pin 4 + BSP_IO_PORT_13_PIN_05 = 0x0D05, ///< IO port 13 pin 5 + BSP_IO_PORT_13_PIN_06 = 0x0D06, ///< IO port 13 pin 6 + BSP_IO_PORT_13_PIN_07 = 0x0D07, ///< IO port 13 pin 7 + BSP_IO_PORT_13_PIN_08 = 0x0D08, ///< IO port 13 pin 8 + BSP_IO_PORT_13_PIN_09 = 0x0D09, ///< IO port 13 pin 9 + BSP_IO_PORT_13_PIN_10 = 0x0D0A, ///< IO port 13 pin 10 + BSP_IO_PORT_13_PIN_11 = 0x0D0B, ///< IO port 13 pin 11 + BSP_IO_PORT_13_PIN_12 = 0x0D0C, ///< IO port 13 pin 12 + BSP_IO_PORT_13_PIN_13 = 0x0D0D, ///< IO port 13 pin 13 + BSP_IO_PORT_13_PIN_14 = 0x0D0E, ///< IO port 13 pin 14 + BSP_IO_PORT_13_PIN_15 = 0x0D0F, ///< IO port 13 pin 15 + + BSP_IO_PORT_14_PIN_00 = 0x0E00, ///< IO port 14 pin 0 + BSP_IO_PORT_14_PIN_01 = 0x0E01, ///< IO port 14 pin 1 + BSP_IO_PORT_14_PIN_02 = 0x0E02, ///< IO port 14 pin 2 + BSP_IO_PORT_14_PIN_03 = 0x0E03, ///< IO port 14 pin 3 + BSP_IO_PORT_14_PIN_04 = 0x0E04, ///< IO port 14 pin 4 + BSP_IO_PORT_14_PIN_05 = 0x0E05, ///< IO port 14 pin 5 + BSP_IO_PORT_14_PIN_06 = 0x0E06, ///< IO port 14 pin 6 + BSP_IO_PORT_14_PIN_07 = 0x0E07, ///< IO port 14 pin 7 + BSP_IO_PORT_14_PIN_08 = 0x0E08, ///< IO port 14 pin 8 + BSP_IO_PORT_14_PIN_09 = 0x0E09, ///< IO port 14 pin 9 + BSP_IO_PORT_14_PIN_10 = 0x0E0A, ///< IO port 14 pin 10 + BSP_IO_PORT_14_PIN_11 = 0x0E0B, ///< IO port 14 pin 11 + BSP_IO_PORT_14_PIN_12 = 0x0E0C, ///< IO port 14 pin 12 + BSP_IO_PORT_14_PIN_13 = 0x0E0D, ///< IO port 14 pin 13 + BSP_IO_PORT_14_PIN_14 = 0x0E0E, ///< IO port 14 pin 14 + BSP_IO_PORT_14_PIN_15 = 0x0E0F, ///< IO port 14 pin 15 +} bsp_io_port_pin_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +extern volatile uint32_t g_protect_pfswe_counter; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Read the current input level of the pin. + * + * @param[in] pin The pin + * + * @retval Current input level + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_PinRead (bsp_io_port_pin_t pin) +{ + /* Read pin level. */ + return R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS_b.PIDR; +} + +/*******************************************************************************************************************//** + * Set a pin to output and set the output level to the level provided. If PFS protection is enabled, disable PFS + * protection using R_BSP_PinAccessEnable() before calling this function. + * + * @param[in] pin The pin + * @param[in] level The level + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinWrite (bsp_io_port_pin_t pin, bsp_io_level_t level) +{ + /* Clear PMR, ASEL, ISEL and PODR bits. */ + uint32_t pfs_bits = R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS; + pfs_bits &= BSP_IO_PRV_PIN_WRITE_MASK; + + /* Set output level and pin direction to output. */ + uint32_t lvl = ((uint32_t) level | pfs_bits); + R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS = (BSP_IO_PFS_PDR_OUTPUT | lvl); +} + +/*******************************************************************************************************************//** + * Configure a pin. If PFS protection is enabled, disable PFS protection using R_BSP_PinAccessEnable() before calling + * this function. + * + * @param[in] pin The pin + * @param[in] cfg Configuration for the pin (PmnPFS register setting) + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinCfg (bsp_io_port_pin_t pin, uint32_t cfg) +{ + /* Configure a pin. */ + R_PFS->PORT[pin >> 8].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS = cfg; +} + +/*******************************************************************************************************************//** + * Enable access to the PFS registers. Uses a reference counter to protect against interrupts that could occur + * via multiple threads or an ISR re-entering this code. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinAccessEnable (void) +{ +#if BSP_CFG_PFS_PROTECT + + /** Get the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /** If this is first entry then allow writing of PFS. */ + if (0 == g_protect_pfswe_counter) + { + #if BSP_TZ_SECURE_BUILD || (BSP_FEATURE_TZ_VERSION == 2 && FSP_PRIV_TZ_USE_SECURE_REGS) + R_PMISC->PWPRS = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPRS = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #else + R_PMISC->PWPR = 0; ///< Clear BOWI bit - writing to PFSWE bit enabled + R_PMISC->PWPR = 1U << BSP_IO_PWPR_PFSWE_OFFSET; ///< Set PFSWE bit - writing to PFS register enabled + #endif + } + + /** Increment the protect counter */ + g_protect_pfswe_counter++; + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +#endif +} + +/*******************************************************************************************************************//** + * Disable access to the PFS registers. Uses a reference counter to protect against interrupts that could occur via + * multiple threads or an ISR re-entering this code. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinAccessDisable (void) +{ +#if BSP_CFG_PFS_PROTECT + + /** Get the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /** Is it safe to disable PFS register? */ + if (0 != g_protect_pfswe_counter) + { + /* Decrement the protect counter */ + g_protect_pfswe_counter--; + } + + /** Is it safe to disable writing of PFS? */ + if (0 == g_protect_pfswe_counter) + { + #if BSP_TZ_SECURE_BUILD || (BSP_FEATURE_TZ_VERSION == 2 && FSP_PRIV_TZ_USE_SECURE_REGS) + R_PMISC->PWPRS = 0; ///< Clear PFSWE bit - writing to PFSWE bit enabled + R_PMISC->PWPRS = 1U << BSP_IO_PWPR_B0WI_OFFSET; ///< Set BOWI bit - writing to PFS register enabled + #else + R_PMISC->PWPR = 0; ///< Clear PFSWE bit - writing to PFS register disabled + R_PMISC->PWPR = 1U << BSP_IO_PWPR_B0WI_OFFSET; ///< Set BOWI bit - writing to PFSWE bit disabled + #endif + } + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +#endif +} + +/** @} (end addtogroup BSP_IO) */ + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c new file mode 100644 index 0000000000..a45899fbad --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.c @@ -0,0 +1,123 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/** ELC event definitions. */ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_IRQ_UINT32_MAX (0xFFFFFFFFU) +#define BSP_PRV_BITS_PER_WORD (32) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/* This table is used to store the context in the ISR. */ +void * gp_renesas_isr_context[BSP_ICU_VECTOR_MAX_ENTRIES]; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +const bsp_interrupt_event_t g_interrupt_event_link_select[BSP_ICU_VECTOR_MAX_ENTRIES] BSP_WEAK_REFERENCE = +{ + (bsp_interrupt_event_t) 0 +}; + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * Using the vector table information section that has been built by the linker and placed into ROM in the + * .vector_info. section, this function will initialize the ICU so that configured ELC events will trigger interrupts + * in the NVIC. + * + **********************************************************************************************************************/ +void bsp_irq_cfg (void) +{ +#if FSP_PRIV_TZ_USE_SECURE_REGS + #if (BSP_FEATURE_TZ_VERSION == 2 && BSP_TZ_SECURE_BUILD == 0) + + /* On MCUs with this implementation of TrustZone, IRQ security attribution is set to secure by default. + * This means that flat projects do not need to set security attribution to secure. */ + #else + + /* Unprotect security registers. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + #if !BSP_TZ_SECURE_BUILD + + /* Set the DMAC channels to secure access. */ + #ifdef BSP_TZ_CFG_ICUSARC + R_CPSCU->ICUSARC = ~R_CPSCU_ICUSARC_SADMACn_Msk; + #endif + #endif + + /* Place all vectors in non-secure state unless they are used in the secure project. */ + uint32_t interrupt_security_state[BSP_ICU_VECTOR_MAX_ENTRIES / BSP_PRV_BITS_PER_WORD]; + memset(&interrupt_security_state, UINT8_MAX, sizeof(interrupt_security_state)); + + for (uint32_t i = 0U; i < BSP_ICU_VECTOR_MAX_ENTRIES; i++) + { + if (0U != g_interrupt_event_link_select[i]) + { + /* This is a secure vector. Clear the associated bit. */ + uint32_t index = i / BSP_PRV_BITS_PER_WORD; + uint32_t bit = i % BSP_PRV_BITS_PER_WORD; + interrupt_security_state[index] &= ~(1U << bit); + } + } + + /* The Secure Attribute managed within the ARM CPU NVIC must match the security attribution of IELSEn + * (Reference section 13.2.9 in the RA6M4 manual R01UH0890EJ0050). */ + uint32_t volatile * p_icusarg = &R_CPSCU->ICUSARG; + for (uint32_t i = 0U; i < BSP_ICU_VECTOR_MAX_ENTRIES / BSP_PRV_BITS_PER_WORD; i++) + { + p_icusarg[i] = interrupt_security_state[i]; + NVIC->ITNS[i] = interrupt_security_state[i]; + } + + /* Protect security registers. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); + #endif +#endif + + for (uint32_t i = 0U; i < (BSP_ICU_VECTOR_MAX_ENTRIES - BSP_FEATURE_ICU_FIXED_IELSR_COUNT); i++) + { + if (0U != g_interrupt_event_link_select[i]) + { + R_ICU->IELSR[i] = (uint32_t) g_interrupt_event_link_select[i]; + } + } +} diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h new file mode 100644 index 0000000000..296f78cc16 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_irq.h @@ -0,0 +1,229 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU) */ + +#ifndef BSP_IRQ_H +#define BSP_IRQ_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_ICU_VECTOR_MAX_ENTRIES (BSP_VECTOR_TABLE_MAX_ENTRIES - BSP_CORTEX_VECTOR_TABLE_ENTRIES) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +extern void * gp_renesas_isr_context[BSP_ICU_VECTOR_MAX_ENTRIES]; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @brief Sets the ISR context associated with the requested IRQ. + * + * @param[in] irq IRQ number (parameter checking must ensure the IRQ number is valid before calling this + * function. + * @param[in] p_context ISR context for IRQ. + **********************************************************************************************************************/ +__STATIC_INLINE void R_FSP_IsrContextSet (IRQn_Type const irq, void * p_context) +{ + /* This provides access to the ISR context array defined in bsp_irq.c. This is an inline function instead of + * being part of bsp_irq.c for performance considerations because it is used in interrupt service routines. */ + gp_renesas_isr_context[irq] = p_context; +} + +/*******************************************************************************************************************//** + * Clear the interrupt status flag (IR) for a given interrupt. When an interrupt is triggered the IR bit + * is set. If it is not cleared in the ISR then the interrupt will trigger again immediately. + * + * @param[in] irq Interrupt for which to clear the IR bit. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqStatusClear (IRQn_Type irq) +{ + /* Clear the IR bit in the selected IELSR register. */ + R_ICU->IELSR_b[irq].IR = 0U; + + /* Read back the IELSR register to ensure that the IR bit is cleared. + * See section "13.5.1 Operations During an Interrupt" in the RA8M1 manual R01UH0994EJ0100. */ + FSP_REGISTER_READ(R_ICU->IELSR[irq]); +} + +/*******************************************************************************************************************//** + * Clear the interrupt status flag (IR) for a given interrupt and clear the NVIC pending interrupt. + * + * @param[in] irq Interrupt for which to clear the IR bit. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqClearPending (IRQn_Type irq) +{ + /* Clear the IR bit in the selected IELSR register. */ + R_BSP_IrqStatusClear(irq); + + /* Flush memory transactions to ensure that the IR bit is cleared before clearing the pending bit in the NVIC. */ + __DMB(); + + /* The following statement is used in place of NVIC_ClearPendingIRQ to avoid including a branch for system + * exceptions every time an interrupt is cleared in the NVIC. */ + uint32_t _irq = (uint32_t) irq; + NVIC->ICPR[(((uint32_t) irq) >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context. + * + * @param[in] irq The IRQ to configure. + * @param[in] priority NVIC priority of the interrupt + * @param[in] p_context The interrupt context is a pointer to data required in the ISR. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqCfg (IRQn_Type const irq, uint32_t priority, void * p_context) +{ + /* The following statement is used in place of NVIC_SetPriority to avoid including a branch for system exceptions + * every time a priority is configured in the NVIC. */ +#if (4U == __CORTEX_M) + NVIC->IP[((uint32_t) irq)] = (uint8_t) ((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t) UINT8_MAX); +#elif (33 == __CORTEX_M) + NVIC->IPR[((uint32_t) irq)] = (uint8_t) ((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t) UINT8_MAX); +#elif (23 == __CORTEX_M) + NVIC->IPR[_IP_IDX(irq)] = ((uint32_t) (NVIC->IPR[_IP_IDX(irq)] & ~((uint32_t) UINT8_MAX << _BIT_SHIFT(irq))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t) UINT8_MAX) << _BIT_SHIFT(irq))); +#else + NVIC_SetPriority(irq, priority); +#endif + + /* Store the context. The context is recovered in the ISR. */ + R_FSP_IsrContextSet(irq, p_context); +} + +/*******************************************************************************************************************//** + * Enable the IRQ in the NVIC (Without clearing the pending bit). + * + * @param[in] irq The IRQ to enable. Note that the enums listed for IRQn_Type are only those for the Cortex + * Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqEnableNoClear (IRQn_Type const irq) +{ + /* The following statement is used in place of NVIC_EnableIRQ to avoid including a branch for system exceptions + * every time an interrupt is enabled in the NVIC. */ + uint32_t _irq = (uint32_t) irq; + + __COMPILER_BARRIER(); + NVIC->ISER[(_irq >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); + __COMPILER_BARRIER(); +} + +/*******************************************************************************************************************//** + * Clears pending interrupts in both ICU and NVIC, then enables the interrupt. + * + * @param[in] irq Interrupt for which to clear the IR bit and enable in the NVIC. Note that the enums listed + * for IRQn_Type are only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqEnable (IRQn_Type const irq) +{ + /* Clear pending interrupts in the ICU and NVIC. */ + R_BSP_IrqClearPending(irq); + + /* Enable the IRQ in the NVIC. */ + R_BSP_IrqEnableNoClear(irq); +} + +/*******************************************************************************************************************//** + * Disables interrupts in the NVIC. + * + * @param[in] irq The IRQ to disable in the NVIC. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqDisable (IRQn_Type const irq) +{ + /* The following statements is used in place of NVIC_DisableIRQ to avoid including a branch for system + * exceptions every time an interrupt is cleared in the NVIC. */ + uint32_t _irq = (uint32_t) irq; + NVIC->ICER[(((uint32_t) irq) >> 5UL)] = (uint32_t) (1UL << (_irq & 0x1FUL)); + + __DSB(); + __ISB(); +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context, clears pending interrupts, then enables the interrupt. + * + * @param[in] irq Interrupt number. + * @param[in] priority NVIC priority of the interrupt + * @param[in] p_context The interrupt context is a pointer to data required in the ISR. + * + * @warning Do not call this function for system exceptions where the IRQn_Type value is < 0. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqCfgEnable (IRQn_Type const irq, uint32_t priority, void * p_context) +{ + R_BSP_IrqCfg(irq, priority, p_context); + R_BSP_IrqEnable(irq); +} + +/*******************************************************************************************************************//** + * @brief Finds the ISR context associated with the requested IRQ. + * + * @param[in] irq IRQ number (parameter checking must ensure the IRQ number is valid before calling this + * function. + * @return ISR context for IRQ. + **********************************************************************************************************************/ +__STATIC_INLINE void * R_FSP_IsrContextGet (IRQn_Type const irq) +{ + /* This provides access to the ISR context array defined in bsp_irq.c. This is an inline function instead of + * being part of bsp_irq.c for performance considerations because it is used in interrupt service routines. */ + return gp_renesas_isr_context[irq]; +} + +/*******************************************************************************************************************//** + * @internal + * @addtogroup BSP_MCU_PRV Internal BSP Documentation + * @ingroup RENESAS_INTERNAL + * @{ + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_irq_cfg(void); // Used internally by BSP + +/** @} (end addtogroup BSP_MCU_PRV) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h new file mode 100644 index 0000000000..26a63083da --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_mcu_api.h @@ -0,0 +1,68 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_MCU_API_H +#define BSP_MCU_API_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +typedef struct st_bsp_event_info +{ + IRQn_Type irq; + elc_event_t event; +} bsp_event_info_t; + +typedef enum e_bsp_clocks_octaclk_div +{ + BSP_CLOCKS_OCTACLK_DIV_1 = 0, ///< Divide OCTA source clock by 1 + BSP_CLOCKS_OCTACLK_DIV_2, ///< Divide OCTA source clock by 2 + BSP_CLOCKS_OCTACLK_DIV_4, ///< Divide OCTA source clock by 4 + BSP_CLOCKS_OCTACLK_DIV_6, ///< Divide OCTA source clock by 6 + BSP_CLOCKS_OCTACLK_DIV_8 ///< Divide OCTA source clock by 8 +} bsp_clocks_octaclk_div_t; + +typedef enum e_bsp_clocks_source +{ + BSP_CLOCKS_CLOCK_HOCO = 0, ///< The high speed on chip oscillator. + BSP_CLOCKS_CLOCK_MOCO, ///< The middle speed on chip oscillator. + BSP_CLOCKS_CLOCK_LOCO, ///< The low speed on chip oscillator. + BSP_CLOCKS_CLOCK_MAIN_OSC, ///< The main oscillator. + BSP_CLOCKS_CLOCK_SUBCLOCK, ///< The subclock oscillator. + BSP_CLOCKS_CLOCK_PLL, ///< The PLL oscillator. + BSP_CLOCKS_CLOCK_PLL2, ///< The PLL2 oscillator. +} bsp_clocks_source_t; + +typedef struct st_bsp_octaclk_settings +{ + bsp_clocks_source_t source_clock; ///< OCTACLK source clock + bsp_clocks_octaclk_div_t divider; ///< OCTACLK divider +} bsp_octaclk_settings_t; + +void R_BSP_RegisterProtectEnable(bsp_reg_protect_t regs_to_protect); +void R_BSP_RegisterProtectDisable(bsp_reg_protect_t regs_to_unprotect); +fsp_err_t R_BSP_GroupIrqWrite(bsp_grp_irq_t irq, void (* p_callback)(bsp_grp_irq_t irq)); +void R_BSP_OctaclkUpdate(bsp_octaclk_settings_t * p_octaclk_setting); +void R_BSP_SoftwareDelay(uint32_t delay, bsp_delay_units_t units); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h new file mode 100644 index 0000000000..b3501b654c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_module_stop.h @@ -0,0 +1,241 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_MODULE_H +#define BSP_MODULE_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#if __has_include("internal/bsp_module_stop_internal.h") + #include "internal/bsp_module_stop_internal.h" +#endif + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE + +/* MSTPCRA is located in R_MSTP for Star devices. */ + #define R_BSP_MSTPCRA (R_MSTP->MSTPCRA) +#else + +/* MSTPCRA is located in R_SYSTEM for W1D and Peaks devices. */ + #define R_BSP_MSTPCRA (R_SYSTEM->MSTPCRA) +#endif + +/*******************************************************************************************************************//** + * Cancels the module stop state. + * + * @param ip fsp_ip_t enum value for the module to be stopped + * @param channel The channel. Use channel 0 for modules without channels. + **********************************************************************************************************************/ +#if BSP_CFG_MSTP_CHANGE_DELAY_ENABLE + #define R_BSP_MODULE_START(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) &= ~BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, \ + BSP_DELAY_UNITS_MICROSECONDS); \ + FSP_CRITICAL_SECTION_EXIT;} +#else + #define R_BSP_MODULE_START(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) &= ~BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + FSP_CRITICAL_SECTION_EXIT;} +#endif + +/*******************************************************************************************************************//** + * Enables the module stop state. + * + * @param ip fsp_ip_t enum value for the module to be stopped + * @param channel The channel. Use channel 0 for modules without channels. + **********************************************************************************************************************/ +#if BSP_CFG_MSTP_CHANGE_DELAY_ENABLE + #define R_BSP_MODULE_STOP(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) |= BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + R_BSP_SoftwareDelay(BSP_CFG_CLOCK_SETTLING_DELAY_US, \ + BSP_DELAY_UNITS_MICROSECONDS); \ + FSP_CRITICAL_SECTION_EXIT;} +#else + #define R_BSP_MODULE_STOP(ip, channel) {FSP_CRITICAL_SECTION_DEFINE; \ + FSP_CRITICAL_SECTION_ENTER; \ + BSP_MSTP_REG_ ## ip(channel) |= BSP_MSTP_BIT_ ## ip(channel); \ + FSP_REGISTER_READ(BSP_MSTP_REG_ ## ip(channel)); \ + FSP_CRITICAL_SECTION_EXIT;} +#endif + +/** @} (end addtogroup BSP_MCU) */ + +#if 0U == BSP_FEATURE_BSP_MSTP_HAS_MSTPCRE + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) ((BSP_FEATURE_BSP_MSTP_GPT_MSTPD5_MAX_CH >= \ + channel) ? (1U << 5U) : (1U << 6U)); + + #ifndef BSP_MSTP_REG_FSP_IP_AGT + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #endif + #ifndef BSP_MSTP_BIT_FSP_IP_AGT + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (3U - channel)); + #endif + + #define BSP_MSTP_REG_FSP_IP_POEG(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_POEG(channel) (1U << (14U)); +#else + #if (2U == BSP_FEATURE_ELC_VERSION) + #if BSP_MCU_GROUP_RA6T2 + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) (1U << 31); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (3U - channel)); + #else + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) (1U << (31 - channel)); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) (1U << (5U - channel)); + #endif + #define BSP_MSTP_REG_FSP_IP_KEY(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_KEY(channel) (1U << 4U); + #define BSP_MSTP_REG_FSP_IP_POEG(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_POEG(channel) (1U << (14U - channel)); + #define BSP_MSTP_REG_FSP_IP_ULPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_ULPT(channel) (1U << (9U - channel)); + #else + #define BSP_MSTP_REG_FSP_IP_GPT(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_GPT(channel) (1U << (31 - channel)); + #define BSP_MSTP_REG_FSP_IP_AGT(channel) *((3U >= channel) ? &R_MSTP->MSTPCRD : &R_MSTP->MSTPCRE) + #define BSP_MSTP_BIT_FSP_IP_AGT(channel) ((3U >= \ + channel) ? (1U << (3U - channel)) : (1U << (15U - (channel - 4U)))); + #define BSP_MSTP_REG_FSP_IP_KEY(channel) R_MSTP->MSTPCRE + #define BSP_MSTP_BIT_FSP_IP_KEY(channel) (1U << (4U - channel)); + #define BSP_MSTP_REG_FSP_IP_POEG(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_POEG(channel) (1U << (14U - channel)); + #endif +#endif + +#define BSP_MSTP_REG_FSP_IP_DMAC(channel) R_BSP_MSTPCRA +#define BSP_MSTP_BIT_FSP_IP_DMAC(channel) (1U << (22U)); +#define BSP_MSTP_REG_FSP_IP_DTC(channel) R_BSP_MSTPCRA +#define BSP_MSTP_BIT_FSP_IP_DTC(channel) (1U << (22U)); +#define BSP_MSTP_REG_FSP_IP_CAN(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_CAN(channel) (1U << (2U - channel)); +#define BSP_MSTP_REG_FSP_IP_CEC(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_CEC(channel) (1U << (3U)); +#define BSP_MSTP_REG_FSP_IP_I3C(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_I3C(channel) (1U << (BSP_FEATURE_I3C_MSTP_OFFSET - channel)); +#define BSP_MSTP_REG_FSP_IP_IRDA(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_IRDA(channel) (1U << (5U - channel)); +#define BSP_MSTP_REG_FSP_IP_QSPI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_QSPI(channel) (1U << (6U - channel)); +#define BSP_MSTP_REG_FSP_IP_IIC(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_IIC(channel) (1U << (9U - channel)); +#define BSP_MSTP_REG_FSP_IP_USBFS(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_USBFS(channel) (1U << (11U - channel)); +#define BSP_MSTP_REG_FSP_IP_USBHS(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_USBHS(channel) (1U << (12U - channel)); +#define BSP_MSTP_REG_FSP_IP_EPTPC(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_EPTPC(channel) (1U << (13U - channel)); +#define BSP_MSTP_REG_FSP_IP_ETHER(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_ETHER(channel) (1U << (15U - channel)); +#define BSP_MSTP_REG_FSP_IP_OSPI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_OSPI(channel) (1U << (16U - channel)); +#define BSP_MSTP_REG_FSP_IP_SPI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_SPI(channel) (1U << (19U - channel)); +#define BSP_MSTP_REG_FSP_IP_SCI(channel) R_MSTP->MSTPCRB +#define BSP_MSTP_BIT_FSP_IP_SCI(channel) (1U << (31U - channel)); +#define BSP_MSTP_REG_FSP_IP_CAC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CAC(channel) (1U << (0U - channel)); +#define BSP_MSTP_REG_FSP_IP_CRC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CRC(channel) (1U << (1U - channel)); +#define BSP_MSTP_REG_FSP_IP_PDC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_PDC(channel) (1U << (2U - channel)); +#define BSP_MSTP_REG_FSP_IP_CTSU(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CTSU(channel) (1U << (3U - channel)); +#define BSP_MSTP_REG_FSP_IP_SLCDC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SLCDC(channel) (1U << (4U - channel)); +#define BSP_MSTP_REG_FSP_IP_GLCDC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_GLCDC(channel) (1U << (4U - channel)); +#define BSP_MSTP_REG_FSP_IP_JPEG(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_JPEG(channel) (1U << (5U - channel)); +#define BSP_MSTP_REG_FSP_IP_DRW(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_DRW(channel) (1U << (6U - channel)); +#define BSP_MSTP_REG_FSP_IP_SSI(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SSI(channel) (1U << (8U - channel)); +#define BSP_MSTP_REG_FSP_IP_SRC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SRC(channel) (1U << (9U - channel)); +#define BSP_MSTP_REG_FSP_IP_MIPI_DSI(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_MIPI_DSI(channel) (1U << (10U - channel)); +#define BSP_MSTP_REG_FSP_IP_SDHIMMC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SDHIMMC(channel) (1U << (12U - channel)); +#define BSP_MSTP_REG_FSP_IP_DOC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_DOC(channel) (1U << (13U - channel)); +#define BSP_MSTP_REG_FSP_IP_ELC(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_ELC(channel) (1U << (14U - channel)); +#define BSP_MSTP_REG_FSP_IP_CEU(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CEU(channel) (1U << (16U - channel)); +#define BSP_MSTP_REG_FSP_IP_TFU(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_TFU(channel) (1U << (20U - channel)); +#define BSP_MSTP_REG_FSP_IP_IIRFA(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_IIRFA(channel) (1U << (21U - channel)); +#define BSP_MSTP_REG_FSP_IP_CANFD(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_CANFD(channel) (1U << (27U - channel)); +#define BSP_MSTP_REG_FSP_IP_TRNG(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_TRNG(channel) (1U << (28U - channel)); +#define BSP_MSTP_REG_FSP_IP_SCE(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_SCE(channel) (1U << (31U - channel)); +#define BSP_MSTP_REG_FSP_IP_AES(channel) R_MSTP->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_AES(channel) (1U << (31U - channel)); +#define BSP_MSTP_REG_FSP_IP_ADC(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_ADC(channel) (1U << (16U - channel)); +#define BSP_MSTP_REG_FSP_IP_SDADC(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_SDADC(channel) (1U << (17U - channel)); +#if (BSP_FEATURE_DAC_MAX_CHANNELS > 2U) + #define BSP_MSTP_REG_FSP_IP_DAC(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_DAC(channel) (1U << (20U - channel)); +#else + #define BSP_MSTP_REG_FSP_IP_DAC8(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_DAC8(channel) (1U << (19U)); + #define BSP_MSTP_REG_FSP_IP_DAC(channel) R_MSTP->MSTPCRD + #define BSP_MSTP_BIT_FSP_IP_DAC(channel) (1U << (20U)); +#endif +#define BSP_MSTP_REG_FSP_IP_TSN(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_TSN(channel) (1U << (22U - channel)); +#define BSP_MSTP_REG_FSP_IP_ACMPHS(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_ACMPHS(channel) (1U << (28U - channel)); +#define BSP_MSTP_REG_FSP_IP_ACMPLP(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_ACMPLP(channel) (1U << 29U); +#define BSP_MSTP_REG_FSP_IP_OPAMP(channel) R_MSTP->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_OPAMP(channel) (1U << (31U - channel)); +#if (1U == BSP_FEATURE_CGC_HAS_OSTDCSE) + #define BSP_MSTP_REG_FSP_IP_SOSTD(channel) R_BSP_MSTPCRA + #define BSP_MSTP_BIT_FSP_IP_SOSTD(channel) (1U << (16U)); + #define BSP_MSTP_REG_FSP_IP_MOSTD(channel) R_BSP_MSTPCRA + #define BSP_MSTP_BIT_FSP_IP_MOSTD(channel) (1U << (17U)); +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c new file mode 100644 index 0000000000..65ba58879a --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.c @@ -0,0 +1,133 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** Used for holding reference counters for protection bits. */ +volatile uint16_t g_protect_counters[4] BSP_SECTION_EARLY_INIT; + +/** Masks for setting or clearing the PRCR register. Use -1 for size because PWPR in MPC is used differently. */ +static const uint16_t g_prcr_masks[] = +{ + 0x0001U, /* PRC0. */ + 0x0002U, /* PRC1. */ + 0x0008U, /* PRC3. */ + 0x0010U, /* PRC4. */ +}; + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Enable register protection. Registers that are protected cannot be written to. Register protection is + * enabled by using the Protect Register (PRCR) and the MPC's Write-Protect Register (PWPR). + * + * @param[in] regs_to_protect Registers which have write protection enabled. + **********************************************************************************************************************/ +void R_BSP_RegisterProtectEnable (bsp_reg_protect_t regs_to_protect) +{ + /** Get/save the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /* Is it safe to disable write access? */ + if (0U != g_protect_counters[regs_to_protect]) + { + /* Decrement the protect counter */ + g_protect_counters[regs_to_protect]--; + } + + /* Is it safe to disable write access? */ + if (0U == g_protect_counters[regs_to_protect]) + { + /** Enable protection using PRCR register. + * + * When writing to the PRCR register the upper 8-bits must be the correct key. Set lower bits to 0 to + * disable writes. */ +#if BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + R_SYSTEM->PRCR_NS = ((R_SYSTEM->PRCR_NS | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); +#else + R_SYSTEM->PRCR = ((R_SYSTEM->PRCR | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); +#endif + } + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +} + +/*******************************************************************************************************************//** + * Disable register protection. Registers that are protected cannot be written to. Register protection is + * disabled by using the Protect Register (PRCR) and the MPC's Write-Protect Register (PWPR). + * + * @param[in] regs_to_unprotect Registers which have write protection disabled. + **********************************************************************************************************************/ +void R_BSP_RegisterProtectDisable (bsp_reg_protect_t regs_to_unprotect) +{ + /** Get/save the current state of interrupts */ + FSP_CRITICAL_SECTION_DEFINE; + FSP_CRITICAL_SECTION_ENTER; + + /* If this is first entry then disable protection. */ + if (0U == g_protect_counters[regs_to_unprotect]) + { + /** Disable protection using PRCR register. + * + * When writing to the PRCR register the upper 8-bits must be the correct key. Set lower bits to 0 to + * disable writes. */ +#if BSP_TZ_NONSECURE_BUILD && BSP_FEATURE_TZ_VERSION == 2 + R_SYSTEM->PRCR_NS = ((R_SYSTEM->PRCR_NS | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); +#else + R_SYSTEM->PRCR = ((R_SYSTEM->PRCR | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); +#endif + } + + /** Increment the protect counter */ + g_protect_counters[regs_to_unprotect]++; + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h new file mode 100644 index 0000000000..c7be654681 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_register_protection.h @@ -0,0 +1,74 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_REGISTER_PROTECTION_H +#define BSP_REGISTER_PROTECTION_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/** The different types of registers that can be protected. */ +typedef enum e_bsp_reg_protect +{ + /** Enables writing to the registers related to the clock generation circuit. */ + BSP_REG_PROTECT_CGC = 0, + + /** Enables writing to the registers related to operating modes, low power consumption, and battery backup + * function. */ + BSP_REG_PROTECT_OM_LPC_BATT, + + /** Enables writing to the registers related to the LVD: LVCMPCR, LVDLVLR, LVD1CR0, LVD1CR1, LVD1SR, LVD2CR0, + * LVD2CR1, LVD2SR. */ + BSP_REG_PROTECT_LVD, + + /** Enables writing to the registers related to the security function. */ + BSP_REG_PROTECT_SAR, +} bsp_reg_protect_t; + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_register_protect_open(void); // Used internally by BSP + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c new file mode 100644 index 0000000000..b687da9434 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_rom_registers.c @@ -0,0 +1,256 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define RA_NOT_DEFINED (0) + +/** OR in the HOCO frequency setting from bsp_clock_cfg.h with the OFS1 setting from bsp_cfg.h. */ +#define BSP_ROM_REG_OFS1_SETTING \ + (((uint32_t) BSP_CFG_ROM_REG_OFS1 & BSP_FEATURE_BSP_OFS1_HOCOFRQ_MASK) | \ + ((uint32_t) BSP_CFG_HOCO_FREQUENCY << BSP_FEATURE_BSP_OFS1_HOCOFRQ_OFFSET)) + +/** Build up SECMPUAC register based on MPU settings. */ +#define BSP_ROM_REG_MPU_CONTROL_SETTING \ + ((0xFFFFFCF0U) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC0_ENABLE << 8) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC1_ENABLE << 9) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION0_ENABLE) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION1_ENABLE << 1) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION2_ENABLE << 2) | \ + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION3_ENABLE << 3)) + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#if !BSP_CFG_BOOT_IMAGE + + #if BSP_FEATURE_FLASH_SUPPORTS_ID_CODE == 1 + +/** ID code definitions defined here. */ +BSP_DONT_REMOVE static const uint32_t g_bsp_id_codes[] BSP_PLACE_IN_SECTION (BSP_SECTION_ID_CODE) = +{ + BSP_CFG_ID_CODE_LONG_1, + #if BSP_FEATURE_BSP_OSIS_PADDING + 0xFFFFFFFFU, + #endif + BSP_CFG_ID_CODE_LONG_2, + #if BSP_FEATURE_BSP_OSIS_PADDING + 0xFFFFFFFFU, + #endif + BSP_CFG_ID_CODE_LONG_3, + #if BSP_FEATURE_BSP_OSIS_PADDING + 0xFFFFFFFFU, + #endif + BSP_CFG_ID_CODE_LONG_4 +}; + #endif + + #if 33U != __CORTEX_M && 85U != __CORTEX_M // NOLINT(readability-magic-numbers) + +/** ROM registers defined here. Some have masks to make sure reserved bits are set appropriately. */ +BSP_DONT_REMOVE static const uint32_t g_bsp_rom_registers[] BSP_PLACE_IN_SECTION (BSP_SECTION_ROM_REGISTERS) = +{ + (uint32_t) BSP_CFG_ROM_REG_OFS0, + (uint32_t) BSP_ROM_REG_OFS1_SETTING, + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC0_START & 0xFFFFFFFCU), + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC0_END | 0x00000003U), + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC1_START & 0xFFFFFFFCU), + ((uint32_t) BSP_CFG_ROM_REG_MPU_PC1_END | 0x00000003U), + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION0_START & BSP_FEATURE_BSP_MPU_REGION0_MASK & 0xFFFFFFFCU), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION0_END & BSP_FEATURE_BSP_MPU_REGION0_MASK) | 0x00000003U), + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION1_START & 0xFFFFFFFCU), + ((uint32_t) BSP_CFG_ROM_REG_MPU_REGION1_END | 0x00000003U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION2_START & 0x407FFFFCU) | 0x40000000U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION2_END & 0x407FFFFCU) | 0x40000003U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION3_START & 0x407FFFFCU) | 0x40000000U), + (((uint32_t) BSP_CFG_ROM_REG_MPU_REGION3_END & 0x407FFFFCU) | 0x40000003U), + (uint32_t) BSP_ROM_REG_MPU_CONTROL_SETTING +}; + + #elif BSP_FEATURE_FLASH_SUPPORTS_ID_CODE == 1 + + #if !BSP_TZ_NONSECURE_BUILD +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs0") g_bsp_rom_ofs0 = + BSP_CFG_ROM_REG_OFS0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_sas") g_bsp_rom_sas = + 0xFFFFFFFF; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1_sec") g_bsp_rom_ofs1 = + BSP_ROM_REG_OFS1_SETTING; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec0") g_bsp_rom_bps0 = + BSP_CFG_ROM_REG_BPS0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec0") g_bsp_rom_pbps0 = + BSP_CFG_ROM_REG_PBPS0; + + #endif + + #else /* CM33 & CM85 parts */ + + #if !BSP_TZ_NONSECURE_BUILD + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs0") g_bsp_rom_ofs0 = + BSP_CFG_ROM_REG_OFS0; + + #if BSP_FEATURE_BSP_HAS_OFS2 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs2") g_bsp_rom_ofs2 = + BSP_CFG_ROM_REG_OFS2; + + #endif + #if BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_dualsel") g_bsp_rom_dualsel = + BSP_CFG_ROM_REG_DUALSEL; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_sas") g_bsp_rom_sas = + 0xFFFFFFFF; + + #else + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1") g_bsp_rom_ofs1 = + BSP_ROM_REG_OFS1_SETTING; + + #if BSP_FEATURE_BSP_HAS_OFS3 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs3") g_bsp_rom_ofs3 = + BSP_CFG_ROM_REG_OFS3; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel") g_bsp_rom_banksel = + 0xFFFFFFFF; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps0") g_bsp_rom_bps0 = + BSP_CFG_ROM_REG_BPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps1") g_bsp_rom_bps1 = + BSP_CFG_ROM_REG_BPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps2") g_bsp_rom_bps2 = + BSP_CFG_ROM_REG_BPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps3") g_bsp_rom_bps3 = + BSP_CFG_ROM_REG_BPS3; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps0") g_bsp_rom_pbps0 = + BSP_CFG_ROM_REG_PBPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps1") g_bsp_rom_pbps1 = + BSP_CFG_ROM_REG_PBPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps2") g_bsp_rom_pbps2 = + BSP_CFG_ROM_REG_PBPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps3") g_bsp_rom_pbps3 = + BSP_CFG_ROM_REG_PBPS3; + + #endif + + #if !BSP_TZ_NONSECURE_BUILD + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1_sec") g_bsp_rom_ofs1_sec = + BSP_ROM_REG_OFS1_SETTING; + + #if BSP_FEATURE_BSP_HAS_OFS3 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs3_sec") g_bsp_rom_ofs3_sec = + BSP_CFG_ROM_REG_OFS3; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel_sec") g_bsp_rom_banksel_sec = + 0xFFFFFFFF; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec0") g_bsp_rom_bps_sec0 = + BSP_CFG_ROM_REG_BPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec1") g_bsp_rom_bps_sec1 = + BSP_CFG_ROM_REG_BPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec2") g_bsp_rom_bps_sec2 = + BSP_CFG_ROM_REG_BPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sec3") g_bsp_rom_bps_sec3 = + BSP_CFG_ROM_REG_BPS3; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec0") g_bsp_rom_pbps_sec0 = + BSP_CFG_ROM_REG_PBPS0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec1") g_bsp_rom_pbps_sec1 = + BSP_CFG_ROM_REG_PBPS1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec2") g_bsp_rom_pbps_sec2 = + BSP_CFG_ROM_REG_PBPS2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_pbps_sec3") g_bsp_rom_pbps_sec3 = + BSP_CFG_ROM_REG_PBPS3; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs1_sel") g_bsp_rom_ofs1_sel = + BSP_CFG_ROM_REG_OFS1_SEL; + + #if BSP_FEATURE_BSP_HAS_OFS3 +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_ofs3_sel") g_bsp_rom_ofs3_sel = + BSP_CFG_ROM_REG_OFS3_SEL; + + #endif + #if BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_banksel_sel") g_bsp_rom_banksel_sel = + BSP_CFG_ROM_REG_BANKSEL_SEL; + + #endif +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel0") g_bsp_rom_bps_sel0 = + BSP_CFG_ROM_REG_BPS_SEL0; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel1") g_bsp_rom_bps_sel1 = + BSP_CFG_ROM_REG_BPS_SEL1; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel2") g_bsp_rom_bps_sel2 = + BSP_CFG_ROM_REG_BPS_SEL2; +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_bps_sel3") g_bsp_rom_bps_sel3 = + BSP_CFG_ROM_REG_BPS_SEL3; + + #endif + + #if 85U == __CORTEX_M && !BSP_TZ_NONSECURE_BUILD +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_fsblctrl0") g_bsp_rom_fsblctrl0 = + BSP_CFG_ROM_REG_FSBLCTRL0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_fsblctrl1") g_bsp_rom_fsblctrl1 = + BSP_CFG_ROM_REG_FSBLCTRL1; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_fsblctrl2") g_bsp_rom_fsblctrl2 = + BSP_CFG_ROM_REG_FSBLCTRL2; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_sacc0") g_bsp_rom_sacc0 = + BSP_CFG_ROM_REG_SACC0; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_sacc1") g_bsp_rom_sacc1 = + BSP_CFG_ROM_REG_SACC1; + +BSP_DONT_REMOVE static const uint32_t BSP_PLACE_IN_SECTION(".option_setting_data_flash_samr") g_bsp_rom_samr = + BSP_CFG_ROM_REG_SAMR; + + #endif + + #endif + +#endif + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c new file mode 100644 index 0000000000..2bf2cbbe7c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_sbrk.c @@ -0,0 +1,106 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#if defined(__GNUC__) && !defined(__ARMCC_VERSION) +#include "bsp_api.h" +#include +#include + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +caddr_t _sbrk(int incr); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * FSP implementation of the standard library _sbrk() function. + * @param[in] inc The number of bytes being asked for by malloc(). + * + * @note This function overrides the _sbrk version that exists in the newlib library that is linked with. + * That version improperly relies on the SP as part of it's allocation strategy. This is bad in general and + * worse in an RTOS environment. This version insures that we allocate the byte pool requested by malloc() + * only from our allocated HEAP area. Also note that newlib is pre-built and forces the pagesize used by + * malloc() to be 4096. That requires that we have a HEAP of at least 4096 if we are to support malloc(). + * @retval Address of allocated area if successful, -1 otherwise. + **********************************************************************************************************************/ + +caddr_t _sbrk (int incr) +{ + extern char _Heap_Begin __asm("__HeapBase"); ///< Defined by the linker. + + extern char _Heap_Limit __asm("__HeapLimit"); ///< Defined by the linker. + + uint32_t bytes = (uint32_t) incr; + static char * current_heap_end = 0; + char * current_block_address; + + if (current_heap_end == 0) + { + current_heap_end = &_Heap_Begin; + } + + current_block_address = current_heap_end; + + /* The returned address must be aligned to a word boundary to prevent hard faults on cores that do not support + * unaligned access. We assume the heap starts on a word boundary and make sure all allocations are a multiple + * of 4. */ + bytes = (bytes + 3U) & (~3U); + if (current_heap_end + bytes > &_Heap_Limit) + { + /** Heap has overflowed */ + errno = ENOMEM; + + return (caddr_t) -1; + } + + current_heap_end += bytes; + + return (caddr_t) current_block_address; +} + +#endif + +/******************************************************************************************************************//** + * @} (end addtogroup BSP_MCU) + *********************************************************************************************************************/ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c new file mode 100644 index 0000000000..4a11f38d1e --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.c @@ -0,0 +1,637 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if BSP_FEATURE_TZ_HAS_TRUSTZONE + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + #define BSP_PRV_TZ_REG_KEY (0xA500U) + #define BSP_PRV_AIRCR_VECTKEY (0x05FA0000U) + #define RA_NOT_DEFINED (0) + +/* Branch T3 Instruction (IMM11=-2) */ + #define BSP_PRV_INFINITE_LOOP (0xE7FE) + + #define BSP_SAU_REGION_CODE_FLASH_NSC (0U) + #define BSP_SAU_REGION_1_NS (1U) + #define BSP_SAU_REGION_SRAM_NSC (2U) + #define BSP_SAU_REGION_2_NS (3U) + #define BSP_SAU_REGION_3_NS (4U) + +/* Non-secure regions defined by the IDAU. These regions must be defined as non-secure in the SAU. */ + #define BSP_PRV_SAU_NS_REGION_1_BASE_ADDRESS (0x10000000U) + #define BSP_PRV_SAU_NS_REGION_1_LIMIT_ADDRESS (0x1FFFFFFFU) + #define BSP_PRV_SAU_NS_REGION_2_BASE_ADDRESS (0x30000000U) + #define BSP_PRV_SAU_NS_REGION_2_LIMIT_ADDRESS (0x3FFFFFFFU) + #define BSP_PRV_SAU_NS_REGION_3_BASE_ADDRESS (0x50000000U) + #define BSP_PRV_SAU_NS_REGION_3_LIMIT_ADDRESS (0xDFFFFFFFU) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ +void R_BSP_SecurityInit(void); +void R_BSP_PinCfgSecurityInit(void); +void R_BSP_ElcCfgSecurityInit(void); + +/*********************************************************************************************************************** + * External symbols + **********************************************************************************************************************/ +extern const fsp_vector_t g_vector_table[BSP_ICU_VECTOR_MAX_ENTRIES]; + + #if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * bsp_nonsecure_func_t)(void); + #elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile bsp_nonsecure_func_t)(void); + #endif + + #if defined(__IAR_SYSTEMS_ICC__) && BSP_TZ_SECURE_BUILD + + #pragma section=".tz_flash_ns_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = (uint32_t *) __section_begin(".tz_flash_ns_start"); + #pragma section="Veneer$$CMSE" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = (uint32_t *) __section_begin( + "Veneer$$CMSE"); + #pragma section=".tz_ram_ns_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ram = (uint32_t *) __section_begin(".tz_ram_ns_start"); + #pragma section=".tz_ram_nsc_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = (uint32_t *) __section_begin( + ".tz_ram_nsc_start"); + #pragma section=".tz_data_flash_ns_start" +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_data_flash = (uint32_t *) __section_begin( + ".tz_data_flash_ns_start"); + + #if BSP_FEATURE_BSP_HAS_ITCM +extern const uint32_t __tz_ITCM_N; +extern const uint32_t __tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +extern const uint32_t __tz_DTCM_N; +extern const uint32_t __tz_DTCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_itcm = (uint32_t *) &__tz_ITCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_itcm = (uint32_t *) &__tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_dtcm = (uint32_t *) &__tz_DTCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_dtcm = (uint32_t *) &__tz_DTCM_S; + #endif + + #elif defined(__ARMCC_VERSION) + #if BSP_FEATURE_BSP_HAS_ITCM +extern const uint32_t Image$$__tz_ITCM_N$$Base; +extern const uint32_t Image$$__tz_ITCM_S$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +extern const uint32_t Image$$__tz_DTCM_N$$Base; +extern const uint32_t Image$$__tz_DTCM_S$$Base; + #endif + #if BSP_FEATURE_BSP_HAS_STBRAMSABAR +extern const uint32_t Image$$__tz_STANDBY_SRAM_N$$Base; +extern const uint32_t Image$$__tz_STANDBY_SRAM_S$$Base; + #endif +extern const uint32_t Image$$__tz_FLASH_N$$Base; + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t Image$$__FLASH_NSC_START$$Base; + #else +extern const uint32_t Image$$__tz_FLASH_C$$Base; + #endif +extern const uint32_t Image$$__tz_FLASH_S$$Base; +extern const uint32_t Image$$__tz_RAM_N$$Base; + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t Image$$__RAM_NSC_START$$Base; + #else +extern const uint32_t Image$$__tz_RAM_C$$Base; + #endif +extern const uint32_t Image$$__tz_RAM_S$$Base; +extern const uint32_t Image$$__tz_DATA_FLASH_N$$Base; +extern const uint32_t Image$$__tz_DATA_FLASH_S$$Base; +extern const uint32_t Image$$__tz_QSPI_FLASH_N$$Base; +extern const uint32_t Image$$__tz_QSPI_FLASH_S$$Base; +extern const uint32_t Image$$__tz_SDRAM_N$$Base; +extern const uint32_t Image$$__tz_SDRAM_S$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_0_N$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_0_S$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_1_N$$Base; +extern const uint32_t Image$$__tz_OSPI_DEVICE_1_S$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_N$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_S$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_S_N$$Base; +extern const uint32_t Image$$__tz_OPTION_SETTING_S_S$$Base; +extern const uint32_t Image$$__tz_ID_CODE_N$$Base; +extern const uint32_t Image$$__tz_ID_CODE_S$$Base; + + #if BSP_FEATURE_BSP_HAS_ITCM + #define __tz_ITCM_N Image$$__tz_ITCM_N$$Base + #define __tz_ITCM_S Image$$__tz_ITCM_S$$Base + #endif + #if BSP_FEATURE_BSP_HAS_DTCM + #define __tz_DTCM_N Image$$__tz_DTCM_N$$Base + #define __tz_DTCM_S Image$$__tz_DTCM_S$$Base + #endif + #if BSP_FEATURE_BSP_HAS_STBRAMSABAR + #define __tz_STANDBY_SRAM_N Image$$__tz_STANDBY_SRAM_N$$Base + #define __tz_STANDBY_SRAM_S Image$$__tz_STANDBY_SRAM_S$$Base + #endif + #define __tz_FLASH_N Image$$__tz_FLASH_N$$Base + #if BSP_FEATURE_TZ_VERSION == 2 + #define __tz_FLASH_C Image$$__FLASH_NSC_START$$Base; + #else + #define __tz_FLASH_C Image$$__tz_FLASH_C$$Base + #endif + #define __tz_FLASH_S Image$$__tz_FLASH_S$$Base + #define __tz_RAM_N Image$$__tz_RAM_N$$Base + #if BSP_FEATURE_TZ_VERSION == 2 + #define __tz_RAM_C Image$$__RAM_NSC_START$$Base + #else + #define __tz_RAM_C Image$$__tz_RAM_C$$Base + #endif + #define __tz_RAM_S Image$$__tz_RAM_S$$Base + #define __tz_DATA_FLASH_N Image$$__tz_DATA_FLASH_N$$Base + #define __tz_DATA_FLASH_S Image$$__tz_DATA_FLASH_S$$Base + #define __tz_QSPI_FLASH_N Image$$__tz_QSPI_FLASH_N$$Base + #define __tz_QSPI_FLASH_S Image$$__tz_QSPI_FLASH_S$$Base + #define __tz_SDRAM_N Image$$__tz_SDRAM_N$$Base + #define __tz_SDRAM_S Image$$__tz_SDRAM_S$$Base + #define __tz_OSPI_DEVICE_0_N Image$$__tz_OSPI_DEVICE_0_N$$Base + #define __tz_OSPI_DEVICE_0_S Image$$__tz_OSPI_DEVICE_0_S$$Base + #define __tz_OSPI_DEVICE_1_N Image$$__tz_OSPI_DEVICE_1_N$$Base + #define __tz_OSPI_DEVICE_1_S Image$$__tz_OSPI_DEVICE_1_S$$Base + #define __tz_OPTION_SETTING_N Image$$__tz_OPTION_SETTING_N$$Base + #define __tz_OPTION_SETTING_S Image$$__tz_OPTION_SETTING_S$$Base + #define __tz_OPTION_SETTING_S_N Image$$__tz_OPTION_SETTING_S_N$$Base + #define __tz_OPTION_SETTING_S_S Image$$__tz_OPTION_SETTING_S_S$$Base + #define __tz_ID_CODE_N Image$$__tz_ID_CODE_N$$Base + #define __tz_ID_CODE_S Image$$__tz_ID_CODE_S$$Base + +/* Assign region addresses to pointers so that AC6 includes symbols that can be used to determine the + * start addresses of Secure, Non-secure and Non-secure Callable regions. */ + #if BSP_FEATURE_BSP_HAS_ITCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_itcm = &__tz_ITCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_itcm = &__tz_ITCM_S; + #endif + #if BSP_FEATURE_BSP_HAS_DTCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_dtcm = &__tz_DTCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_dtcm = &__tz_DTCM_S; + #endif + #if BSP_FEATURE_BSP_HAS_STBRAMSABAR +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_standby_sram = &__tz_STANDBY_SRAM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_standby_sram = &__tz_STANDBY_SRAM_S; + #endif +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &__tz_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = &__tz_FLASH_C; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_flash = &__tz_FLASH_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ram = &__tz_RAM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = &__tz_RAM_C; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_ram = &__tz_RAM_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_data_flash = &__tz_DATA_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_data_flash = &__tz_DATA_FLASH_S; + + #if BSP_TZ_SECURE_BUILD + +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_qspi_flash = &__tz_QSPI_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_qspi_flash = &__tz_QSPI_FLASH_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_sdram = &__tz_SDRAM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_sdram = &__tz_SDRAM_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ospi_device_0 = &__tz_OSPI_DEVICE_0_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_ospi_device_0 = &__tz_OSPI_DEVICE_0_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ospi_device_1 = &__tz_OSPI_DEVICE_1_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_ospi_device_1 = &__tz_OSPI_DEVICE_1_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_option_setting = &__tz_OPTION_SETTING_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_option_setting = &__tz_OPTION_SETTING_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_option_setting_s = &__tz_OPTION_SETTING_S_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_option_setting_s = &__tz_OPTION_SETTING_S_S; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_id_code = &__tz_ID_CODE_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_id_code = &__tz_ID_CODE_S; + + #endif + + #elif defined(__GNUC__) + + #if defined(__llvm__) && !defined(__CLANG_TIDY__) +extern const uint32_t __tz_FLASH_N; + #else +extern const uint32_t FLASH_NS_IMAGE_START; + #endif + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t __FLASH_NSC_START; + #else +extern const uint32_t __tz_FLASH_C; + #endif +extern const uint32_t __tz_DATA_FLASH_N; +extern const uint32_t __tz_RAM_N; + #if BSP_FEATURE_TZ_VERSION == 2 +extern const uint32_t __RAM_NSC_START; + #else +extern const uint32_t __tz_RAM_C; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM +extern const uint32_t __tz_ITCM_N; +extern const uint32_t __tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +extern const uint32_t __tz_DTCM_N; +extern const uint32_t __tz_DTCM_S; + #endif + + #if defined(__llvm__) && !defined(__CLANG_TIDY__) +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &__tz_FLASH_N; + #else +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_flash = &FLASH_NS_IMAGE_START; + #endif + #if BSP_FEATURE_TZ_VERSION == 2 +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = (uint32_t *) &__FLASH_NSC_START; + #else +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_flash = (uint32_t *) &__tz_FLASH_C; + #endif +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_data_flash = (uint32_t *) &__tz_DATA_FLASH_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_ram = (uint32_t *) &__tz_RAM_N; + #if BSP_FEATURE_TZ_VERSION == 2 +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = (uint32_t *) &__RAM_NSC_START; + #else +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_callable_ram = (uint32_t *) &__tz_RAM_C; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_itcm = (uint32_t *) &__tz_ITCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_itcm = (uint32_t *) &__tz_ITCM_S; + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM +BSP_DONT_REMOVE uint32_t const * const gp_start_of_nonsecure_dtcm = (uint32_t *) &__tz_DTCM_N; +BSP_DONT_REMOVE uint32_t const * const gp_start_of_secure_dtcm = (uint32_t *) &__tz_DTCM_S; + #endif + + #endif + + #if BSP_TZ_SECURE_BUILD + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Enter the non-secure code environment. + * + * This function configures the non-secure MSP and vector table then jumps to the non-secure project's Reset_Handler. + * + * @note This function (and therefore the non-secure code) should not return. + **********************************************************************************************************************/ +void R_BSP_NonSecureEnter (void) +{ + /* The NS vector table is at the start of the NS section in flash */ + uint32_t const * p_ns_vector_table = + (uint32_t *) ((uint32_t) gp_start_of_nonsecure_flash | BSP_FEATURE_TZ_NS_OFFSET); + + /* Set up the NS Reset_Handler to be called */ + uint32_t const * p_ns_reset_address = (uint32_t const *) ((uint32_t) p_ns_vector_table + sizeof(uint32_t)); + bsp_nonsecure_func_t p_ns_reset = (bsp_nonsecure_func_t) (*p_ns_reset_address); + + #if BSP_TZ_CFG_NON_SECURE_APPLICATION_FALLBACK + + /* Check if the NS application exists. If the address of the Reset_Handler is all '1's, then assume that + * the NS application has not been programmed. + * + * If the secure application attempts to jump to an invalid instruction, a HardFault will occur. If the + * MCU is in NSECSD state, then the debugger will be unable to connect and program the NS Application. Jumping to + * a valid instruction ensures that the debugger will be able to connect. + */ + if (UINT32_MAX == *p_ns_reset_address) + { + p_ns_reset = (bsp_nonsecure_func_t) ((uint32_t) gp_start_of_nonsecure_ram | BSP_FEATURE_TZ_NS_OFFSET); + + /* Write an infinite loop into start of NS RAM (Branch T3 Instruction (b.n )). */ + uint16_t * infinite_loop = (uint16_t *) ((uint32_t) gp_start_of_nonsecure_ram | BSP_FEATURE_TZ_NS_OFFSET); + *infinite_loop = BSP_PRV_INFINITE_LOOP; + + /* Set the NS stack pointer to a valid location in NS RAM. */ + __TZ_set_MSP_NS((uint32_t) gp_start_of_nonsecure_ram + 0x20U + BSP_FEATURE_TZ_NS_OFFSET); + + /* Jump to the infinite loop. */ + p_ns_reset(); + } + #endif + + /* Set the NS vector table address */ + SCB_NS->VTOR = (uint32_t) p_ns_vector_table; + + /* Set the NS stack pointer to the first entry in the NS vector table */ + __TZ_set_MSP_NS(p_ns_vector_table[0]); + + /* Jump to the NS Reset_Handler */ + p_ns_reset(); +} + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * Initialize security features for TrustZone. + * + * This function initializes ARM security register and Renesas SAR registers for secure projects. + * + * @note IDAU settings must be configured to match project settings with a separate configuration tool. + **********************************************************************************************************************/ +void R_BSP_SecurityInit (void) +{ + /* Disable PRCR for SARs. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + #if 0 == BSP_FEATURE_TZ_HAS_DLM + + /* If DLM is not implemented, then the TrustZone partitions must be set at run-time. */ + R_PSCU->CFSAMONA = (uint32_t) gp_start_of_nonsecure_flash & R_PSCU_CFSAMONA_CFS2_Msk; + R_PSCU->CFSAMONB = (uint32_t) gp_start_of_nonsecure_callable_flash & R_PSCU_CFSAMONB_CFS1_Msk; + R_PSCU->DFSAMON = (uint32_t) gp_start_of_nonsecure_data_flash & R_PSCU_DFSAMON_DFS_Msk; + R_PSCU->SSAMONA = (uint32_t) gp_start_of_nonsecure_ram & R_PSCU_SSAMONA_SS2_Msk; + R_PSCU->SSAMONB = (uint32_t) gp_start_of_nonsecure_callable_ram & R_PSCU_SSAMONB_SS1_Msk; + #endif + + #if BSP_FEATURE_BSP_HAS_ITCM == 1 + + /* Total ITCM block size in bytes is equal to 2 ^ (BLKSZ + 5). */ + uint32_t itcm_block_size = ((MEMSYSCTL->ITGU_CFG & MEMSYSCTL_ITGU_CFG_BLKSZ_Msk) >> MEMSYSCTL_ITGU_CFG_BLKSZ_Pos) + + 5U; + + /* The number of secure ITCM blocks is equal to size of the secure region in bytes divided by the ITCM block size. */ + uint32_t itcm_num_sec_blocks = ((uint32_t) gp_start_of_nonsecure_itcm - (uint32_t) gp_start_of_secure_itcm) >> + itcm_block_size; + + /* Set all secure blocks to '0' and all non-secure blocks to 1. */ + MEMSYSCTL->ITGU_LUT[0] = ~((1U << itcm_num_sec_blocks) - 1U); + #endif + + #if BSP_FEATURE_BSP_HAS_DTCM == 1 + + /* Total DTCM block size in bytes is equal to 2 ^ (BLKSZ + 5). */ + uint32_t dtcm_block_size = ((MEMSYSCTL->DTGU_CFG & MEMSYSCTL_DTGU_CFG_BLKSZ_Msk) >> MEMSYSCTL_DTGU_CFG_BLKSZ_Pos) + + 5U; + + /* The number of secure DTCM blocks is equal to size of the secure region in bytes divided by the DTCM block size. */ + uint32_t dtcm_num_sec_blocks = ((uint32_t) gp_start_of_nonsecure_dtcm - (uint32_t) gp_start_of_secure_dtcm) >> + dtcm_block_size; + + /* Set all secure blocks to '0' and all non-secure blocks to 1. */ + MEMSYSCTL->DTGU_LUT[0] = ~((1U << dtcm_num_sec_blocks) - 1U); + #endif + + #if __SAUREGION_PRESENT + + /* Configure IDAU to divide SRAM region into NSC/NS. */ + R_CPSCU->SRAMSABAR0 = (uint32_t) gp_start_of_nonsecure_ram & R_CPSCU_SRAMSABAR0_SRAMSABAR_Msk; + R_CPSCU->SRAMSABAR1 = (uint32_t) gp_start_of_nonsecure_ram & R_CPSCU_SRAMSABAR1_SRAMSABAR_Msk; + + /* Configure SAU region used for Code Flash Non-secure callable. */ + SAU->RNR = BSP_SAU_REGION_CODE_FLASH_NSC; + SAU->RBAR = (uint32_t) gp_start_of_nonsecure_callable_flash & SAU_RBAR_BADDR_Msk; + SAU->RLAR = (((uint32_t) gp_start_of_nonsecure_flash - 1U) & SAU_RLAR_LADDR_Msk) | SAU_RLAR_NSC_Msk | + SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure region 1: + * - ITCM + * - Code Flash + * - On-chip flash (Factory Flash) + * - On-chip flash (option-setting memory) + */ + SAU->RNR = BSP_SAU_REGION_1_NS; + SAU->RBAR = (uint32_t) BSP_PRV_SAU_NS_REGION_1_BASE_ADDRESS & SAU_RBAR_BADDR_Msk; + SAU->RLAR = ((BSP_PRV_SAU_NS_REGION_1_LIMIT_ADDRESS) &SAU_RLAR_LADDR_Msk) | SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure callable SRAM. */ + SAU->RNR = BSP_SAU_REGION_SRAM_NSC; + SAU->RBAR = (uint32_t) gp_start_of_nonsecure_callable_ram & SAU_RBAR_BADDR_Msk; + SAU->RLAR = (((uint32_t) gp_start_of_nonsecure_ram - 1U) & SAU_RLAR_LADDR_Msk) | SAU_RLAR_NSC_Msk | + SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure region 2: + * - DTCM + * - On-chip SRAM + * - Standby SRAM + * - On-chip flash (data flash) + */ + SAU->RNR = BSP_SAU_REGION_2_NS; + SAU->RBAR = ((uint32_t) BSP_PRV_SAU_NS_REGION_2_BASE_ADDRESS & SAU_RBAR_BADDR_Msk) | BSP_FEATURE_TZ_NS_OFFSET; + SAU->RLAR = (BSP_PRV_SAU_NS_REGION_2_LIMIT_ADDRESS & SAU_RLAR_LADDR_Msk) | SAU_RLAR_ENABLE_Msk; + + /* Configure SAU region used for Non-secure region 3: + * - Peripheral I/O registers + * - Flash I/O registers + * - External address space (CS area) + * - External address space (SDRAM area) + * - External address space (OSPI area) + */ + SAU->RNR = BSP_SAU_REGION_3_NS; + SAU->RBAR = BSP_PRV_SAU_NS_REGION_3_BASE_ADDRESS & SAU_RBAR_BADDR_Msk; + SAU->RLAR = (BSP_PRV_SAU_NS_REGION_3_LIMIT_ADDRESS & SAU_RLAR_LADDR_Msk) | SAU_RLAR_ENABLE_Msk; + + /* Enable the SAU. */ + SAU->CTRL = SAU_CTRL_ENABLE_Msk; + + /* Cache maintenance is required when changing security attribution of an address. + * Barrier instructions are required to guarantee intended operation + * (See Arm Cortex-M85 Technical Reference Manual Section 10.9.3). */ + SCB_InvalidateICache(); + #else + + /* Setting SAU_CTRL.ALLNS to 1 allows the security attribution of all addresses to be set by the IDAU in the + * system. */ + SAU->CTRL = SAU_CTRL_ALLNS_Msk; + #endif + + /* The following section of code to configure SCB->AIRCR, SCB->NSACR, and FPU->FPCCR is taken from + * system_ARMCM33.c in the CMSIS_5 repository. SCB->SCR SLEEPDEEPS bit is not configured because the + * SCB->SCR SLEEPDEEP bit is ignored on RA MCUs. */ + #if defined(SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) + + /* Configure whether non-secure projects have access to system reset, whether bus fault, hard fault, and NMI target + * secure or non-secure, and whether non-secure interrupt priorities are reduced to the lowest 8 priority levels. */ + SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk | + SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk)) | + BSP_PRV_AIRCR_VECTKEY | + ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) | + ((SCB_AIRCR_PRIS_VAL << SCB_AIRCR_PRIS_Pos) & SCB_AIRCR_PRIS_Msk) | + ((SCB_AIRCR_BFHFNMINS_VAL << SCB_AIRCR_BFHFNMINS_Pos) & SCB_AIRCR_BFHFNMINS_Msk); + #endif + + #if defined(__FPU_USED) && (__FPU_USED == 1U) && \ + defined(TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U) + + /* Configure whether the FPU can be accessed in the non-secure project. */ + SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) | + ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)); + + /* Configure whether FPU registers are always treated as non-secure (and therefore not preserved on the stack when + * switching from secure to non-secure), and whether the FPU registers should be cleared on exception return. */ + FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) | + ((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos) & FPU_FPCCR_TS_Msk) | + ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) | + ((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos) & FPU_FPCCR_CLRONRET_Msk); + #endif + + #if BSP_FEATURE_BSP_HAS_TZFSAR + + /* Set TrustZone filter to Secure. */ + R_TZF->TZFSAR = ~R_TZF_TZFSAR_TZFSA0_Msk; + #endif + + /* Set TrustZone filter exception response. */ + R_TZF->TZFPT = BSP_PRV_TZ_REG_KEY + 1U; + R_TZF->TZFOAD = BSP_PRV_TZ_REG_KEY + BSP_TZ_CFG_EXCEPTION_RESPONSE; + R_TZF->TZFPT = BSP_PRV_TZ_REG_KEY + 0U; + + /* Initialize PSARs. */ + R_PSCU->PSARB = BSP_TZ_CFG_PSARB; + R_PSCU->PSARC = BSP_TZ_CFG_PSARC; + R_PSCU->PSARD = BSP_TZ_CFG_PSARD; + R_PSCU->PSARE = BSP_TZ_CFG_PSARE; + R_PSCU->MSSAR = BSP_TZ_CFG_MSSAR; + + /* Initialize Type 2 SARs. */ + #ifdef BSP_TZ_CFG_CSAR + R_CPSCU->CSAR = BSP_TZ_CFG_CSAR; /* Cache Security Attribution. */ + #endif + R_SYSTEM->RSTSAR = BSP_TZ_CFG_RSTSAR; /* RSTSRn Security Attribution. */ + R_SYSTEM->LVDSAR = BSP_TZ_CFG_LVDSAR; /* LVD Security Attribution. */ + R_SYSTEM->CGFSAR = BSP_TZ_CFG_CGFSAR; /* CGC Security Attribution. */ + R_SYSTEM->LPMSAR = BSP_TZ_CFG_LPMSAR; /* LPM Security Attribution. */ + R_SYSTEM->DPFSAR = BSP_TZ_CFG_DPFSAR; /* Deep Standby Interrupt Factor Security Attribution. */ + #ifdef BSP_TZ_CFG_RSCSAR + R_SYSTEM->RSCSAR = BSP_TZ_CFG_RSCSAR; /* RAM Standby Control Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_PGCSAR + R_SYSTEM->PGCSAR = BSP_TZ_CFG_PGCSAR; /* Power Gating Control Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_BBFSAR + R_SYSTEM->BBFSAR = BSP_TZ_CFG_BBFSAR; /* Battery Backup Security Attribution. */ + #endif + R_CPSCU->ICUSARA = BSP_TZ_CFG_ICUSARA; /* External IRQ Security Attribution. */ + R_CPSCU->ICUSARB = BSP_TZ_CFG_ICUSARB; /* NMI Security Attribution. */ + #ifdef BSP_TZ_CFG_ICUSARC + R_CPSCU->ICUSARC = BSP_TZ_CFG_ICUSARC; /* DMAC Channel Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_DMACCHSAR + R_CPSCU->DMACCHSAR = BSP_TZ_CFG_DMACCHSAR; /* DMAC Channel Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_ICUSARD + R_CPSCU->ICUSARD = BSP_TZ_CFG_ICUSARD; /* SELSR0 Security Attribution. */ + #endif + R_CPSCU->ICUSARE = BSP_TZ_CFG_ICUSARE; /* WUPEN0 Security Attribution. */ + #ifdef BSP_TZ_CFG_ICUSARF + R_CPSCU->ICUSARF = BSP_TZ_CFG_ICUSARF; /* WUPEN1 Security Attribution. */ + #endif + #ifdef BSP_TZ_CFG_TEVTRCR + R_CPSCU->TEVTRCR = BSP_TZ_CFG_TEVTRCR; /* Trusted Event Route Enable. */ + #endif + #ifdef BSP_TZ_CFG_ELCSARA + R_ELC->ELCSARA = BSP_TZ_CFG_ELCSARA; /* ELCR, ELSEGR0, ELSEGR1 Security Attribution. */ + #endif + R_FCACHE->FSAR = BSP_TZ_CFG_FSAR; /* FLWT and FCKMHZ Security Attribution. */ + R_CPSCU->SRAMSAR = BSP_TZ_CFG_SRAMSAR; /* SRAM Security Attribution. */ + #ifdef BSP_TZ_CFG_STBRAMSAR + R_CPSCU->STBRAMSAR = BSP_TZ_CFG_STBRAMSAR; /* Standby RAM Security Attribution. */ + #endif + R_CPSCU->MMPUSARA = BSP_TZ_CFG_MMPUSARA; /* Security Attribution for the DMAC Bus Master MPU. */ + R_CPSCU->BUSSARA = BSP_TZ_CFG_BUSSARA; /* Security Attribution Register A for the BUS Control Registers. */ + R_CPSCU->BUSSARB = BSP_TZ_CFG_BUSSARB; /* Security Attribution Register B for the BUS Control Registers. */ + + #if (defined(BSP_TZ_CFG_ICUSARC) && (BSP_TZ_CFG_ICUSARC != UINT32_MAX)) || \ + (defined(BSP_TZ_CFG_DMACCHSAR) && \ + ((BSP_TZ_CFG_DMACCHSAR & R_CPSCU_DMACCHSAR_DMACCHSARn_Msk) != R_CPSCU_DMACCHSAR_DMACCHSARn_Msk)) + + R_BSP_MODULE_START(FSP_IP_DMAC, 0); + + #if BSP_FEATURE_TZ_VERSION == 2 + + /* On MCUs with this implementation of trustzone, DMAST security attribution is set to secure after reset. */ + #else + + /* If any DMAC channels are required by secure program, disable nonsecure write access to DMAST + * in order to prevent the nonsecure program from disabling all DMAC channels. */ + R_CPSCU->DMACSAR = ~1U; /* Protect DMAST from nonsecure write access. */ + #endif + + /* Ensure that DMAST is set so that the nonsecure program can use DMA. */ + R_DMA->DMAST = 1U; + #else + + /* On MCUs with this implementation of trustzone, DMACSAR security attribution is set to secure after reset. + * If the DMAC is not used in the secure application,then configure DMAST security attribution to non-secure. */ + R_CPSCU->DMACSAR = 1U; + #endif + + #if BSP_TZ_CFG_DTC_USED + R_BSP_MODULE_START(FSP_IP_DTC, 0); + + #if BSP_FEATURE_TZ_VERSION == 2 + + /* On MCUs with this implementation of trustzone, DTCST security attribution is set to secure after reset. */ + #else + + /* If the DTC is used by the secure program, disable nonsecure write access to DTCST + * in order to prevent the nonsecure program from disabling all DTC transfers. */ + R_CPSCU->DTCSAR = ~1U; + #endif + + /* Ensure that DTCST is set so that the nonsecure program can use DTC. */ + R_DTC->DTCST = 1U; + #elif BSP_FEATURE_TZ_VERSION == 2 + + /* On MCUs with this implementation of trustzone, DTCST security attribution is set to secure after reset. + * If the DTC is not used in the secure application,then configure DTCST security attribution to non-secure. */ + R_CPSCU->DTCSAR = 1U; + #endif + + /* Initialize security attribution registers for Pins. */ + R_BSP_PinCfgSecurityInit(); + + /* Initialize security attribution registers for ELC. */ + R_BSP_ElcCfgSecurityInit(); + + /* Reenable PRCR for SARs. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +} + +/* This function is overridden by tooling. */ +BSP_WEAK_REFERENCE void R_BSP_PinCfgSecurityInit (void) +{ +} + +/* This function is overridden by tooling. */ +BSP_WEAK_REFERENCE void R_BSP_ElcCfgSecurityInit (void) +{ +} + + #endif +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h new file mode 100644 index 0000000000..fa938cb526 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_security.h @@ -0,0 +1,47 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_SECURITY_H +#define BSP_SECURITY_H + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +void R_BSP_NonSecureEnter(void); + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h new file mode 100644 index 0000000000..c0dc512312 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/all/bsp_tfu.h @@ -0,0 +1,232 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef RENESAS_TFU +#define RENESAS_TFU + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* Mathematical Functions includes. */ +#ifdef __cplusplus + #include +#else + #include +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +#if BSP_FEATURE_TFU_SUPPORTED + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + + #define R_TFU_HYPOT_SCALING_FACTOR 0.607252935f + + #ifdef __GNUC__ /* and (arm)clang */ + #if (__STDC_VERSION__ < 199901L) && defined(__STRICT_ANSI__) && !defined(__cplusplus) + +/* No form of inline is available, it happens only when -std=c89, gnu89 and + * above are OK */ + #warning \ + "-std=c89 doesn't support type checking on TFU. Please use -std=gnu89 or higher for example -std=c99" + #else + #ifdef __GNUC_GNU_INLINE__ + +/* gnu89 semantics of inline and extern inline are essentially the exact + * opposite of those in C99 */ + #define BSP_TFU_INLINE extern inline __attribute__((always_inline)) + #else /* __GNUC_STDC_INLINE__ */ + #define BSP_TFU_INLINE static inline __attribute__((always_inline)) + #endif + #endif + #elif __ICCARM__ + #define BSP_TFU_INLINE + #else + #error "Compiler not supported!" + #endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Calculates sine of the given angle. + * @param[in] angle The value of an angle in radian. + * + * @retval Sine value of an angle. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __sinf (float angle) +{ + /* Set the angle to R_TFU->SCDT1 */ + R_TFU->SCDT1 = angle; + + /* Read sin from R_TFU->SCDT1 */ + return R_TFU->SCDT1; +} + +/*******************************************************************************************************************//** + * Calculates cosine of the given angle. + * @param[in] angle The value of an angle in radian. + * + * @retval Cosine value of an angle. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __cosf (float angle) +{ + /* Set the angle to R_TFU->SCDT1 */ + R_TFU->SCDT1 = angle; + + /* Read cos from R_TFU->SCDT1 */ + return R_TFU->SCDT0; +} + +/*******************************************************************************************************************//** + * Calculates sine and cosine of the given angle. + * @param[in] angle The value of an angle in radian. + * @param[out] sin Sine value of an angle. + * @param[out] cos Cosine value of an angle. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE void __sincosf (float angle, float * sin, float * cos) +{ + /* Set the angle to R_TFU->SCDT1 */ + R_TFU->SCDT1 = angle; + + /* Read sin from R_TFU->SCDT1 */ + *sin = R_TFU->SCDT1; + + /* Read sin from R_TFU->SCDT1 */ + *cos = R_TFU->SCDT0; +} + +/*******************************************************************************************************************//** + * Calculates the arc tangent based on given X-cordinate and Y-cordinate values. + * @param[in] y_cord Y-Axis cordinate value. + * @param[in] x_cord X-Axis cordinate value. + * + * @retval Arc tangent for given values. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __atan2f (float y_cord, float x_cord) +{ + /* Set X-cordinate to R_TFU->ATDT0 */ + R_TFU->ATDT0 = x_cord; + + /* set Y-cordinate to R_TFU->ATDT1 */ + R_TFU->ATDT1 = y_cord; + + /* Read arctan(y/x) from R_TFU->ATDT1 */ + return R_TFU->ATDT1; +} + +/*******************************************************************************************************************//** + * Calculates the hypotenuse based on given X-cordinate and Y-cordinate values. + * @param[in] y_cord Y-cordinate value. + * @param[in] x_cord X-cordinate value. + * + * @retval Hypotenuse for given values. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE float __hypotf (float x_cord, float y_cord) +{ + /* Set X-coordinate to R_TFU->ATDT0 */ + R_TFU->ATDT0 = x_cord; + + /* set Y-coordinate to R_TFU->ATDT1 */ + R_TFU->ATDT1 = y_cord; + + /* Read sqrt (x_cord2 + y_cord2) from R_TFU->ATDT0 */ + return R_TFU->ATDT0 * R_TFU_HYPOT_SCALING_FACTOR; +} + +/*******************************************************************************************************************//** + * Calculates the arc tangent and hypotenuse based on given X-cordinate and Y-cordinate values. + * @param[in] y_cord Y-cordinate value. + * @param[in] x_cord X-cordinate value. + * @param[out] atan2 Arc tangent for given values. + * @param[out] hypot Hypotenuse for given values. + **********************************************************************************************************************/ + #if __ICCARM__ + #pragma inline = forced + #endif +BSP_TFU_INLINE void __atan2hypotf (float y_cord, float x_cord, float * atan2, float * hypot) +{ + /* Set X-coordinate to R_TFU->ATDT0 */ + R_TFU->ATDT0 = x_cord; + + /* set Y-coordinate to R_TFU->ATDT1 */ + R_TFU->ATDT1 = y_cord; + + /* Read arctan(y/x) from R_TFU->ATDT1 */ + *atan2 = R_TFU->ATDT1; + + /* Read sqrt (x_cord2 + y_cord2) from R_TFU->ATDT0 */ + *hypot = R_TFU->ATDT0 * R_TFU_HYPOT_SCALING_FACTOR; +} + + #if BSP_CFG_USE_TFU_MATHLIB + #define sinf(x) __sinf(x) + #define cosf(x) __cosf(x) + #define atan2f(y, x) __atan2f(y, x) + #define hypotf(x, y) __hypotf(x, y) + #define atan2hypotf(y, x, a, h) __atan2hypotf(y, x, a, h) + #define sincosf(a, s, c) __sincosf(a, s, c) + #endif + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +#endif + +/** @} (end addtogroup BSP_MCU) */ + +/** Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER + +#endif /* RENESAS_TFU */ diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h new file mode 100644 index 0000000000..420fc4a8a7 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_elc.h @@ -0,0 +1,376 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_ELC_H +#define BSP_ELC_H + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU_RA8D1 + * @{ + **********************************************************************************************************************/ + +/** Sources of event signals to be linked to other peripherals or the CPU + * @note This list may change based on based on the device. + * */ +typedef enum e_elc_event_ra8d1 +{ + ELC_EVENT_NONE = (0), // Link disabled + ELC_EVENT_ICU_IRQ0 = (0x001), // External pin interrupt 0 + ELC_EVENT_ICU_IRQ1 = (0x002), // External pin interrupt 1 + ELC_EVENT_ICU_IRQ2 = (0x003), // External pin interrupt 2 + ELC_EVENT_ICU_IRQ3 = (0x004), // External pin interrupt 3 + ELC_EVENT_ICU_IRQ4 = (0x005), // External pin interrupt 4 + ELC_EVENT_ICU_IRQ5 = (0x006), // External pin interrupt 5 + ELC_EVENT_ICU_IRQ6 = (0x007), // External pin interrupt 6 + ELC_EVENT_ICU_IRQ7 = (0x008), // External pin interrupt 7 + ELC_EVENT_ICU_IRQ8 = (0x009), // External pin interrupt 8 + ELC_EVENT_ICU_IRQ9 = (0x00A), // External pin interrupt 9 + ELC_EVENT_ICU_IRQ10 = (0x00B), // External pin interrupt 10 + ELC_EVENT_ICU_IRQ11 = (0x00C), // External pin interrupt 11 + ELC_EVENT_ICU_IRQ12 = (0x00D), // External pin interrupt 12 + ELC_EVENT_ICU_IRQ13 = (0x00E), // External pin interrupt 13 + ELC_EVENT_ICU_IRQ14 = (0x00F), // External pin interrupt 14 + ELC_EVENT_ICU_IRQ15 = (0x010), // External pin interrupt 15 + ELC_EVENT_DMAC0_INT = (0x011), // DMAC0 transfer end 0 + ELC_EVENT_DMAC1_INT = (0x012), // DMAC0 transfer end 1 + ELC_EVENT_DMAC2_INT = (0x013), // DMAC0 transfer end 2 + ELC_EVENT_DMAC3_INT = (0x014), // DMAC0 transfer end 3 + ELC_EVENT_DMAC4_INT = (0x015), // DMAC0 transfer end 4 + ELC_EVENT_DMAC5_INT = (0x016), // DMAC0 transfer end 5 + ELC_EVENT_DMAC6_INT = (0x017), // DMAC0 transfer end 6 + ELC_EVENT_DMAC7_INT = (0x018), // DMAC0 transfer end 7 + ELC_EVENT_DTC_END = (0x021), // DTC transfer end + ELC_EVENT_DTC_COMPLETE = (0x022), // DTC transfer complete + ELC_EVENT_DMA_TRANSERR = (0x027), // DMA transfer error + ELC_EVENT_FCU_FIFERR = (0x030), // Flash access error interrupt + ELC_EVENT_FCU_FRDYI = (0x031), // Flash ready interrupt + ELC_EVENT_LVD_LVD1 = (0x038), // Voltage monitor 1 interrupt + ELC_EVENT_LVD_LVD2 = (0x039), // Voltage monitor 2 interrupt + ELC_EVENT_LVD_VBATT = (0x03D), // VBATT low voltage detect + ELC_EVENT_CGC_MOSC_STOP = (0x03E), // Main Clock oscillation stop + ELC_EVENT_ULPT0_INT = (0x040), // ULPT0 Underflow + ELC_EVENT_ULPT0_COMPARE_A = (0x041), // ULPT0 Compare match A + ELC_EVENT_ULPT0_COMPARE_B = (0x042), // ULPT0 Compare match B + ELC_EVENT_ULPT1_INT = (0x043), // ULPT1 Underflow + ELC_EVENT_ULPT1_COMPARE_A = (0x044), // ULPT1 Compare match A + ELC_EVENT_ULPT1_COMPARE_B = (0x045), // ULPT1 Compare match B + ELC_EVENT_AGT0_INT = (0x046), // AGT interrupt + ELC_EVENT_AGT0_COMPARE_A = (0x047), // Compare match A + ELC_EVENT_AGT0_COMPARE_B = (0x048), // Compare match B + ELC_EVENT_AGT1_INT = (0x049), // AGT interrupt + ELC_EVENT_AGT1_COMPARE_A = (0x04A), // Compare match A + ELC_EVENT_AGT1_COMPARE_B = (0x04B), // Compare match B + ELC_EVENT_IWDT_UNDERFLOW = (0x052), // IWDT underflow + ELC_EVENT_WDT0_UNDERFLOW = (0x053), // WDT0 underflow + ELC_EVENT_RTC_ALARM = (0x055), // Alarm interrupt + ELC_EVENT_RTC_PERIOD = (0x056), // Periodic interrupt + ELC_EVENT_RTC_CARRY = (0x057), // Carry interrupt + ELC_EVENT_USBFS_FIFO_0 = (0x058), // DMA transfer request 0 + ELC_EVENT_USBFS_FIFO_1 = (0x059), // DMA transfer request 1 + ELC_EVENT_USBFS_INT = (0x05A), // USBFS interrupt + ELC_EVENT_USBFS_RESUME = (0x05B), // USBFS resume interrupt + ELC_EVENT_IIC0_RXI = (0x05C), // Receive data full + ELC_EVENT_IIC0_TXI = (0x05D), // Transmit data empty + ELC_EVENT_IIC0_TEI = (0x05E), // Transmit end + ELC_EVENT_IIC0_ERI = (0x05F), // Transfer error + ELC_EVENT_IIC0_WUI = (0x060), // Wakeup interrupt + ELC_EVENT_IIC1_RXI = (0x061), // Receive data full + ELC_EVENT_IIC1_TXI = (0x062), // Transmit data empty + ELC_EVENT_IIC1_TEI = (0x063), // Transmit end + ELC_EVENT_IIC1_ERI = (0x064), // Transfer error + ELC_EVENT_SDHIMMC0_ACCS = (0x06B), // Card access + ELC_EVENT_SDHIMMC0_SDIO = (0x06C), // SDIO access + ELC_EVENT_SDHIMMC0_CARD = (0x06D), // Card detect + ELC_EVENT_SDHIMMC0_DMA_REQ = (0x06E), // DMA transfer request + ELC_EVENT_SDHIMMC1_ACCS = (0x06F), // Card access + ELC_EVENT_SDHIMMC1_SDIO = (0x070), // SDIO access + ELC_EVENT_SDHIMMC1_CARD = (0x071), // Card detect + ELC_EVENT_SDHIMMC1_DMA_REQ = (0x072), // DMA transfer request + ELC_EVENT_SSI0_TXI = (0x073), // Transmit data empty + ELC_EVENT_SSI0_RXI = (0x074), // Receive data full + ELC_EVENT_SSI0_INT = (0x076), // Error interrupt + ELC_EVENT_SSI1_TXI_RXI = (0x079), // Receive data full/Transmit data empty + ELC_EVENT_SSI1_INT = (0x07A), // Error interrupt + ELC_EVENT_ACMPHS0_INT = (0x07B), // Comparator interrupt 0 + ELC_EVENT_ACMPHS1_INT = (0x07C), // Comparator interrupt 1 + ELC_EVENT_ELC_SOFTWARE_EVENT_0 = (0x083), // Software event 0 + ELC_EVENT_ELC_SOFTWARE_EVENT_1 = (0x084), // Software event 1 + ELC_EVENT_IOPORT_EVENT_1 = (0x088), // Port 1 event + ELC_EVENT_IOPORT_EVENT_2 = (0x089), // Port 2 event + ELC_EVENT_IOPORT_EVENT_3 = (0x08A), // Port 3 event + ELC_EVENT_IOPORT_EVENT_4 = (0x08B), // Port 4 event + ELC_EVENT_CAC_FREQUENCY_ERROR = (0x08C), // Frequency error interrupt + ELC_EVENT_CAC_MEASUREMENT_END = (0x08D), // Measurement end interrupt + ELC_EVENT_CAC_OVERFLOW = (0x08E), // Overflow interrupt + ELC_EVENT_POEG0_EVENT = (0x08F), // Port Output disable interrupt A + ELC_EVENT_POEG1_EVENT = (0x090), // Port Output disable interrupt B + ELC_EVENT_POEG2_EVENT = (0x091), // Port Output disable interrupt C + ELC_EVENT_POEG3_EVENT = (0x092), // Port Output disable interrupt D + ELC_EVENT_OPS_UVW_EDGE = (0x0A0), // UVW edge event + ELC_EVENT_GPT0_CAPTURE_COMPARE_A = (0x0A1), // Compare match A + ELC_EVENT_GPT0_CAPTURE_COMPARE_B = (0x0A2), // Compare match B + ELC_EVENT_GPT0_COMPARE_C = (0x0A3), // Compare match C + ELC_EVENT_GPT0_COMPARE_D = (0x0A4), // Compare match D + ELC_EVENT_GPT0_COMPARE_E = (0x0A5), // Compare match E + ELC_EVENT_GPT0_COMPARE_F = (0x0A6), // Compare match F + ELC_EVENT_GPT0_COUNTER_OVERFLOW = (0x0A7), // Overflow + ELC_EVENT_GPT0_COUNTER_UNDERFLOW = (0x0A8), // Underflow + ELC_EVENT_GPT0_PC = (0x0A9), // Period count function finish + ELC_EVENT_GPT1_CAPTURE_COMPARE_A = (0x0AA), // Compare match A + ELC_EVENT_GPT1_CAPTURE_COMPARE_B = (0x0Ab), // Compare match B + ELC_EVENT_GPT1_COMPARE_C = (0x0AC), // Compare match C + ELC_EVENT_GPT1_COMPARE_D = (0x0AD), // Compare match D + ELC_EVENT_GPT1_COMPARE_E = (0x0AE), // Compare match E + ELC_EVENT_GPT1_COMPARE_F = (0x0AF), // Compare match F + ELC_EVENT_GPT1_COUNTER_OVERFLOW = (0x0B0), // Overflow + ELC_EVENT_GPT1_COUNTER_UNDERFLOW = (0x0B1), // Underflow + ELC_EVENT_GPT1_PC = (0x0B2), // Period count function finish + ELC_EVENT_GPT2_CAPTURE_COMPARE_A = (0x0B3), // Compare match A + ELC_EVENT_GPT2_CAPTURE_COMPARE_B = (0x0B4), // Compare match B + ELC_EVENT_GPT2_COMPARE_C = (0x0B5), // Compare match C + ELC_EVENT_GPT2_COMPARE_D = (0x0B6), // Compare match D + ELC_EVENT_GPT2_COMPARE_E = (0x0B7), // Compare match E + ELC_EVENT_GPT2_COMPARE_F = (0x0B8), // Compare match F + ELC_EVENT_GPT2_COUNTER_OVERFLOW = (0x0B9), // Overflow + ELC_EVENT_GPT2_COUNTER_UNDERFLOW = (0x0BA), // Underflow + ELC_EVENT_GPT2_PC = (0x0BB), // Period count function finish + ELC_EVENT_GPT3_CAPTURE_COMPARE_A = (0x0BC), // Compare match A + ELC_EVENT_GPT3_CAPTURE_COMPARE_B = (0x0BD), // Compare match B + ELC_EVENT_GPT3_COMPARE_C = (0x0BE), // Compare match C + ELC_EVENT_GPT3_COMPARE_D = (0x0BF), // Compare match D + ELC_EVENT_GPT3_COMPARE_E = (0x0C0), // Compare match E + ELC_EVENT_GPT3_COMPARE_F = (0x0C1), // Compare match F + ELC_EVENT_GPT3_COUNTER_OVERFLOW = (0x0C2), // Overflow + ELC_EVENT_GPT3_COUNTER_UNDERFLOW = (0x0C3), // Underflow + ELC_EVENT_GPT3_PC = (0x0C4), // Period count function finish + ELC_EVENT_GPT4_CAPTURE_COMPARE_A = (0x0C5), // Compare match A + ELC_EVENT_GPT4_CAPTURE_COMPARE_B = (0x0C6), // Compare match B + ELC_EVENT_GPT4_COMPARE_C = (0x0C7), // Compare match C + ELC_EVENT_GPT4_COMPARE_D = (0x0C8), // Compare match D + ELC_EVENT_GPT4_COMPARE_E = (0x0C9), // Compare match E + ELC_EVENT_GPT4_COMPARE_F = (0x0CA), // Compare match F + ELC_EVENT_GPT4_COUNTER_OVERFLOW = (0x0CB), // Overflow + ELC_EVENT_GPT4_COUNTER_UNDERFLOW = (0x0CC), // Underflow + ELC_EVENT_GPT5_CAPTURE_COMPARE_A = (0x0CE), // Compare match A + ELC_EVENT_GPT5_CAPTURE_COMPARE_B = (0x0CF), // Compare match B + ELC_EVENT_GPT5_COMPARE_C = (0x0D0), // Compare match C + ELC_EVENT_GPT5_COMPARE_D = (0x0D1), // Compare match D + ELC_EVENT_GPT5_COMPARE_E = (0x0D2), // Compare match E + ELC_EVENT_GPT5_COMPARE_F = (0x0D3), // Compare match F + ELC_EVENT_GPT5_COUNTER_OVERFLOW = (0x0D4), // Overflow + ELC_EVENT_GPT5_COUNTER_UNDERFLOW = (0x0D5), // Underflow + ELC_EVENT_GPT6_CAPTURE_COMPARE_A = (0x0D7), // Compare match A + ELC_EVENT_GPT6_CAPTURE_COMPARE_B = (0x0D8), // Compare match B + ELC_EVENT_GPT6_COMPARE_C = (0x0D9), // Compare match C + ELC_EVENT_GPT6_COMPARE_D = (0x0DA), // Compare match D + ELC_EVENT_GPT6_COMPARE_E = (0x0DB), // Compare match E + ELC_EVENT_GPT6_COMPARE_F = (0x0DC), // Compare match F + ELC_EVENT_GPT6_COUNTER_OVERFLOW = (0x0DD), // Overflow + ELC_EVENT_GPT6_COUNTER_UNDERFLOW = (0x0DE), // Underflow + ELC_EVENT_GPT7_CAPTURE_COMPARE_A = (0x0E0), // Compare match A + ELC_EVENT_GPT7_CAPTURE_COMPARE_B = (0x0E1), // Compare match B + ELC_EVENT_GPT7_COMPARE_C = (0x0E2), // Compare match C + ELC_EVENT_GPT7_COMPARE_D = (0x0E3), // Compare match D + ELC_EVENT_GPT7_COMPARE_E = (0x0E4), // Compare match E + ELC_EVENT_GPT7_COMPARE_F = (0x0E5), // Compare match F + ELC_EVENT_GPT7_COUNTER_OVERFLOW = (0x0E6), // Overflow + ELC_EVENT_GPT7_COUNTER_UNDERFLOW = (0x0E7), // Underflow + ELC_EVENT_GPT8_CAPTURE_COMPARE_A = (0x0E9), // Compare match A + ELC_EVENT_GPT8_CAPTURE_COMPARE_B = (0x0EA), // Compare match B + ELC_EVENT_GPT8_COMPARE_C = (0x0EB), // Compare match C + ELC_EVENT_GPT8_COMPARE_D = (0x0EC), // Compare match D + ELC_EVENT_GPT8_COMPARE_E = (0x0ED), // Compare match E + ELC_EVENT_GPT8_COMPARE_F = (0x0EE), // Compare match F + ELC_EVENT_GPT8_COUNTER_OVERFLOW = (0x0EF), // Overflow + ELC_EVENT_GPT8_COUNTER_UNDERFLOW = (0x0F0), // Underflow + ELC_EVENT_GPT8_PC = (0x0F1), // Period count function finish + ELC_EVENT_GPT9_CAPTURE_COMPARE_A = (0x0F2), // Compare match A + ELC_EVENT_GPT9_CAPTURE_COMPARE_B = (0x0F3), // Compare match B + ELC_EVENT_GPT9_COMPARE_C = (0x0F4), // Compare match C + ELC_EVENT_GPT9_COMPARE_D = (0x0F5), // Compare match D + ELC_EVENT_GPT9_COMPARE_E = (0x0F6), // Compare match E + ELC_EVENT_GPT9_COMPARE_F = (0x0F7), // Compare match F + ELC_EVENT_GPT9_COUNTER_OVERFLOW = (0x0F8), // Overflow + ELC_EVENT_GPT9_COUNTER_UNDERFLOW = (0x0F9), // Underflow + ELC_EVENT_GPT9_PC = (0x0FA), // Period count function finish + ELC_EVENT_GPT10_CAPTURE_COMPARE_A = (0x0FB), // Compare match A + ELC_EVENT_GPT10_CAPTURE_COMPARE_B = (0x0FC), // Compare match B + ELC_EVENT_GPT10_COMPARE_C = (0x0FD), // Compare match C + ELC_EVENT_GPT10_COMPARE_D = (0x0FE), // Compare match D + ELC_EVENT_GPT10_COMPARE_E = (0x0FF), // Compare match E + ELC_EVENT_GPT10_COMPARE_F = (0x100), // Compare match F + ELC_EVENT_GPT10_COUNTER_OVERFLOW = (0x101), // Overflow + ELC_EVENT_GPT10_COUNTER_UNDERFLOW = (0x102), // Underflow + ELC_EVENT_GPT10_PC = (0x103), // Period count function finish + ELC_EVENT_GPT11_CAPTURE_COMPARE_A = (0x104), // Compare match A + ELC_EVENT_GPT11_CAPTURE_COMPARE_B = (0x105), // Compare match B + ELC_EVENT_GPT11_COMPARE_C = (0x106), // Compare match C + ELC_EVENT_GPT11_COMPARE_D = (0x107), // Compare match D + ELC_EVENT_GPT11_COMPARE_E = (0x108), // Compare match E + ELC_EVENT_GPT11_COMPARE_F = (0x109), // Compare match F + ELC_EVENT_GPT11_COUNTER_OVERFLOW = (0x10A), // Overflow + ELC_EVENT_GPT11_COUNTER_UNDERFLOW = (0x10B), // Underflow + ELC_EVENT_GPT12_CAPTURE_COMPARE_A = (0x10D), // Compare match A + ELC_EVENT_GPT12_CAPTURE_COMPARE_B = (0x10E), // Compare match B + ELC_EVENT_GPT12_COMPARE_C = (0x10F), // Compare match C + ELC_EVENT_GPT12_COMPARE_D = (0x110), // Compare match D + ELC_EVENT_GPT12_COMPARE_E = (0x111), // Compare match E + ELC_EVENT_GPT12_COMPARE_F = (0x112), // Compare match F + ELC_EVENT_GPT12_COUNTER_OVERFLOW = (0x113), // Overflow + ELC_EVENT_GPT12_COUNTER_UNDERFLOW = (0x114), // Underflow + ELC_EVENT_GPT13_CAPTURE_COMPARE_A = (0x116), // Compare match A + ELC_EVENT_GPT13_CAPTURE_COMPARE_B = (0x117), // Compare match B + ELC_EVENT_GPT13_COMPARE_C = (0x118), // Compare match C + ELC_EVENT_GPT13_COMPARE_D = (0x119), // Compare match D + ELC_EVENT_GPT13_COMPARE_E = (0x11A), // Compare match E + ELC_EVENT_GPT13_COMPARE_F = (0x11B), // Compare match F + ELC_EVENT_GPT13_COUNTER_OVERFLOW = (0x11C), // Overflow + ELC_EVENT_GPT13_COUNTER_UNDERFLOW = (0x11D), // Underflow + ELC_EVENT_EDMAC0_EINT = (0x120), // EDMAC 0 interrupt + ELC_EVENT_USBHS_FIFO_0 = (0x121), // DMA transfer request 0 + ELC_EVENT_USBHS_FIFO_1 = (0x122), // DMA transfer request 1 + ELC_EVENT_USBHS_USB_INT_RESUME = (0x123), // USBHS interr + ELC_EVENT_SCI0_RXI = (0x124), // Receive data full + ELC_EVENT_SCI0_TXI = (0x125), // Transmit data empty + ELC_EVENT_SCI0_TEI = (0x126), // Transmit end + ELC_EVENT_SCI0_ERI = (0x127), // Receive error + ELC_EVENT_SCI0_AED = (0x128), // Active edge detection + ELC_EVENT_SCI0_BFD = (0x129), // Break field detection + ELC_EVENT_SCI0_AM = (0x12A), // Address match event + ELC_EVENT_SCI1_RXI = (0x12B), // Receive data full + ELC_EVENT_SCI1_TXI = (0x12C), // Transmit data empty + ELC_EVENT_SCI1_TEI = (0x12D), // Transmit end + ELC_EVENT_SCI1_ERI = (0x12E), // Receive error + ELC_EVENT_SCI1_AED = (0x12F), // Active edge detection + ELC_EVENT_SCI1_BFD = (0x130), // Break field detection + ELC_EVENT_SCI1_AM = (0x131), // Address match event + ELC_EVENT_SCI2_RXI = (0x132), // Receive data full + ELC_EVENT_SCI2_TXI = (0x133), // Transmit data empty + ELC_EVENT_SCI2_TEI = (0x134), // Transmit end + ELC_EVENT_SCI2_ERI = (0x135), // Receive error + ELC_EVENT_SCI2_AM = (0x138), // Address match event + ELC_EVENT_SCI3_RXI = (0x139), // Receive data full + ELC_EVENT_SCI3_TXI = (0x13A), // Transmit data empty + ELC_EVENT_SCI3_TEI = (0x13B), // Transmit end + ELC_EVENT_SCI3_ERI = (0x13C), // Receive error + ELC_EVENT_SCI3_AM = (0x13F), // Address match event + ELC_EVENT_SCI4_RXI = (0x140), // Receive data full + ELC_EVENT_SCI4_TXI = (0x141), // Transmit data empty + ELC_EVENT_SCI4_TEI = (0x142), // Transmit end + ELC_EVENT_SCI4_ERI = (0x143), // Receive error + ELC_EVENT_SCI4_AM = (0x146), // Address match event + ELC_EVENT_SCI9_RXI = (0x163), // Receive data full + ELC_EVENT_SCI9_TXI = (0x164), // Transmit data empty + ELC_EVENT_SCI9_TEI = (0x165), // Transmit end + ELC_EVENT_SCI9_ERI = (0x166), // Receive error + ELC_EVENT_SCI9_AM = (0x169), // Address match event + ELC_EVENT_SPI0_RXI = (0x178), // Receive buffer full + ELC_EVENT_SPI0_TXI = (0x179), // Transmit buffer empty + ELC_EVENT_SPI0_IDLE = (0x17A), // Idle + ELC_EVENT_SPI0_ERI = (0x17B), // Error + ELC_EVENT_SPI0_TEI = (0x17C), // Transmission complete event + ELC_EVENT_SPI1_RXI = (0x17D), // Receive buffer full + ELC_EVENT_SPI1_TXI = (0x17E), // Transmit buffer empty + ELC_EVENT_SPI1_IDLE = (0x17F), // Idle + ELC_EVENT_SPI1_ERI = (0x180), // Error + ELC_EVENT_SPI1_TEI = (0x181), // Transmission complete event + ELC_EVENT_XSPI_ERR = (0x182), // xSPI Error + ELC_EVENT_XSPI_CMP = (0x183), // xSPI Complete + ELC_EVENT_CAN_RXF = (0x185), // Global recieve FIFO interrupt + ELC_EVENT_CAN_GLERR = (0x186), // Global error + ELC_EVENT_CAN0_DMAREQ0 = (0x187), // Channel rx fifio DMA request + ELC_EVENT_CAN0_DMAREQ1 = (0x188), // Channel rx fifio DMA request + ELC_EVENT_CAN1_DMAREQ0 = (0x18B), // Channel rx fifio DMA request + ELC_EVENT_CAN1_DMAREQ1 = (0x18C), // Channel rx fifio DMA request + ELC_EVENT_CAN0_TX = (0x18F), // Transmit interrupt + ELC_EVENT_CAN0_CHERR = (0x190), // Channel error + ELC_EVENT_CAN0_COMFRX = (0x191), // Common FIFO recieve interrupt + ELC_EVENT_CAN0_CF_DMAREQ = (0x192), // Channel DMA request + ELC_EVENT_CAN0_RXMB = (0x193), // RXMB interrupt lines + ELC_EVENT_CAN1_TX = (0x194), // Transmit interrupt + ELC_EVENT_CAN1_CHERR = (0x195), // Channel error + ELC_EVENT_CAN1_COMFRX = (0x196), // Common FIFO recieve + ELC_EVENT_CAN1_CF_DMAREQ = (0x197), // Channel DMA req + ELC_EVENT_CAN1_RXMB = (0x198), // RXMB interrupt lines + ELC_EVENT_CAN0_MRAM_ERI = (0x19B), // CANFD0 ECC error + ELC_EVENT_CAN1_MRAM_ERI = (0x19C), // CANFD1 ECC error + ELC_EVENT_I3C0_RESPONSE = (0x19D), // Response status buffer full + ELC_EVENT_I3C0_COMMAND = (0x19E), // Command buffer empty + ELC_EVENT_I3C0_IBI = (0x19F), // IBI status buffer full + ELC_EVENT_I3C0_RX = (0x1A0), // Receive + ELC_EVENT_I3C0_TX = (0x1A1), // Transmit + ELC_EVENT_I3C0_RCV_STATUS = (0x1A2), // Receive status buffer full + ELC_EVENT_I3C0_HRESP = (0x1A3), // High priority response queue full + ELC_EVENT_I3C0_HCMD = (0x1A4), // High priority command queue empty + ELC_EVENT_I3C0_HRX = (0x1A5), // High priority rx data buffer full + ELC_EVENT_I3C0_HTX = (0x1A6), // High priority tx data buffer empty + ELC_EVENT_I3C0_TEND = (0x1A7), // Transmit end + ELC_EVENT_I3C0_EEI = (0x1A8), // Error + ELC_EVENT_I3C0_STEV = (0x1A9), // Synchronous Timing + ELC_EVENT_I3C0_MREFOVF = (0x1AA), // MREF counter overflow + ELC_EVENT_I3C0_MREFCPT = (0x1AB), // MREF capture + ELC_EVENT_I3C0_AMEV = (0x1AC), // Additional master-initiated bus event + ELC_EVENT_I3C0_WU = (0x1AD), // Wake-up Condition Detection interrupt + ELC_EVENT_ADC0_SCAN_END = (0x1AE), // End of A/D scanning operation + ELC_EVENT_ADC0_SCAN_END_B = (0x1AF), // End of A/D scanning operation for Group B + ELC_EVENT_ADC0_WINDOW_A = (0x1B0), // Window A Compare match interrupt + ELC_EVENT_ADC0_WINDOW_B = (0x1B1), // Window B Compare match interrupt + ELC_EVENT_ADC0_COMPARE_MATCH = (0x1B2), // Compare match + ELC_EVENT_ADC0_COMPARE_MISMATCH = (0x1B3), // Compare mismatch + ELC_EVENT_ADC1_SCAN_END = (0x1B4), // End of A/D scanning operation + ELC_EVENT_ADC1_SCAN_END_B = (0x1B5), // End of A/D scanning operation for Group B + ELC_EVENT_ADC1_WINDOW_A = (0x1B6), // Window A Compare match interrupt + ELC_EVENT_ADC1_WINDOW_B = (0x1B7), // Window B Compare match interrupt + ELC_EVENT_ADC1_COMPARE_MATCH = (0x1B8), // Compare match + ELC_EVENT_ADC1_COMPARE_MISMATCH = (0x1B9), // Compare mismatch + ELC_EVENT_DOC_INT = (0x1BA), // Data operation circuit interrupt + ELC_EVENT_RSIP_TADI = (0x1BC), // RSIP tamper detect interrupt + ELC_EVENT_GLCDC_LINE_DETECT = (0x1CD), // Specified line + ELC_EVENT_GLCDC_UNDERFLOW_1 = (0x1CE), // Graphic 1 underflow + ELC_EVENT_GLCDC_UNDERFLOW_2 = (0x1CF), // Graphic 2 underflow + ELC_EVENT_DRW_INT = (0x1D0), // DRW interrupt + ELC_EVENT_MIPI_DSI_SEQ0 = (0x1D3), // Sequence operation channel 0 interrupt + ELC_EVENT_MIPI_DSI_SEQ1 = (0x1D4), // Sequence operation channel 1 interrupt + ELC_EVENT_MIPI_DSI_VIN1 = (0x1D5), // Video-Input operation channel1 interrupt + ELC_EVENT_MIPI_DSI_RCV = (0x1D6), // DSI packet receive interrupt + ELC_EVENT_MIPI_DSI_FERR = (0x1D7), // DSI fatal error interrupt + ELC_EVENT_MIPI_DSI_PPI = (0x1D8), // DSI D-PHY PPI interrupt + ELC_EVENT_CEU_CEUI = (0x1DA), // CEU interrupt +} elc_event_t; + +/** @} (end addtogroup BSP_MCU_RA8D1) */ + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h new file mode 100644 index 0000000000..d1d6ac70af --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_feature.h @@ -0,0 +1,454 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +#ifndef BSP_FEATURE_H +#define BSP_FEATURE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** The main oscillator drive value is based upon the oscillator frequency selected in the configuration */ +#define CGC_MOMCR_RESERVED_MASK (0x8U) /* RA8 has reserved bit in MOMCR that must be 1. */ +#if (BSP_CFG_XTAL_HZ > (24000000)) + #define CGC_MAINCLOCK_DRIVE (0x05U | CGC_MOMCR_RESERVED_MASK) +#elif (BSP_CFG_XTAL_HZ > (8000000)) && (BSP_CFG_XTAL_HZ <= (24000000)) + #define CGC_MAINCLOCK_DRIVE (0x03U | CGC_MOMCR_RESERVED_MASK) +#else + #define CGC_MAINCLOCK_DRIVE (0x00U | CGC_MOMCR_RESERVED_MASK) +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#define BSP_FEATURE_ACMPHS_MIN_WAIT_TIME_US (1U) // This comes from the Electrical Characteristics in the hardware manual. Rounding up to nearest microsecond. +#define BSP_FEATURE_ACMPHS_VREF (ACMPHS_REFERENCE_IVREF2) + +#define BSP_FEATURE_ACMPLP_HAS_COMPSEL_REGISTERS (0U) // Feature not available on this MCU +#define BSP_FEATURE_ACMPLP_MIN_WAIT_TIME_US (0U) // Feature not available on this MCU + +#define BSP_FEATURE_ADC_ADDITION_SUPPORTED (1U) // ADC Derived from RA8D1 +#define BSP_FEATURE_ADC_B_TSN_CALIBRATION32_MASK (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_B_TSN_SLOPE (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_B_UNIT_0_CHANNELS (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_B_UNIT_1_CHANNELS (0) // Feature not available on this MCU +#define BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE (0U) +#define BSP_FEATURE_ADC_CLOCK_SOURCE (FSP_PRIV_CLOCK_PCLKC) +#define BSP_FEATURE_ADC_GROUP_B_SENSORS_ALLOWED (1U) +#define BSP_FEATURE_ADC_HAS_ADBUF (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADPRC (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADRFMT (1U) +#define BSP_FEATURE_ADC_HAS_ADHVREFCNT (0U) +#define BSP_FEATURE_ADC_HAS_PGA (0U) +#define BSP_FEATURE_ADC_HAS_SAMPLE_HOLD_REG (1U) +#define BSP_FEATURE_ADC_HAS_VREFAMPCNT (0U) +#define BSP_FEATURE_ADC_MAX_RESOLUTION_BITS (12U) +#define BSP_FEATURE_ADC_SENSORS_EXCLUSIVE (0U) +#define BSP_FEATURE_ADC_SENSOR_MIN_SAMPLING_TIME (4150U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION32_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION32_MASK (0x0000FFFFU) +#define BSP_FEATURE_ADC_TSN_CALIBRATION_AVAILABLE (1U) // TSCDR is a 32-bit register on this MCU +#define BSP_FEATURE_ADC_TSN_CONTROL_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_SLOPE (4000) +#define BSP_FEATURE_ADC_UNIT_0_CHANNELS (0xF01FF) // 0 to 8, 16 to 19 +#define BSP_FEATURE_ADC_UNIT_1_CHANNELS (0x7F007F) // 0 to 6, 16 to 22 +#define BSP_FEATURE_ADC_VALID_UNIT_MASK (3U) + +#define BSP_FEATURE_AGT_AGTW_CHANNEL_COUNT (0) +#define BSP_FEATURE_AGT_AGT_CHANNEL_COUNT (2) +#define BSP_FEATURE_AGT_USE_AGTIOSEL_ALT (0) // Indicates use of AGTIOSEL_ALT instead of AGTIOSEL +#define BSP_FEATURE_AGT_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_BSP_FLASH_CACHE (1) +#define BSP_FEATURE_BSP_FLASH_CACHE_DISABLE_OPM (0U) +#define BSP_FEATURE_BSP_FLASH_PREFETCH_BUFFER (0) +#define BSP_FEATURE_BSP_HAS_CANFD_CLOCK (1U) +#define BSP_FEATURE_BSP_HAS_CEC_CLOCK (0) // Feature not available on this MCU +#define BSP_FEATURE_BSP_HAS_CLOCK_SUPPLY_TYPEB (0U) +#define BSP_FEATURE_BSP_HAS_CODE_SYSTEM_CACHE (0) +#define BSP_FEATURE_BSP_HAS_DCDC_REGULATOR (0U) +#define BSP_FEATURE_BSP_HAS_DTCM (1U) +#define BSP_FEATURE_BSP_HAS_GPT_CLOCK (0U) // Mutually exclusive with USB60 Clock +#define BSP_FEATURE_BSP_HAS_GRAPHICS_DOMAIN (1) +#define BSP_FEATURE_BSP_HAS_I3C_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_IIC_CLOCK (0U) +#define BSP_FEATURE_BSP_HAS_ITCM (1U) +#define BSP_FEATURE_BSP_HAS_LCD_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_OCTASPI_CLOCK (1U) +#define BSP_FEATURE_BSP_HAS_OFS2 (1U) +#define BSP_FEATURE_BSP_HAS_OFS3 (0U) +#define BSP_FEATURE_BSP_HAS_SCE5 (0) +#define BSP_FEATURE_BSP_HAS_SCE_ON_RA2 (0) // Feature not available on this MCU +#define BSP_FEATURE_BSP_HAS_SCISPI_CLOCK (0) +#define BSP_FEATURE_BSP_HAS_SCI_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_SDADC_CLOCK (0) +#define BSP_FEATURE_BSP_HAS_SECURITY_MPU (0U) +#define BSP_FEATURE_BSP_HAS_SPI_CLOCK (1) +#define BSP_FEATURE_BSP_HAS_SP_MON (0U) +#define BSP_FEATURE_BSP_HAS_SYRACCR (1U) +#define BSP_FEATURE_BSP_HAS_TZFSAR (0) +#define BSP_FEATURE_BSP_HAS_USB60_CLOCK_REQ (1U) // Feature available on this MCU +#define BSP_FEATURE_BSP_HAS_USBCKDIVCR (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_DIV (0U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_REQ (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL (1U) +#define BSP_FEATURE_BSP_HAS_USB_CLOCK_SEL_ALT (0U) +#define BSP_FEATURE_BSP_MCU_INFO_POINTER_LOCATION (0U) +#define BSP_FEATURE_BSP_MPU_REGION0_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_BSP_MSTP_GPT_MSTPD5_MAX_CH (0U) // If MSTPRE is present than the setting is not valid. +#define BSP_FEATURE_BSP_MSTP_HAS_MSTPCRE (1U) +#define BSP_FEATURE_BSP_NUM_PMSAR (16U) // 16 due to offset address change from PMSAR2 to PMSAR3 +#define BSP_FEATURE_BSP_OFS1_HOCOFRQ_MASK (0xFFFFF1FFU) +#define BSP_FEATURE_BSP_OFS1_HOCOFRQ_OFFSET (9U) +#define BSP_FEATURE_BSP_OFS_HAS_SECURITY_ATTRIBUTION (1) +#define BSP_FEATURE_BSP_OSIS_PADDING (0U) +#define BSP_FEATURE_BSP_POST_CRUNTIME_INIT (0U) +#define BSP_FEATURE_BSP_POWER_CHANGE_MSTP_REQUIRED (0U) +#define BSP_FEATURE_BSP_RESET_TRNG (0U) +#define BSP_FEATURE_BSP_SECURITY_PREINIT (0U) +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FIVE_ROM_WAITS (240000000U) // The maximum frequency allowed without having five ROM wait cycles (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_FOUR_ROM_WAITS (192000000U) // The maximum frequency allowed without having four ROM wait cycles (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_NO_RAM_WAITS (120000000U) +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_ONE_ROM_WAITS (48000000U) // The maximum frequency allowed without having one ROM wait cycle. +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_THREE_ROM_WAITS (144000000U) // The maximum frequency allowed without having three ROM wait cycles (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_SYS_CLOCK_FREQ_TWO_ROM_WAITS (96000000U) // The maximum frequency allowed without having two ROM wait cycles. (Set to zero if this is not an option). +#define BSP_FEATURE_BSP_UNIQUE_ID_OFFSET (0U) +#define BSP_FEATURE_BSP_UNIQUE_ID_POINTER (0x03008190U) +#define BSP_FEATURE_BSP_VBATT_HAS_VBTCR1_BPWSWSTP (0U) + +#define BSP_FEATURE_CANFD_FD_SUPPORT (1U) +#define BSP_FEATURE_CANFD_LITE (1U) +#define BSP_FEATURE_CANFD_NUM_CHANNELS (1U) +#define BSP_FEATURE_CANFD_NUM_INSTANCES (2U) + +#define BSP_FEATURE_CAN_CHECK_PCLKB_RATIO (0U) +#define BSP_FEATURE_CAN_CLOCK (0U) +#define BSP_FEATURE_CAN_MCLOCK_ONLY (0U) +#define BSP_FEATURE_CAN_NUM_CHANNELS (0U) // RA8D1 has CAN-FD + +#define BSP_FEATURE_CGC_EXECUTE_FROM_LOCO (0) +#define BSP_FEATURE_CGC_HAS_BCLK (1U) +#define BSP_FEATURE_CGC_HAS_CPUCLK (1U) +#define BSP_FEATURE_CGC_HAS_FCLK (1U) +#define BSP_FEATURE_CGC_HAS_FLDWAITR (0U) +#define BSP_FEATURE_CGC_HAS_FLL (1U) +#define BSP_FEATURE_CGC_HAS_FLWT (1U) +#define BSP_FEATURE_CGC_HAS_HOCOWTCR (0U) +#define BSP_FEATURE_CGC_HAS_MEMWAIT (0U) +#define BSP_FEATURE_CGC_HAS_PCLKA (1U) +#define BSP_FEATURE_CGC_HAS_PCLKB (1U) +#define BSP_FEATURE_CGC_HAS_PCLKC (1U) +#define BSP_FEATURE_CGC_HAS_PCLKD (1U) +#define BSP_FEATURE_CGC_HAS_PCLKE (1U) +#define BSP_FEATURE_CGC_HAS_PLL (1U) +#define BSP_FEATURE_CGC_HAS_PLL2 (1U) +#define BSP_FEATURE_CGC_HAS_SOPCCR (0U) +#define BSP_FEATURE_CGC_HAS_SOSC (1U) +#define BSP_FEATURE_CGC_HAS_SRAMPRCR2 (0U) // On the RA8D1 there is another register to enable write access for SRAMWTSC. +#define BSP_FEATURE_CGC_HAS_SRAMWTSC (1U) +#define BSP_FEATURE_CGC_HOCOSF_BEFORE_OPCCR (0U) +#define BSP_FEATURE_CGC_HOCOWTCR_64MHZ_ONLY (0U) +#define BSP_FEATURE_CGC_HOCOWTCR_SCI_SNOOZE_VALUE (0) +#define BSP_FEATURE_CGC_HOCOWTCR_VALUE (6U) +#define BSP_FEATURE_CGC_ICLK_DIV_RESET (BSP_CLOCKS_SYS_CLOCK_DIV_1) +#define BSP_FEATURE_CGC_LOCO_STABILIZATION_MAX_US (61U) +#define BSP_FEATURE_CGC_LOW_SPEED_MAX_FREQ_HZ (1000000U) // This MCU does have Low Speed Mode, up to 1MHz +#define BSP_FEATURE_CGC_LOW_VOLTAGE_MAX_FREQ_HZ (0U) // This MCU does not have Low Voltage Mode +#define BSP_FEATURE_CGC_MIDDLE_SPEED_MAX_FREQ_HZ (0U) // This MCU does not have Middle Speed Mode +#define BSP_FEATURE_CGC_MOCO_STABILIZATION_MAX_US (15U) +#define BSP_FEATURE_CGC_MODRV_MASK (0x1EU) +#define BSP_FEATURE_CGC_MODRV_SHIFT (R_SYSTEM_MOMCR_MODRV0_Pos) +#define BSP_FEATURE_CGC_PLL_OUT_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_P_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_Q_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_R_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL_OUT_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL_OUT_P_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL_OUT_Q_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL_OUT_R_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL_SRC_MAX_HZ (48000000U) +#define BSP_FEATURE_CGC_PLL_SRC_MIN_HZ (8000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_P_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_Q_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_R_MAX_HZ (480000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_P_MIN_HZ (40000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_Q_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL2_OUT_R_MIN_HZ (71000000U) +#define BSP_FEATURE_CGC_PLL2_SRC_MAX_HZ (48000000U) +#define BSP_FEATURE_CGC_PLL2_SRC_MIN_HZ (8000000U) + +#define BSP_FEATURE_CGC_PLLCCR_TYPE (3U) +#define BSP_FEATURE_CGC_PLLCCR_VCO_MAX_HZ (1440000000U) +#define BSP_FEATURE_CGC_PLLCCR_WAIT_US (0U) // No wait between setting PLLCCR and clearing PLLSTP +#define BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB (0) +#define BSP_FEATURE_CGC_SODRV_MASK (3U) +#define BSP_FEATURE_CGC_SODRV_SHIFT (0U) +#define BSP_FEATURE_CGC_SRAMPRCR_KW_OFFSET (8) +#define BSP_FEATURE_CGC_SRAMPRCR_KW_VALUE (0xA5) +#define BSP_FEATURE_CGC_STARTUP_OPCCR_MODE (0) +#define BSP_FEATURE_CGC_HAS_OSTDCSE (0) // Feature not available on this MCU +#define BSP_FEATURE_CGC_OSCILLATON_STOP_DETECT (1) +#define BSP_FEATURE_CGC_STARTUP_SCKDIVCR (0x00000000) +#define BSP_FEATURE_CGC_STARTUP_SCKDIVCR2 (0x00) +#define BSP_FEATURE_CGC_STARTUP_SCKSCR (0x01) + +#define BSP_FEATURE_CRYPTO_HAS_AES (1) +#define BSP_FEATURE_CRYPTO_HAS_AES_WRAPPED (1) +#define BSP_FEATURE_CRYPTO_HAS_CTR_DRBG (1) +#define BSP_FEATURE_CRYPTO_HAS_ECC (1) +#define BSP_FEATURE_CRYPTO_HAS_ECC_WRAPPED (1) +#define BSP_FEATURE_CRYPTO_HAS_HASH (1) +#define BSP_FEATURE_CRYPTO_HAS_NEW_PROCS (1) +#define BSP_FEATURE_CRYPTO_HAS_RSA (1) +#define BSP_FEATURE_CRYPTO_HAS_RSA_WRAPPED (1) +#define BSP_FEATURE_CRYPTO_AES_IP_VERSION (0) +#define BSP_FEATURE_CRYPTO_HAS_SCE5 (0) // Feature not available on this MCU +#define BSP_FEATURE_CRYPTO_HAS_SCE5B (0) +#define BSP_FEATURE_CRYPTO_HAS_SCE7 (0) +#define BSP_FEATURE_CRYPTO_HAS_SCE9 (0) +#define BSP_FEATURE_CRYPTO_HAS_RSIP7 (1) + +#define BSP_FEATURE_CTSU_CTSUCHAC_REGISTER_COUNT (0U) // Feature not available on this MCU +#define BSP_FEATURE_CTSU_CTSUCHTRC_REGISTER_COUNT (0U) // Feature not available on this MCU +#define BSP_FEATURE_CTSU_HAS_TXVSEL (0) // Feature not available on this MCU +#define BSP_FEATURE_CTSU_VERSION (0) // Feature not available on this MCU + +#define BSP_FEATURE_DAC8_HAS_CHARGEPUMP (0) // Feature not available on this MCU +#define BSP_FEATURE_DAC8_HAS_DA_AD_SYNCHRONIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_DAC8_HAS_REALTIME_MODE (0) // Feature not available on this MCU +#define BSP_FEATURE_DAC8_MAX_CHANNELS (0) // Feature not available on this MCU + +#define BSP_FEATURE_DAC_AD_SYNC_UNIT_MASK (0x02U) +#define BSP_FEATURE_DAC_HAS_CHARGEPUMP (0U) +#define BSP_FEATURE_DAC_HAS_DAVREFCR (0U) +#define BSP_FEATURE_DAC_HAS_DA_AD_SYNCHRONIZE (1U) +#define BSP_FEATURE_DAC_HAS_INTERNAL_OUTPUT (1U) +#define BSP_FEATURE_DAC_HAS_OUTPUT_AMPLIFIER (1U) +#define BSP_FEATURE_DAC_MAX_CHANNELS (2U) + +#define BSP_FEATURE_DMAC_HAS_DELSR (1U) +#define BSP_FEATURE_DMAC_HAS_REPEAT_BLOCK_MODE (1U) +#define BSP_FEATURE_DMAC_MAX_CHANNEL (8U) + +#define BSP_FEATURE_DOC_VERSION (2U) + +#define BSP_FEATURE_DWT_CYCCNT (1U) // RA8D1 has Data Watchpoint Cycle Count Register + +#define BSP_FEATURE_ELC_PERIPHERAL_MASK (0x4003FFFFU) // Positions of event link set registers (ELSRs) available on this MCU +#define BSP_FEATURE_ELC_VERSION (2U) + +#define BSP_FEATURE_ETHER_FIFO_DEPTH (0x0000070FU) +#define BSP_FEATURE_ETHER_MAX_CHANNELS (1U) +#define BSP_FEATURE_ETHER_SUPPORTS_TZ_SECURE (1U) // Feature available on this MCU + +#define BSP_FEATURE_FLASH_CODE_FLASH_START (0x02000000U) +#define BSP_FEATURE_FLASH_DATA_FLASH_START (0x27000000U) +#define BSP_FEATURE_FLASH_HP_CF_DUAL_BANK_START (0x02200000U) +#define BSP_FEATURE_FLASH_HP_CF_REGION0_BLOCK_SIZE (0x2000U) +#define BSP_FEATURE_FLASH_HP_CF_REGION0_SIZE (0x10000U) +#define BSP_FEATURE_FLASH_HP_CF_REGION1_BLOCK_SIZE (0x8000U) +#define BSP_FEATURE_FLASH_HP_CF_WRITE_SIZE (128U) +#define BSP_FEATURE_FLASH_HP_DF_BLOCK_SIZE (64U) +#define BSP_FEATURE_FLASH_HP_DF_WRITE_SIZE (4U) +#define BSP_FEATURE_FLASH_HP_HAS_FMEPROT (1) +#define BSP_FEATURE_FLASH_HP_SUPPORTS_DUAL_BANK (1) +#define BSP_FEATURE_FLASH_HP_VERSION (40U) +#define BSP_FEATURE_FLASH_LP_AWS_FAW_MASK (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_AWS_FAW_SHIFT (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_CF_BLOCK_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_CF_WRITE_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_DF_BLOCK_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_DF_WRITE_SIZE (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_FLASH_CLOCK_SRC (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_SUPPORTS_DUAL_BANK (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_LP_VERSION (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_SUPPORTS_ACCESS_WINDOW (0) // Feature not available on this MCU +#define BSP_FEATURE_FLASH_SUPPORTS_ID_CODE (0) // Feature not available on this MCU + +#define BSP_FEATURE_GPTEH_CHANNEL_MASK (0) + +#define BSP_FEATURE_GPTE_CHANNEL_MASK (0) + +#define BSP_FEATURE_GPT_32BIT_CHANNEL_MASK (0x00FFU) +#define BSP_FEATURE_GPT_CLOCK_DIVIDER_STEP_SIZE (2U) +#define BSP_FEATURE_GPT_CLOCK_DIVIDER_VALUE_7_9_VALID (0U) +#define BSP_FEATURE_GPT_EVENT_COUNT_CHANNEL_MASK (BSP_FEATURE_GPT_VALID_CHANNEL_MASK) +#define BSP_FEATURE_GPT_ODC_FRANGE_FREQ_MIN (115000000U) +#define BSP_FEATURE_GPT_ODC_FREQ_MAX (200000000U) +#define BSP_FEATURE_GPT_ODC_FREQ_MIN (80000000U) +#define BSP_FEATURE_GPT_ODC_VALID_CHANNEL_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_GPT_TPCS_SHIFT (0U) +#define BSP_FEATURE_GPT_VALID_CHANNEL_MASK (0x3FFFU) + +#define BSP_FEATURE_I3C_NUM_CHANNELS (1U) +#define BSP_FEATURE_I3C_MAX_DEV_COUNT (8U) +#define BSP_FEATURE_I3C_NTDTBP0_DEPTH (16U) +#define BSP_FEATURE_I3C_MSTP_OFFSET (4U) + +#define BSP_FEATURE_ICU_HAS_INTERRUPT_GROUPS (0U) +#define BSP_FEATURE_ICU_HAS_WUPEN1 (1) +#define BSP_FEATURE_ICU_IRQ_CHANNELS_MASK (0xFFFFU) +#define BSP_FEATURE_ICU_WUPEN_MASK (0x00007F08FF1DFFFFU) // Note there is another WUPEN1 register +#define BSP_FEATURE_ICU_FIXED_IELSR_COUNT (0U) + +#define BSP_FEATURE_IIC_BUS_FREE_TIME_MULTIPLIER (5U) +#define BSP_FEATURE_IIC_B_FAST_MODE_PLUS (0x01) +#define BSP_FEATURE_IIC_B_VALID_CHANNEL_MASK (0x01) +#define BSP_FEATURE_IIC_FAST_MODE_PLUS (0x03) +#define BSP_FEATURE_IIC_VALID_CHANNEL_MASK (0x03) +#define BSP_FEATURE_IIC_VERSION (0) // Feature not available on this MCU + +#define BSP_FEATURE_IOPORT_ELC_PORTS (0x001EU) +#define BSP_FEATURE_IOPORT_HAS_ETHERNET (0U) +#define BSP_FEATURE_IOPORT_VERSION (2U) + +#define BSP_FEATURE_IWDT_CLOCK_FREQUENCY (16384UL) +#define BSP_FEATURE_IWDT_SUPPORTS_REGISTER_START_MODE (1U) + +#define BSP_FEATURE_KINT_HAS_MSTP (0U) // Feature not available on this MCU + +#define BSP_FEATURE_LPM_CHANGE_MSTP_ARRAY (0U) +#define BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED (0U) +#define BSP_FEATURE_LPM_DPSIEGR_MASK (0x12FFFFU) +#define BSP_FEATURE_LPM_DPSIER_MASK (0xAF1FFFFFU) +#define BSP_FEATURE_LPM_HAS_DEEP_SLEEP (1U) +#define BSP_FEATURE_LPM_HAS_DEEP_STANDBY (1U) +#define BSP_FEATURE_LPM_HAS_DPSBYCR_DEEPCUT (0U) +#define BSP_FEATURE_LPM_HAS_DPSBYCR_DPSBY (0U) +#define BSP_FEATURE_LPM_HAS_DPSBYCR_SRKEEP (1U) +#define BSP_FEATURE_LPM_HAS_LDO_CONTROL (1U) +#define BSP_FEATURE_LPM_HAS_LPCSR (0U) +#define BSP_FEATURE_LPM_HAS_LPSCR (1U) +#define BSP_FEATURE_LPM_HAS_PDRAMSCR (1U) +#define BSP_FEATURE_LPM_HAS_SBYCR_OPE (1U) +#define BSP_FEATURE_LPM_HAS_SBYCR_SSBY (0U) +#define BSP_FEATURE_LPM_HAS_SNOOZE (0U) +#define BSP_FEATURE_LPM_HAS_SNZEDCR1 (0U) +#define BSP_FEATURE_LPM_HAS_SNZREQCR1 (0U) +#define BSP_FEATURE_LPM_HAS_STCONR (0U) +#define BSP_FEATURE_LPM_SBYCR_WRITE1_B14 (0U) +#define BSP_FEATURE_LPM_SNZEDCR_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_LPM_SNZREQCR_MASK (0U) // Feature not available on this MCU +#define BSP_FEATURE_LPM_STANDBY_MOCO_REQUIRED (1U) + +#define BSP_FEATURE_LVD_HAS_DIGITAL_FILTER (1U) +#define BSP_FEATURE_LVD_HAS_EXT_MONITOR (0U) +#define BSP_FEATURE_LVD_HAS_LVDLVLR (0U) +#define BSP_FEATURE_LVD_MONITOR_1_HI_THRESHOLD ((lvd_threshold_t) 0) // 4.29V +#define BSP_FEATURE_LVD_MONITOR_1_LOW_THRESHOLD ((lvd_threshold_t) 15) // 1.71V +#define BSP_FEATURE_LVD_MONITOR_2_HI_THRESHOLD ((lvd_threshold_t) 0) // 4.29V +#define BSP_FEATURE_LVD_MONITOR_2_LOW_THRESHOLD ((lvd_threshold_t) 15) // 1.71V +#define BSP_FEATURE_LVD_MONITOR_1_STABILIZATION_TIME_US (30U) // LVD1 operation stabilization time after LVD1 is enabled +#define BSP_FEATURE_LVD_MONITOR_2_STABILIZATION_TIME_US (30U) // LVD2 operation stabilization time after LVD2 is enabled +#define BSP_FEATURE_LVD_SUPPORT_RESET_ON_RISING_EDGE (1U) + +#define BSP_FEATURE_NUM_PLL1_OUTPUT_CLOCKS (3U) +#define BSP_FEATURE_NUM_PLL2_OUTPUT_CLOCKS (3U) + +#define BSP_FEATURE_OPAMP_BASE_ADDRESS (0U) +#define BSP_FEATURE_OPAMP_HAS_MIDDLE_SPEED (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_HAS_SWITCHES (0U) +#define BSP_FEATURE_OPAMP_HAS_THIRD_CHANNEL (0U) +#define BSP_FEATURE_OPAMP_MIN_WAIT_TIME_HS_US (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_MIN_WAIT_TIME_LP_US (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_MIN_WAIT_TIME_MS_US (0) // Feature not available on this MCU +#define BSP_FEATURE_OPAMP_TRIM_CAPABLE (0U) +#define BSP_FEATURE_OPAMP_VARIANT_CHANNEL_MASK (0U) + +#define BSP_FEATURE_OSPI_B_DEVICE_0_START_ADDRESS (0x80000000U) +#define BSP_FEATURE_OSPI_B_DEVICE_1_START_ADDRESS (0x90000000U) + +#define BSP_FEATURE_POEG_CHANNEL_MASK (0xFU) + +#define BSP_FEATURE_QSPI_DEVICE_START_ADDRESS (0x0U) + +#define BSP_FEATURE_RTC_IS_AVAILABLE (1U) +#define BSP_FEATURE_RTC_IS_IRTC (0U) +#define BSP_FEATURE_RTC_HAS_ROPSEL (0) // Feature not available on this MCU +#define BSP_FEATURE_RTC_HAS_TCEN (1U) +#define BSP_FEATURE_RTC_RTCCR_CHANNELS (3U) +#define BSP_FEATURE_SYSC_HAS_VBTICTLR (1U) + +#define BSP_FEATURE_SCI_ADDRESS_MATCH_CHANNELS (0U) +#define BSP_FEATURE_SCI_CHANNELS (0x21FU) +#define BSP_FEATURE_SCI_CLOCK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SCI_SPI_SCKSEL_VALUE (1U) +#define BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS (0x21FU) +#define BSP_FEATURE_SCI_UART_FIFO_CHANNELS (0x21FU) +#define BSP_FEATURE_SCI_UART_FIFO_DEPTH (16U) +#define BSP_FEATURE_SCI_VERSION (2U) +#define BSP_FEATURE_SCI_LIN_CHANNELS (0x3U) + +#define BSP_FEATURE_SDHI_CLOCK (FSP_PRIV_CLOCK_PCLKB) +#define BSP_FEATURE_SDHI_HAS_CARD_DETECTION (1U) +#define BSP_FEATURE_SDHI_MIN_CLOCK_DIVISION_SHIFT (0U) // 1 (2^0) is minimum division supported +#define BSP_FEATURE_SDHI_SUPPORTS_8_BIT_MMC (1U) +#define BSP_FEATURE_SDHI_VALID_CHANNEL_MASK (0x03U) + +#define BSP_FEATURE_SDRAM_START_ADDRESS (0x68000000U) + +#define BSP_FEATURE_SLCDC_HAS_8_TIME_SLICE (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_HAS_INTERNAL_VOLT_GEN (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_MAX_NUM_SEG (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_HAS_VL1SEL (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_CONTRAST_MAX_4BIAS (0) // Feature not available on this MCU +#define BSP_FEATURE_SLCDC_CONTRAST_MAX (0) // Feature not available on this MCU + +#define BSP_FEATURE_SPI_CLK (FSP_PRIV_CLOCK_PCLKA) +#define BSP_FEATURE_SPI_HAS_SPCR3 (1U) +#define BSP_FEATURE_SPI_HAS_SSL_LEVEL_KEEP (1U) +#define BSP_FEATURE_SPI_MAX_CHANNEL (2U) +#define BSP_FEATURE_SPI_SSL_LEVEL_KEEP_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_SRAM_SRAMWTSC_WAIT_CYCLE_ENABLE (1) + +#define BSP_FEATURE_SSI_FIFO_NUM_STAGES (32U) +#define BSP_FEATURE_SSI_VALID_CHANNEL_MASK (3U) + +#define BSP_FEATURE_TFU_SUPPORTED (0U) // Trigonometric Function Unit (TFU) available on this MCU + +#define BSP_FEATURE_TRNG_HAS_MODULE_STOP (0U) +#define BSP_FEATURE_TZ_NS_OFFSET (1U << 28U) +#define BSP_FEATURE_TZ_HAS_TRUSTZONE (1U) +#define BSP_FEATURE_TZ_HAS_DLM (1U) +#define BSP_FEATURE_TZ_VERSION (2U) + +#define BSP_FEATURE_ULPT_MAX_CHANNEL_NUM (2) +#define BSP_FEATURE_ULPT_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_CRC_HAS_SNOOP (1U) +#define BSP_FEATURE_CRC_SNOOP_ADDRESS_TYPE_TDR (0x4U) + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h new file mode 100644 index 0000000000..16f1bf4536 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BSP_MCU + * @defgroup BSP_MCU_RA8D1 RA8D1 + * @includedoc config_bsp_ra8d1_fsp.html + * @{ + **********************************************************************************************************************/ + +/** @} (end defgroup BSP_MCU_RA8D1) */ + +#ifndef BSP_MCU_INFO_H +#define BSP_MCU_INFO_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP MCU Specific Includes. */ +#include "bsp_elc.h" +#include "bsp_feature.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef elc_event_t bsp_interrupt_event_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h new file mode 100644 index 0000000000..9aeeb457c8 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h @@ -0,0 +1,97 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU_RA8D1 + * @{ + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU_RA8D1) */ + +#ifndef BSP_OVERRIDE_H +#define BSP_OVERRIDE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Define overrides required for this MCU. */ + +#define BSP_OVERRIDE_ELC_PERIPHERAL_T +#define BSP_OVERRIDE_GROUP_IRQ_T + +/* Override definitions. */ + +#define ELC_PERIPHERAL_NUM (30U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +typedef enum e_elc_peripheral +{ + ELC_PERIPHERAL_GPT_A = (0), + ELC_PERIPHERAL_GPT_B = (1), + ELC_PERIPHERAL_GPT_C = (2), + ELC_PERIPHERAL_GPT_D = (3), + ELC_PERIPHERAL_GPT_E = (4), + ELC_PERIPHERAL_GPT_F = (5), + ELC_PERIPHERAL_GPT_G = (6), + ELC_PERIPHERAL_GPT_H = (7), + ELC_PERIPHERAL_ADC0 = (8), + ELC_PERIPHERAL_ADC0_B = (9), + ELC_PERIPHERAL_ADC1 = (10), + ELC_PERIPHERAL_ADC1_B = (11), + ELC_PERIPHERAL_DAC0 = (12), + ELC_PERIPHERAL_DAC1 = (13), + ELC_PERIPHERAL_IOPORT1 = (14), + ELC_PERIPHERAL_IOPORT2 = (15), + ELC_PERIPHERAL_IOPORT3 = (16), + ELC_PERIPHERAL_IOPORT4 = (17), + ELC_PERIPHERAL_I3C = (30), +} elc_peripheral_t; + +/* Which interrupts can have callbacks registered. */ +typedef enum e_bsp_grp_irq +{ + BSP_GRP_IRQ_IWDT_ERROR = 0, ///< IWDT underflow/refresh error has occurred + BSP_GRP_IRQ_WDT_ERROR = 1, ///< WDT underflow/refresh error has occurred + BSP_GRP_IRQ_LVD1 = 2, ///< Voltage monitoring 1 interrupt + BSP_GRP_IRQ_LVD2 = 3, ///< Voltage monitoring 2 interrupt + BSP_GRP_IRQ_OSC_STOP_DETECT = 6, ///< Oscillation stop is detected + BSP_GRP_IRQ_NMI_PIN = 7, ///< NMI Pin interrupt + BSP_GRP_IRQ_MPU_BUS_TZF = 12, ///< MPU Bus or TrustZone Filter Error + BSP_GRP_IRQ_COMMON_MEMORY = 13, ///< SRAM ECC or SRAM Parity Error + BSP_GRP_IRQ_LOCKUP = 15, ///< LockUp Error +} bsp_grp_irq_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/r_ioport/r_ioport.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/r_ioport/r_ioport.c new file mode 100644 index 0000000000..7a8cd8a520 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/r_ioport/r_ioport.c @@ -0,0 +1,922 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include +#include "bsp_api.h" +#include "r_ioport.h" +#include "r_ioport_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* "PORT" in ASCII, used to determine if the module is open */ +#define IOPORT_OPEN (0x504F5254U) +#define IOPORT_CLOSED (0x00000000U) + +/* Mask to get PSEL bitfield from PFS register. */ +#define BSP_PRV_PFS_PSEL_MASK (0x1F000000UL) + +/* Shift to get pin 0 on a package in extended data. */ +#define IOPORT_PRV_EXISTS_B0_SHIFT (16UL) + +/* Mask to determine if any pins on port exist on this package. */ +#define IOPORT_PRV_PORT_EXISTS_MASK (0xFFFF0000U) + +/* Shift to get port in bsp_io_port_t and bsp_io_port_pin_t enums. */ +#define IOPORT_PRV_PORT_OFFSET (8U) + +#define IOPORT_PRV_PORT_BITS (0xFF00U) +#define IOPORT_PRV_PIN_BITS (0x00FFU) + +#define IOPORT_PRV_PCNTR_OFFSET 0x00000020U + +#define IOPORT_PRV_PERIPHERAL_FUNCTION (1U << 16) +#define IOPORT_PRV_CLEAR_BITS_MASK (0x1F01FCD5U) ///< Zero bits in mask must be written as zero to PFS register + +#define IOPORT_PRV_8BIT_MASK (0xFFU) +#define IOPORT_PRV_16BIT_MASK (0xFFFFU) +#define IOPORT_PRV_UPPER_16BIT_MASK (0xFFFF0000U) +#define IOPORT_PRV_PFENET_MASK (0x30U) + +#define IOPORT_PRV_SET_PWPR_PFSWE (0x40U) +#define IOPORT_PRV_SET_PWPR_BOWI (0x80U) + +#define IOPORT_PRV_PORT_ADDRESS(port_number) ((uint32_t) (R_PORT1 - R_PORT0) * (port_number) + R_PORT0) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +static void r_ioport_pins_config(const ioport_cfg_t * p_cfg); + +static void r_ioport_hw_pin_event_output_data_write(bsp_io_port_t port, + ioport_size_t set_value, + ioport_size_t reset_value, + bsp_io_level_t pin_level); + +static void r_ioport_pfs_write(bsp_io_port_pin_t pin, uint32_t value); + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN +static void bsp_vbatt_init(ioport_cfg_t const * const p_pin_cfg); // Used internally by BSP + +#endif + +/*********************************************************************************************************************** + * Private global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Global Variables + **********************************************************************************************************************/ + +/* IOPort Implementation of IOPort Driver */ +const ioport_api_t g_ioport_on_ioport = +{ + .open = R_IOPORT_Open, + .close = R_IOPORT_Close, + .pinsCfg = R_IOPORT_PinsCfg, + .pinCfg = R_IOPORT_PinCfg, + .pinEventInputRead = R_IOPORT_PinEventInputRead, + .pinEventOutputWrite = R_IOPORT_PinEventOutputWrite, + .pinRead = R_IOPORT_PinRead, + .pinWrite = R_IOPORT_PinWrite, + .portDirectionSet = R_IOPORT_PortDirectionSet, + .portEventInputRead = R_IOPORT_PortEventInputRead, + .portEventOutputWrite = R_IOPORT_PortEventOutputWrite, + .portRead = R_IOPORT_PortRead, + .portWrite = R_IOPORT_PortWrite, +}; + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN +static const bsp_io_port_pin_t g_vbatt_pins_input[] = +{ + BSP_IO_PORT_04_PIN_02, ///< Associated with VBTICTLR->VCH0INEN + BSP_IO_PORT_04_PIN_03, ///< Associated with VBTICTLR->VCH1INEN + BSP_IO_PORT_04_PIN_04 ///< Associated with VBTICTLR->VCH2INEN +}; +#endif + +/*******************************************************************************************************************//** + * @addtogroup IOPORT + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Initializes internal driver data, then calls pin configuration function to configure pins. + * + * @retval FSP_SUCCESS Pin configuration data written to PFS register(s) + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_ALREADY_OPEN Module is already open. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_Open (ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg) +{ + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ASSERT(NULL != p_cfg); + FSP_ASSERT(NULL != p_cfg->p_pin_cfg_data || 0 == p_cfg->number_of_pins); + FSP_ERROR_RETURN(IOPORT_OPEN != p_instance_ctrl->open, FSP_ERR_ALREADY_OPEN); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Set driver status to open */ + p_instance_ctrl->open = IOPORT_OPEN; + + r_ioport_pins_config(p_cfg); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Resets IOPORT registers. Implements @ref ioport_api_t::close + * + * @retval FSP_SUCCESS The IOPORT was successfully uninitialized + * @retval FSP_ERR_ASSERTION p_ctrl was NULL + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_Close (ioport_ctrl_t * const p_ctrl) +{ + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Set state to closed */ + p_instance_ctrl->open = IOPORT_CLOSED; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Configures the functions of multiple pins by loading configuration data into pin PFS registers. + * Implements @ref ioport_api_t::pinsCfg. + * + * This function initializes the supplied list of PmnPFS registers with the supplied values. This data can be generated + * by the Pins tab of the RA Configuration editor or manually by the developer. Different pin configurations can be + * loaded for different situations such as low power modes and testing. + * + * @retval FSP_SUCCESS Pin configuration data written to PFS register(s) + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinsCfg (ioport_ctrl_t * const p_ctrl, const ioport_cfg_t * p_cfg) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_cfg); + FSP_ASSERT(NULL != p_cfg->p_pin_cfg_data); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + r_ioport_pins_config(p_cfg); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Configures the settings of a pin. Implements @ref ioport_api_t::pinCfg. + * + * @retval FSP_SUCCESS Pin configured + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different pins. + * This function will change the configuration of the pin with the new configuration. For example it is not possible + * with this function to change the drive strength of a pin while leaving all the other pin settings unchanged. To + * achieve this the original settings with the required change will need to be written using this function. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinCfg (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, uint32_t cfg) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN + + /* Create temporary structure for handling VBATT pins. */ + ioport_cfg_t temp_cfg; + ioport_pin_cfg_t temp_pin_cfg; + + temp_pin_cfg.pin = pin; + temp_pin_cfg.pin_cfg = cfg; + + temp_cfg.number_of_pins = 1U; + temp_cfg.p_pin_cfg_data = &temp_pin_cfg; + + /* Handle any VBATT domain pin configuration. */ + bsp_vbatt_init(&temp_cfg); +#endif + + R_BSP_PinAccessEnable(); + + r_ioport_pfs_write(pin, cfg); + + R_BSP_PinAccessDisable(); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the level on a pin. Implements @ref ioport_api_t::pinRead. + * + * @retval FSP_SUCCESS Pin read + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + * @note This function is re-entrant for different pins. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_value) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_pin_value); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + *p_pin_value = (bsp_io_level_t) R_BSP_PinRead(pin); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the value on an IO port. Implements @ref ioport_api_t::portRead. + * + * The specified port will be read, and the levels for all the pins will be returned. + * Each bit in the returned value corresponds to a pin on the port. For example, bit 7 corresponds + * to pin 7, bit 6 to pin 6, and so on. + * + * @retval FSP_SUCCESS Port read + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + * @note This function is re-entrant for different ports. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_port_value) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_port_value); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of PCNTR2 register for the specified port */ + *p_port_value = p_ioport_regs->PCNTR2 & IOPORT_PRV_16BIT_MASK; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Writes to multiple pins on a port. Implements @ref ioport_api_t::portWrite. + * + * The input value will be written to the specified port. Each bit in the value parameter corresponds to a bit + * on the port. For example, bit 7 corresponds to pin 7, bit 6 to pin 6, and so on. + * Each bit in the mask parameter corresponds to a pin on the port. + * + * Only the bits with the corresponding bit in the mask value set will be updated. + * For example, value = 0xFFFF, mask = 0x0003 results in only bits 0 and 1 being updated. + * + * @retval FSP_SUCCESS Port written to + * @retval FSP_ERR_INVALID_ARGUMENT The port and/or mask not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointerd + * + * @note This function is re-entrant for different ports. This function makes use of the PCNTR3 register to atomically + * modify the levels on the specified pins on a port. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t value, ioport_size_t mask) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(mask > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + ioport_size_t setbits; + ioport_size_t clrbits; + + /* High bits */ + setbits = value & mask; + + /* Low bits */ + /* Cast to ensure size */ + clrbits = (ioport_size_t) ((~value) & mask); + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* PCNTR3 register: lower word = set data, upper word = reset_data */ + p_ioport_regs->PCNTR3 = (uint32_t) (((uint32_t) clrbits << 16) | setbits); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Sets a pin's output either high or low. Implements @ref ioport_api_t::pinWrite. + * + * @retval FSP_SUCCESS Pin written to + * @retval FSP_ERR_INVALID_ARGUMENT The pin and/or level not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opene + * @retval FSP_ERR_ASSERTION NULL pointerd + * + * @note This function is re-entrant for different pins. This function makes use of the PCNTR3 register to atomically + * modify the level on the specified pin on a port. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t level) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(level <= BSP_IO_LEVEL_HIGH, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + ioport_size_t setbits = 0U; + ioport_size_t clrbits = 0U; + bsp_io_port_t port = (bsp_io_port_t) (IOPORT_PRV_PORT_BITS & (ioport_size_t) pin); + + ioport_size_t shift = IOPORT_PRV_PIN_BITS & (ioport_size_t) pin; + ioport_size_t pin_mask = (ioport_size_t) (1U << shift); + + if (BSP_IO_LEVEL_LOW == level) + { + clrbits = pin_mask; + } + else + { + setbits = pin_mask; + } + + /* PCNTR register is updated instead of using PFS as access is atomic and PFS requires seperate enable/disable + * using PWPR register */ + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* PCNTR3 register: lower word = set data, upper word = reset_data */ + p_ioport_regs->PCNTR3 = (uint32_t) (((uint32_t) clrbits << 16) | setbits); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Sets the direction of individual pins on a port. Implements @ref ioport_api_t::portDirectionSet(). + * + * Multiple pins on a port can be set to inputs or outputs at once. + * Each bit in the mask parameter corresponds to a pin on the port. For example, bit 7 corresponds to + * pin 7, bit 6 to pin 6, and so on. If a bit is set to 1 then the corresponding pin will be changed to + * an input or an output as specified by the direction values. If a mask bit is set to 0 then the direction of + * the pin will not be changed. + * + * @retval FSP_SUCCESS Port direction updated + * @retval FSP_ERR_INVALID_ARGUMENT The port and/or mask not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different ports. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortDirectionSet (ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t direction_values, + ioport_size_t mask) +{ + uint32_t orig_value; + uint32_t set_bits; + uint32_t clr_bits; + uint32_t write_value; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(mask > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of PCNTR1 register for the specified port */ + orig_value = p_ioport_regs->PCNTR1; + + /* High bits */ + set_bits = direction_values & mask; + + /* Low bits */ + /* Cast to ensure size */ + clr_bits = (uint32_t) ((~direction_values) & mask); + + /* New value to write to port direction register */ + write_value = orig_value; + write_value |= set_bits; + + /* Clear bits as needed */ + write_value &= ~clr_bits; + + p_ioport_regs->PCNTR1 = write_value; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the value of the event input data. Implements @ref ioport_api_t::portEventInputRead(). + * + * The event input data for the port will be read. Each bit in the returned value corresponds to a pin on the port. + * For example, bit 7 corresponds to pin 7, bit 6 to pin 6, and so on. + * + * The port event data is captured in response to a trigger from the ELC. This function enables this data to be read. + * Using the event system allows the captured data to be stored when it occurs and then read back at a later time. + * + * @retval FSP_SUCCESS Port read + * @retval FSP_ERR_INVALID_ARGUMENT Port not a valid ELC port + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * + * @note This function is re-entrant for different ports. + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortEventInputRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_event_data) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_event_data); + uint32_t port_number = port >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(port >> IOPORT_PRV_PORT_OFFSET & IOPORT_PRV_8BIT_MASK); + + /* Read current value of EIDR value from PCNTR2 register for the specified port */ + *p_event_data = p_ioport_regs->PCNTR2_b.EIDR; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the value of the event input data of a specific pin. Implements @ref ioport_api_t::pinEventInputRead. + * + * The pin event data is captured in response to a trigger from the ELC. This function enables this data to be read. + * Using the event system allows the captured data to be stored when it occurs and then read back at a later time. + * + * @retval FSP_SUCCESS Pin read + * @retval FSP_ERR_ASSERTION NULL pointer + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_INVALID_ARGUMENT Port is not valid ELC PORT. + * + * @note This function is re-entrant. + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinEventInputRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t * p_pin_event) +{ + ioport_size_t portvalue; + ioport_size_t mask; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ASSERT(NULL != p_pin_event); + uint32_t port_number = pin >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((pin >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of EIDR value from PCNTR2 register for the specified port */ + portvalue = p_ioport_regs->PCNTR2_b.EIDR; + mask = (ioport_size_t) (1U << (IOPORT_PRV_PIN_BITS & (bsp_io_port_t) pin)); + + if ((portvalue & mask) == mask) + { + *p_pin_event = BSP_IO_LEVEL_HIGH; + } + else + { + *p_pin_event = BSP_IO_LEVEL_LOW; + } + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * This function writes the set and reset event output data for a port. Implements + * @ref ioport_api_t::portEventOutputWrite. + * + * Using the event system enables a port state to be stored by this function in advance of being output on the port. + * The output to the port will occur when the ELC event occurs. + * + * The input value will be written to the specified port when an ELC event configured for that port occurs. + * Each bit in the value parameter corresponds to a bit on the port. For example, bit 7 corresponds to pin 7, + * bit 6 to pin 6, and so on. Each bit in the mask parameter corresponds to a pin on the port. + * + * @retval FSP_SUCCESS Port event data written + * @retval FSP_ERR_INVALID_ARGUMENT Port or Mask not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different ports. + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortEventOutputWrite (ioport_ctrl_t * const p_ctrl, + bsp_io_port_t port, + ioport_size_t event_data, + ioport_size_t mask_value) +{ + ioport_size_t set_bits; + ioport_size_t reset_bits; + +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN(mask_value > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); + uint32_t port_number = port >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + set_bits = event_data & mask_value; + + /* Cast to ensure size */ + reset_bits = (ioport_size_t) ((~event_data) & mask_value); + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* PCNTR4 register: lower word = set data, upper word = reset_data */ + p_ioport_regs->PCNTR4 = (uint32_t) (((uint32_t) reset_bits << 16) | set_bits); + + return FSP_SUCCESS; +} + +/**********************************************************************************************************************//** + * This function writes the event output data value to a pin. Implements @ref ioport_api_t::pinEventOutputWrite. + * + * Using the event system enables a pin state to be stored by this function in advance of being output on the pin. + * The output to the pin will occur when the ELC event occurs. + * + * @retval FSP_SUCCESS Pin event data written + * @retval FSP_ERR_INVALID_ARGUMENT Port or Pin or value not valid + * @retval FSP_ERR_NOT_OPEN The module has not been opened + * @retval FSP_ERR_ASSERTION NULL pointer + * + * @note This function is re-entrant for different ports. + * + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinEventOutputWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value) +{ +#if (1 == IOPORT_CFG_PARAM_CHECKING_ENABLE) + ioport_instance_ctrl_t * p_instance_ctrl = (ioport_instance_ctrl_t *) p_ctrl; + FSP_ASSERT(NULL != p_instance_ctrl); + FSP_ERROR_RETURN(IOPORT_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + FSP_ERROR_RETURN((pin_value == BSP_IO_LEVEL_HIGH) || (pin_value == BSP_IO_LEVEL_LOW), FSP_ERR_INVALID_ARGUMENT); + uint32_t port_number = pin >> IOPORT_PRV_PORT_OFFSET; + FSP_ERROR_RETURN((BSP_FEATURE_IOPORT_ELC_PORTS & (1 << port_number)), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + ioport_size_t set_bits; + ioport_size_t reset_bits; + bsp_io_port_t port; + uint16_t pin_to_port; + + /* Cast to ensure correct conversion of parameter. */ + pin_to_port = (uint16_t) pin; + pin_to_port = pin_to_port & (uint16_t) IOPORT_PRV_PORT_BITS; + port = (bsp_io_port_t) pin_to_port; + set_bits = (ioport_size_t) 0; + reset_bits = (ioport_size_t) 0; + + if (BSP_IO_LEVEL_HIGH == pin_value) + { + /* Cast to ensure size */ + set_bits = (ioport_size_t) (1U << ((ioport_size_t) pin & IOPORT_PRV_PIN_BITS)); + } + else + { + /* Cast to ensure size */ + reset_bits = (ioport_size_t) (1U << ((ioport_size_t) pin & IOPORT_PRV_PIN_BITS)); + } + + r_ioport_hw_pin_event_output_data_write(port, set_bits, reset_bits, pin_value); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * @} (end addtogroup IOPORT) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Configures pins. + * + * @param[in] p_cfg Pin configuration data + **********************************************************************************************************************/ +void r_ioport_pins_config (const ioport_cfg_t * p_cfg) +{ +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN + + /* Handle any VBATT domain pin configuration. */ + bsp_vbatt_init(p_cfg); +#endif + + uint16_t pin_count; + ioport_cfg_t * p_pin_data; + + p_pin_data = (ioport_cfg_t *) p_cfg; + + R_BSP_PinAccessEnable(); // Protect PWPR from re-entrancy + + for (pin_count = 0U; pin_count < p_pin_data->number_of_pins; pin_count++) + { + r_ioport_pfs_write(p_pin_data->p_pin_cfg_data[pin_count].pin, p_pin_data->p_pin_cfg_data[pin_count].pin_cfg); + } + + R_BSP_PinAccessDisable(); +} + +/*******************************************************************************************************************//** + * Writes the set and clear values on a pin of the port when an ELC event occurs. This allows accurate timing of + * pin output level. + * + * @param[in] port Port to read event data + * @param[in] set_value Bit in the port to set high (1 = that bit will be set high) + * @param[in] reset_value Bit in the port to clear low (1 = that bit will be cleared low) + * @param[in] pin_level Event data for pin + **********************************************************************************************************************/ +static void r_ioport_hw_pin_event_output_data_write (bsp_io_port_t port, + ioport_size_t set_value, + ioport_size_t reset_value, + bsp_io_level_t pin_level) +{ + uint32_t port_value = 0; + + /* Get the port address */ + R_PORT0_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS((port >> IOPORT_PRV_PORT_OFFSET) & IOPORT_PRV_8BIT_MASK); + + /* Read current value of PCNTR4 register */ + port_value = p_ioport_regs->PCNTR4; + + if (BSP_IO_LEVEL_HIGH == pin_level) + { + /* set value contains the bit to be set high (bit mask) */ + port_value |= (uint32_t) (set_value); + + /* reset value contains the mask to clear the corresponding bit in EOSR because both EOSR and EORR + * bit of a particular pin should not be high at the same time */ + port_value &= (((uint32_t) reset_value << 16) | IOPORT_PRV_16BIT_MASK); + } + else + { + /* reset_value contains the bit to be cleared low */ + port_value |= (uint32_t) reset_value << 16; + + /* set value contains the mask to clear the corresponding bit in EOSR because both EOSR and EORR bit of a + * particular pin should not be high at the same time */ + port_value &= (uint32_t) ((set_value | IOPORT_PRV_UPPER_16BIT_MASK)); + } + + p_ioport_regs->PCNTR4 = port_value; +} + +/*******************************************************************************************************************//** + * Writes to the specified pin's PFS register + * + * @param[in] pin Pin to write PFS data for + * @param[in] value Value to be written to the PFS register + * + **********************************************************************************************************************/ +static void r_ioport_pfs_write (bsp_io_port_pin_t pin, uint32_t value) +{ + /* PMR bits should be cleared before specifying PSEL. Reference section "20.7 Notes on the PmnPFS Register Setting" + * in the RA6M3 manual R01UH0886EJ0100. */ + if ((value & IOPORT_PRV_PERIPHERAL_FUNCTION) > 0) + { + /* Clear PMR */ + R_PFS->PORT[pin >> IOPORT_PRV_PORT_OFFSET].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS_b.PMR = 0; + + /* New config with PMR = 0 */ + R_PFS->PORT[pin >> IOPORT_PRV_PORT_OFFSET].PIN[pin & + BSP_IO_PRV_8BIT_MASK].PmnPFS = + (value & ~((uint32_t) IOPORT_PRV_PERIPHERAL_FUNCTION)); + } + + /* Write configuration */ + R_PFS->PORT[pin >> IOPORT_PRV_PORT_OFFSET].PIN[pin & BSP_IO_PRV_8BIT_MASK].PmnPFS = value; +} + +#if BSP_FEATURE_SYSC_HAS_VBTICTLR || BSP_FEATURE_RTC_HAS_TCEN + +/*******************************************************************************************************************//** + * @brief Initializes VBTICTLR register based on pin configuration. + * + * The VBTICTLR register may need to be modified based on the project's pin configuration. There is a set of pins that + * needs to be checked. If one of these pins is found in the pin configuration table then it will be tested to see if + * the appropriate VBTICTLR bit needs to be set or cleared. If one of the pins that is being searched for is not found + * then the accompanying VBTICTLR bit is left as-is. + **********************************************************************************************************************/ +static void bsp_vbatt_init (ioport_cfg_t const * const p_pin_cfg) +{ + uint32_t pin_index; + uint32_t vbatt_index; + + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + R_SYSTEM_Type * p_system = R_SYSTEM; + #endif + #if BSP_FEATURE_RTC_HAS_TCEN + R_RTC_Type * p_rtc = R_RTC; + #endif + + #if BSP_TZ_SECURE_BUILD && BSP_FEATURE_TZ_NS_OFFSET > 0 + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + if (1 == R_SYSTEM->BBFSAR_b.NONSEC2) + { + /* If security attribution of VBTICTLR is set to non-secure, then use the non-secure alias. */ + p_system = (R_SYSTEM_Type *) ((uint32_t) p_system | BSP_FEATURE_TZ_NS_OFFSET); + } + #endif + + #if BSP_FEATURE_RTC_HAS_TCEN + if (1 == R_PSCU->PSARE_b.PSARE2) + { + /* If security attribution of RTC is set to non-secure, then use the non-secure alias. */ + p_rtc = (R_RTC_Type *) ((uint32_t) p_rtc | BSP_FEATURE_TZ_NS_OFFSET); + } + #endif + #endif + + /* Must loop over all pins as pin configuration table is unordered. */ + for (pin_index = 0U; pin_index < p_pin_cfg->number_of_pins; pin_index++) + { + /* Loop over VBATT input pins. */ + for (vbatt_index = 0U; + vbatt_index < (sizeof(g_vbatt_pins_input) / sizeof(g_vbatt_pins_input[0])); + vbatt_index++) + { + if (p_pin_cfg->p_pin_cfg_data[pin_index].pin == g_vbatt_pins_input[vbatt_index]) + { + /* Get PSEL value for pin. */ + uint32_t pfs_psel_value = p_pin_cfg->p_pin_cfg_data[pin_index].pin_cfg & BSP_PRV_PFS_PSEL_MASK; + + /* Check if pin is being used for RTC or AGT use. */ + if ((IOPORT_PERIPHERAL_AGT == pfs_psel_value) || (IOPORT_PERIPHERAL_CLKOUT_COMP_RTC == pfs_psel_value)) + { + /* Bit should be set to 1. */ + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_SYSTEM->BBFSAR_b.NONSEC2) + { + /* Do nothing: non secure build can't configure secure VBTICTLR register. */ + } + else + #endif + if (0 == (p_system->VBTICTLR & (uint8_t) (1U << vbatt_index))) + { + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + p_system->VBTICTLR |= (uint8_t) (1U << vbatt_index); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + } + else + { + /* Do nothing: it is already enabled. */ + } + #endif + #if BSP_FEATURE_RTC_HAS_TCEN + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_PSCU->PSARE_b.PSARE2) + { + /* Do nothing: non secure build can't configure secure RTC registers. */ + } + else + #endif + { + if (0 == p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN) + { + p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN = 1; + R_BSP_SoftwareDelay(BSP_PRV_RTC_RESET_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + else + { + /* Do nothing: it is already enabled. */ + } + } + #endif + } + else + { + /* Bit should be cleared to 0. */ + #if BSP_FEATURE_SYSC_HAS_VBTICTLR + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_SYSTEM->BBFSAR_b.NONSEC2) + { + /* Do nothing: non secure build can't configure secure VBTICTLR register. */ + } + else + #endif + if ((p_system->VBTICTLR & (uint8_t) (1U << vbatt_index)) > 0) + { + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_OM_LPC_BATT); + p_system->VBTICTLR &= (uint8_t) ~(1U << vbatt_index); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_OM_LPC_BATT); + } + else + { + /* Do nothing: it is already disabled. */ + } + #endif + #if BSP_FEATURE_RTC_HAS_TCEN + #if BSP_TZ_NONSECURE_BUILD + if (0 == R_PSCU->PSARE_b.PSARE2) + { + /* Do nothing: non secure build can't configure secure RTC registers. */ + } + else + #endif + { + if (p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN > 0) + { + p_rtc->RTCCR[vbatt_index].RTCCR_b.TCEN = 0; + R_BSP_SoftwareDelay(BSP_PRV_RTC_RESET_DELAY_US, BSP_DELAY_UNITS_MICROSECONDS); + } + else + { + /* Do nothing: it is already disabled. */ + } + } + #endif + } + } + } + } +} + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c b/bsp/renesas/ra8d1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c new file mode 100644 index 0000000000..67b43bf41d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra/fsp/src/r_sci_b_uart/r_sci_b_uart.c @@ -0,0 +1,1817 @@ +/*********************************************************************************************************************** + * Copyright [2020-2023] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics America Inc. and may only be used with products + * of Renesas Electronics Corp. and its affiliates ("Renesas"). No other uses are authorized. Renesas products are + * sold pursuant to Renesas terms and conditions of sale. Purchasers are solely responsible for the selection and use + * of Renesas products and Renesas assumes no liability. No license, express or implied, to any intellectual property + * right is granted by Renesas. This software is protected under all applicable laws, including copyright laws. Renesas + * reserves the right to change or discontinue this software and/or this documentation. THE SOFTWARE AND DOCUMENTATION + * IS DELIVERED TO YOU "AS IS," AND RENESAS MAKES NO REPRESENTATIONS OR WARRANTIES, AND TO THE FULLEST EXTENT + * PERMISSIBLE UNDER APPLICABLE LAW, DISCLAIMS ALL WARRANTIES, WHETHER EXPLICITLY OR IMPLICITLY, INCLUDING WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT, WITH RESPECT TO THE SOFTWARE OR + * DOCUMENTATION. RENESAS SHALL HAVE NO LIABILITY ARISING OUT OF ANY SECURITY VULNERABILITY OR BREACH. TO THE MAXIMUM + * EXTENT PERMITTED BY LAW, IN NO EVENT WILL RENESAS BE LIABLE TO YOU IN CONNECTION WITH THE SOFTWARE OR DOCUMENTATION + * (OR ANY PERSON OR ENTITY CLAIMING RIGHTS DERIVED FROM YOU) FOR ANY LOSS, DAMAGES, OR CLAIMS WHATSOEVER, INCLUDING, + * WITHOUT LIMITATION, ANY DIRECT, CONSEQUENTIAL, SPECIAL, INDIRECT, PUNITIVE, OR INCIDENTAL DAMAGES; ANY LOST PROFITS, + * OTHER ECONOMIC DAMAGE, PROPERTY DAMAGE, OR PERSONAL INJURY; AND EVEN IF RENESAS HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH LOSS, DAMAGES, CLAIMS OR COSTS. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_sci_b_uart.h" +#include + +/***********************************************************************************************************************fCCR0 + * Macro definitions + **********************************************************************************************************************/ +#ifndef SCI_B_UART_CFG_RX_ENABLE + #define SCI_B_UART_CFG_RX_ENABLE 1 +#endif +#ifndef SCI_B_UART_CFG_TX_ENABLE + #define SCI_B_UART_CFG_TX_ENABLE 1 +#endif + +/* Number of divisors in the data table used for baud rate calculation. */ +#define SCI_B_UART_NUM_DIVISORS_ASYNC (13U) + +/* Valid range of values for the modulation duty register is 128 - 256 (256 = modulation disabled). */ +#define SCI_B_UART_MDDR_MIN (128U) +#define SCI_B_UART_MDDR_MAX (256U) + +/* The bit rate setting field is of 8-bits, so the maximum value is 255. */ +#define SCI_B_UART_BRR_MAX (255U) + +/* No limit to the number of bytes to read or write if DTC is not used. */ +#define SCI_B_UART_MAX_READ_WRITE_NO_DTC (0xFFFFFFFFU) + +/* Mask off invalid data bits in 9-bit mode. */ +#define SCI_B_UART_ALIGN_2_BYTES (0x1U) + +/* "SCIB" in ASCII. Used to determine if the control block is open. */ +#define SCI_B_UART_OPEN (0x53434942U) + +/* Default SCI Register values. */ +#define SCI_B_UART_CCR2_DEFAULT_VALUE (0xFF00FF04U) +#define SCI_B_UART_FCR_DEFAULT_VALUE (0x1F1F0000U) + +/* SCI CCR1 register bit offsets and masks */ +#define SCI_B_UART_CCR1_SPB2_OFFSET (4U) +#define SCI_B_UART_CCR1_SPB2_MASK (0x00000030U) +#define SCI_B_UART_CCR1_PARITY_OFFSET (8U) +#define SCI_B_UART_CCR1_PARITY_MASK (0x00000300U) +#define SCI_B_UART_CCR1_FLOW_CTSRTS_MASK (0x00000003U) + +/* SCI CCR3 register bit offsets and masks */ +#define SCI_B_UART_CCR3_CHAR_OFFSET (8U) +#define SCI_B_UART_CCR3_CHAR_MASK (0x00000300U) +#define SCI_B_UART_CCR3_CKE_OFFSET (24U) +#define SCI_B_UART_CCR3_CKE_MASK (0x03000000U) + +/* SCI Data register bit masks */ +#define SCI_B_UART_TDR_TDAT_MASK_9BITS (0x000091FFU) + +/* SCI CSR register receiver error (overflow, framing, parity) bits masks */ +#define SCI_B_UART_RCVR_ERR_MASK (R_SCI_B0_CSR_ORER_Msk | R_SCI_B0_CSR_FER_Msk | R_SCI_B0_CSR_PER_Msk) + +/* SCI Error event masks */ +#define SCI_B_UART_ORR_EVENT8_MASK (0x20) +#define SCI_B_UART_ERR_EVENT8_MASK (0x38) + +/* SCI CFCLR register bit masks */ +#define SCI_B_UART_CFCLR_CLEAR_ALL_MASK (0x9D070010U) +#define SCI_B_UART_CFCLR_RDRFC_MASK (0x80000000U) +#define SCI_B_UART_CFCLR_TDREC_MASK (0x20000000U) + +/* SCI FFCLR register bit masks */ +#define SCI_B_UART_FFCLR_CLEAR_ALL_MASK (0x00000001U) + +/* SCI chanel size */ +#define SCI_B_REG_SIZE (R_SCI1_BASE - R_SCI0_BASE) + +#define SCI_B_UART_INVALID_16BIT_PARAM (0xFFFFU) +#define SCI_B_UART_DTC_MAX_TRANSFER (0x10000U) + +/* SCI FCR register bit masks */ +#define SCI_B_UART_FCR_TRIGGER_MASK (0xF) +#define SCI_B_UART_FCR_RESET_TX_RX (0x00808000U) + +/* DTC Configuration for Receive operation */ +#define SCI_B_UART_DTC_RX_TRANSFER_SETTINGS ((TRANSFER_MODE_NORMAL << TRANSFER_SETTINGS_MODE_BITS) | \ + (TRANSFER_SIZE_1_BYTE << TRANSFER_SETTINGS_SIZE_BITS) | \ + (TRANSFER_ADDR_MODE_FIXED << TRANSFER_SETTINGS_SRC_ADDR_BITS) | \ + (TRANSFER_IRQ_END << TRANSFER_SETTINGS_IRQ_BITS) | \ + (TRANSFER_ADDR_MODE_INCREMENTED << TRANSFER_SETTINGS_DEST_ADDR_BITS)) + +/* DTC Configuration for Transmit operation */ +#define SCI_B_UART_DTC_TX_TRANSFER_SETTINGS ((TRANSFER_MODE_NORMAL << TRANSFER_SETTINGS_MODE_BITS) | \ + (TRANSFER_SIZE_1_BYTE << TRANSFER_SETTINGS_SIZE_BITS) | \ + (TRANSFER_ADDR_MODE_INCREMENTED << TRANSFER_SETTINGS_SRC_ADDR_BITS) | \ + (TRANSFER_IRQ_END << TRANSFER_SETTINGS_IRQ_BITS) | \ + (TRANSFER_ADDR_MODE_FIXED << TRANSFER_SETTINGS_DEST_ADDR_BITS)) + +/* Flow Control pin active state */ +#ifndef SCI_B_UART_FLOW_CONTROL_ACTIVE + #define SCI_B_UART_FLOW_CONTROL_ACTIVE BSP_IO_LEVEL_HIGH +#endif + +/* Flow Control pin inactive state */ +#ifndef SCI_B_UART_FLOW_CONTROL_INACTIVE + #define SCI_B_UART_FLOW_CONTROL_INACTIVE BSP_IO_LEVEL_LOW +#endif + +/*********************************************************************************************************************** + * Private constants + **********************************************************************************************************************/ +static const int32_t SCI_B_UART_100_PERCENT_X_1000 = 100000; +static const int32_t SCI_B_UART_MDDR_DIVISOR = 256; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) +static const uint32_t SCI_B_UART_MAX_BAUD_RATE_ERROR_X_1000 = 15000; +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef struct st_baud_setting_const_t +{ + uint8_t bgdm : 1; /**< BGDM value to get divisor */ + uint8_t abcs : 1; /**< ABCS value to get divisor */ + uint8_t abcse : 1; /**< ABCSE value to get divisor */ + uint8_t cks : 2; /**< CKS value to get divisor (CKS = N) */ +} baud_setting_const_t; + +/* Noise filter setting definition */ +typedef enum e_noise_cancel_lvl +{ + NOISE_CANCEL_LVL1 = 0, /**< Noise filter level 1(weak) */ + NOISE_CANCEL_LVL2 = 2, /**< Noise filter level 2 */ + NOISE_CANCEL_LVL3 = 4, /**< Noise filter level 3 */ + NOISE_CANCEL_LVL4 = 8, /**< Noise filter level 4(strong) */ +} noise_cancel_lvl_t; + +#if defined(__ARMCC_VERSION) || defined(__ICCARM__) +typedef void (BSP_CMSE_NONSECURE_CALL * sci_b_uart_prv_ns_callback)(uart_callback_args_t * p_args); +#elif defined(__GNUC__) +typedef BSP_CMSE_NONSECURE_CALL void (*volatile sci_b_uart_prv_ns_callback)(uart_callback_args_t * p_args); +#endif + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) +static fsp_err_t r_sci_b_read_write_param_check(sci_b_uart_instance_ctrl_t const * const p_ctrl, + uint8_t const * const addr, + uint32_t const bytes); + +#endif + +static void r_sci_b_uart_config_set(sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +#if SCI_B_UART_CFG_DTC_SUPPORTED +static fsp_err_t r_sci_b_uart_transfer_configure(sci_b_uart_instance_ctrl_t * const p_ctrl, + transfer_instance_t const * p_transfer, + uint32_t * p_transfer_reg, + uint32_t address); + +static fsp_err_t r_sci_b_uart_transfer_open(sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +static void r_sci_b_uart_transfer_close(sci_b_uart_instance_ctrl_t * p_ctrl); + +#endif + +static void r_sci_b_uart_call_callback(sci_b_uart_instance_ctrl_t * p_ctrl, uint32_t data, uart_event_t event); + +#if SCI_B_UART_CFG_FIFO_SUPPORT +static void r_sci_b_uart_fifo_cfg(sci_b_uart_instance_ctrl_t * const p_ctrl); + +#endif + +static void r_sci_b_irq_cfg(sci_b_uart_instance_ctrl_t * const p_ctrl, uint8_t const ipl, IRQn_Type const p_irq); + +static void r_sci_b_irqs_cfg(sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); + +#if (SCI_B_UART_CFG_RX_ENABLE) +void sci_b_uart_rxi_isr(void); + +void sci_b_uart_eri_isr(void); + +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) +void sci_b_uart_txi_isr(void); +void sci_b_uart_tei_isr(void); + +#endif + +/*********************************************************************************************************************** + * Private global variables + **********************************************************************************************************************/ + +/* Name of module used by error logger macro */ +#if BSP_CFG_ERROR_LOG != 0 +static const char g_module_name[] = "sci_b_uart"; +#endif + +/* Baud rate divisor information (UART mode) */ +static const baud_setting_const_t g_async_baud[SCI_B_UART_NUM_DIVISORS_ASYNC] = +{ + {0U, 0U, 1U, 0U}, /* BGDM, ABCS, ABCSE, n */ + {1U, 1U, 0U, 0U}, + {1U, 0U, 0U, 0U}, + {0U, 0U, 1U, 1U}, + {0U, 0U, 0U, 0U}, + {1U, 0U, 0U, 1U}, + {0U, 0U, 1U, 2U}, + {0U, 0U, 0U, 1U}, + {1U, 0U, 0U, 2U}, + {0U, 0U, 1U, 3U}, + {0U, 0U, 0U, 2U}, + {1U, 0U, 0U, 3U}, + {0U, 0U, 0U, 3U} +}; + +static const uint16_t g_div_coefficient[SCI_B_UART_NUM_DIVISORS_ASYNC] = +{ + 6U, + 8U, + 16U, + 24U, + 32U, + 64U, + 96U, + 128U, + 256U, + 384U, + 512U, + 1024U, + 2048U, +}; + +/* UART on SCI HAL API mapping for UART interface */ +const uart_api_t g_uart_on_sci_b = +{ + .open = R_SCI_B_UART_Open, + .close = R_SCI_B_UART_Close, + .write = R_SCI_B_UART_Write, + .read = R_SCI_B_UART_Read, + .infoGet = R_SCI_B_UART_InfoGet, + .baudSet = R_SCI_B_UART_BaudSet, + .communicationAbort = R_SCI_B_UART_Abort, + .callbackSet = R_SCI_B_UART_CallbackSet, + .readStop = R_SCI_B_UART_ReadStop, +}; + +/*******************************************************************************************************************//** + * @addtogroup SCI_B_UART + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Configures the UART driver based on the input configurations. If reception is enabled at compile time, reception is + * enabled at the end of this function. Implements @ref uart_api_t::open + * + * @retval FSP_SUCCESS Channel opened successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block or configuration structure is NULL. + * @retval FSP_ERR_IP_CHANNEL_NOT_PRESENT The requested channel does not exist on this MCU. + * @retval FSP_ERR_INVALID_ARGUMENT Flow control is enabled but flow control pin is not defined. + * @retval FSP_ERR_ALREADY_OPEN Control block has already been opened or channel is being used by another + * instance. Call close() then open() to reconfigure. + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::open + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Open (uart_ctrl_t * const p_api_ctrl, uart_cfg_t const * const p_cfg) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check parameters. */ + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_cfg); + + FSP_ASSERT(p_cfg->p_extend); + FSP_ASSERT(((sci_b_uart_extended_cfg_t *) p_cfg->p_extend)->p_baud_setting); + FSP_ERROR_RETURN(SCI_B_UART_OPEN != p_ctrl->open, FSP_ERR_ALREADY_OPEN); + + /* Make sure this channel exists. */ + FSP_ERROR_RETURN(BSP_FEATURE_SCI_CHANNELS & (1U << p_cfg->channel), FSP_ERR_IP_CHANNEL_NOT_PRESENT); + + if (((sci_b_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control == SCI_B_UART_FLOW_CONTROL_CTSRTS) + { + FSP_ERROR_RETURN( + ((sci_b_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control_pin != SCI_B_UART_INVALID_16BIT_PARAM, + FSP_ERR_INVALID_ARGUMENT); + } + + FSP_ASSERT(p_cfg->rxi_irq >= 0); + FSP_ASSERT(p_cfg->txi_irq >= 0); + FSP_ASSERT(p_cfg->tei_irq >= 0); + FSP_ASSERT(p_cfg->eri_irq >= 0); +#endif + + p_ctrl->p_reg = (R_SCI_B0_Type *) (R_SCI0_BASE + (SCI_B_REG_SIZE * p_cfg->channel)); + + p_ctrl->fifo_depth = 0U; +#if SCI_B_UART_CFG_FIFO_SUPPORT + + /* Check if the channel supports fifo */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + /* Set fifo depth. */ + p_ctrl->fifo_depth = BSP_FEATURE_SCI_UART_FIFO_DEPTH; + } +#endif + + p_ctrl->p_cfg = p_cfg; + + p_ctrl->p_callback = p_cfg->p_callback; + p_ctrl->p_context = p_cfg->p_context; + p_ctrl->p_callback_memory = NULL; + sci_b_uart_extended_cfg_t * p_extend = (sci_b_uart_extended_cfg_t *) p_cfg->p_extend; + + p_ctrl->data_bytes = 1U; + if (UART_DATA_BITS_9 == p_cfg->data_bits) + { + p_ctrl->data_bytes = 2U; + } + + /* Configure the interrupts. */ + r_sci_b_irqs_cfg(p_ctrl, p_cfg); + +#if SCI_B_UART_CFG_DTC_SUPPORTED + + /* Configure the transfer interface for transmission and reception if provided. */ + fsp_err_t err = r_sci_b_uart_transfer_open(p_ctrl, p_cfg); + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); +#endif + + uint32_t ccr0 = R_SCI_B0_CCR0_IDSEL_Msk; + + /* Enable the SCI channel and reset the registers to their initial state. */ + R_BSP_MODULE_START(FSP_IP_SCI, p_cfg->channel); + + /* Initialize registers as defined in section 26.3.7 "SCI Initialization in Asynchronous Mode" in the RA6T2 manual + * R01UH0951EJ0100 or the relevant section for the MCU being used. */ + p_ctrl->p_reg->CCR0 = ccr0; + + /* Set the UART configuration settings provided in ::uart_cfg_t and ::sci_b_uart_extended_cfg_t. */ + r_sci_b_uart_config_set(p_ctrl, p_cfg); + + p_ctrl->p_tx_src = NULL; + p_ctrl->tx_src_bytes = 0U; + p_ctrl->p_rx_dest = NULL; + p_ctrl->rx_dest_bytes = 0; + + /* Set flow control pins. */ + p_ctrl->flow_pin = p_extend->flow_control_pin; + +#if SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT + if (p_ctrl->flow_pin != SCI_B_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_B_UART_FLOW_CONTROL_INACTIVE); + R_BSP_PinAccessDisable(); + } +#endif + + /* Clear all flags in CSR register. */ + p_ctrl->p_reg->CFCLR = SCI_B_UART_CFCLR_CLEAR_ALL_MASK; + +#if SCI_B_UART_CFG_FIFO_SUPPORT + p_ctrl->p_reg->FFCLR = SCI_B_UART_FFCLR_CLEAR_ALL_MASK; +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + + /* If reception is enabled at build time, enable reception. */ + ccr0 |= R_SCI_B0_CCR0_RE_Msk; + R_BSP_IrqEnable(p_ctrl->p_cfg->rxi_irq); + R_BSP_IrqEnable(p_ctrl->p_cfg->eri_irq); + + ccr0 |= R_SCI_B0_CCR0_RIE_Msk; +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + + /* NOTE: Transmitter and its interrupt are enabled in R_SCI_B_UART_Write(). */ + R_BSP_IrqEnable(p_ctrl->p_cfg->txi_irq); + R_BSP_IrqEnable(p_ctrl->p_cfg->tei_irq); + + ccr0 |= R_SCI_B0_CCR0_TE_Msk; +#endif + p_ctrl->p_reg->CCR0 = ccr0; + + /* Wait until interanl state of RE is 1 as it takes some time for the state to be reflected internally after + * rewriting the control register. Please refer "26.2.29 CESR : Communication Enable Status Register" description + * in the RA6T2 manual R01UH0951EJ0100 or the relevant section for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.RIST, 1U); + + p_ctrl->open = SCI_B_UART_OPEN; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Aborts any in progress transfers. Disables interrupts, receiver, and transmitter. Closes lower level transfer + * drivers if used. Removes power. Implements @ref uart_api_t::close + * + * @retval FSP_SUCCESS Channel successfully closed. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Close (uart_ctrl_t * const p_api_ctrl) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); +#endif + + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); + +#if (SCI_B_UART_CFG_TX_ENABLE) + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + /* Reset the transmit fifo */ + p_ctrl->p_reg->FCR_b.TFRST = 1U; + + /* Clear the CCR3_b.FM bit. This is necessary to set the TEND bit before setting the TE bit. If TEND is 0 + * when TE is set to 0, the SCI peripheral works abnormally next time the TE made to 1.*/ + p_ctrl->p_reg->CCR3 = 0U; + } + #endif + + /* Disable transmission */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk); + + /* Wait until interanl state of TE is 0 as it takes some time for the state to be reflected internally after + * rewriting the control register. Please refer "26.2.29 CESR : Communication Enable Status Register" description + * in the RA6T2 manual R01UH0951EJ0100 or the relevant section for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.TIST, 0U); + + /* If transmission is enabled at build time, disable transmission irqs. */ + R_BSP_IrqDisable(p_ctrl->p_cfg->txi_irq); + R_BSP_IrqDisable(p_ctrl->p_cfg->tei_irq); +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_RIE_Msk); + + /* If reception is enabled at build time, disable reception irqs. */ + R_BSP_IrqDisable(p_ctrl->p_cfg->rxi_irq); + R_BSP_IrqDisable(p_ctrl->p_cfg->eri_irq); +#endif + +#if SCI_B_UART_CFG_DTC_SUPPORTED + + /* Close the lower level transfer instances. */ + r_sci_b_uart_transfer_close(p_ctrl); +#endif + + /* Remove power to the channel. */ + R_BSP_MODULE_STOP(FSP_IP_SCI, p_ctrl->p_cfg->channel); + + /* Mark the channel not open so other APIs cannot use it. */ + p_ctrl->open = 0U; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Receives user specified number of bytes into destination buffer pointer. Implements @ref uart_api_t::read + * + * @retval FSP_SUCCESS Data reception successfully ends. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * Number of transfers outside the max or min boundary when transfer instance used + * @retval FSP_ERR_INVALID_ARGUMENT Destination address or data size is not valid for 9-bit mode. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + * @retval FSP_ERR_IN_USE A previous read operation is still in progress. + * @retval FSP_ERR_UNSUPPORTED SCI_B_UART_CFG_RX_ENABLE is set to 0 + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::reset + * + * @note If 9-bit data length is specified at R_SCI_B_UART_Open call, p_dest must be aligned 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Read (uart_ctrl_t * const p_api_ctrl, uint8_t * const p_dest, uint32_t const bytes) +{ +#if (SCI_B_UART_CFG_RX_ENABLE) + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_b_read_write_param_check(p_ctrl, p_dest, bytes); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + FSP_ERROR_RETURN(0U == p_ctrl->rx_dest_bytes, FSP_ERR_IN_USE); + #endif + + #if SCI_B_UART_CFG_DTC_SUPPORTED + + /* Configure transfer instance to receive the requested number of bytes if transfer is used for reception. */ + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + uint32_t size = bytes >> (p_ctrl->data_bytes - 1); + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check that the number of transfers is within the 16-bit limit. */ + FSP_ASSERT(size <= SCI_B_UART_DTC_MAX_TRANSFER); + #endif + err = + p_ctrl->p_cfg->p_transfer_rx->p_api->reset(p_ctrl->p_cfg->p_transfer_rx->p_ctrl, NULL, (void *) p_dest, + (uint16_t) size); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + /* Save the destination address and size for use in rxi_isr. */ + p_ctrl->p_rx_dest = p_dest; + p_ctrl->rx_dest_bytes = bytes; + + return err; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); + FSP_PARAMETER_NOT_USED(p_dest); + FSP_PARAMETER_NOT_USED(bytes); + + return FSP_ERR_UNSUPPORTED; +#endif +} + +/*******************************************************************************************************************//** + * Transmits user specified number of bytes from the source buffer pointer. Implements @ref uart_api_t::write + * + * @retval FSP_SUCCESS Data transmission finished successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * Number of transfers outside the max or min boundary when transfer instance used + * @retval FSP_ERR_INVALID_ARGUMENT Source address or data size is not valid for 9-bit mode. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + * @retval FSP_ERR_IN_USE A UART transmission is in progress + * @retval FSP_ERR_UNSUPPORTED SCI_B_UART_CFG_TX_ENABLE is set to 0 + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::reset + * + * @note If 9-bit data length is specified at R_SCI_B_UART_Open call, p_src must be aligned on a 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Write (uart_ctrl_t * const p_api_ctrl, uint8_t const * const p_src, uint32_t const bytes) +{ +#if (SCI_B_UART_CFG_TX_ENABLE) + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + #if SCI_B_UART_CFG_PARAM_CHECKING_ENABLE || SCI_B_UART_CFG_DTC_SUPPORTED + fsp_err_t err = FSP_SUCCESS; + #endif + + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_b_read_write_param_check(p_ctrl, p_src, bytes); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + FSP_ERROR_RETURN(0U == p_ctrl->tx_src_bytes, FSP_ERR_IN_USE); + #endif + + /* Transmit interrupts must be disabled to start with. */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* Make sure no transmission is in progress. Setting CCR0_b.TE to 0 when CSR_b.TEND is 0 causes SCI peripheral + * to work abnormally. */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CSR_b.TEND, 1U); + + /* Set TE bit to 0. This is done to set TE and TIE bit simultaneously at the end of this function. + * Please refer "26.3.8 Serial Data Transmission in Asynchronous Mode" section in the RA6T2 manual R01UH0951EJ0100 + * or the relevant section for the MCU being used */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk); + + /* Wait until interanl state of TE is 0 as it takes some time for the state to be reflected internally after + * rewriting the control register. Please refer "26.2.29 CESR : Communication Enable Status Register" description + * in the RA6T2 manual R01UH0951EJ0100 or the relevant section for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.TIST, 0U); + + p_ctrl->tx_src_bytes = bytes; + p_ctrl->p_tx_src = p_src; + + #if SCI_B_UART_CFG_DTC_SUPPORTED + + /* If a transfer instance is used for transmission, reset the transfer instance to transmit the requested + * data. */ + if ((NULL != p_ctrl->p_cfg->p_transfer_tx) && p_ctrl->tx_src_bytes) + { + uint32_t data_bytes = p_ctrl->data_bytes; + uint32_t num_transfers = p_ctrl->tx_src_bytes >> (data_bytes - 1); + p_ctrl->tx_src_bytes = 0U; + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check that the number of transfers is within the 16-bit limit. */ + FSP_ASSERT(num_transfers <= SCI_B_UART_DTC_MAX_TRANSFER); + #endif + + err = p_ctrl->p_cfg->p_transfer_tx->p_api->reset(p_ctrl->p_cfg->p_transfer_tx->p_ctrl, + (void const *) p_ctrl->p_tx_src, + NULL, + (uint16_t) num_transfers); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + /* Set TE and TIE bits simultaneously by single instruction to enable TIE interrupt. + * Please refer "26.3.8 Serial Data Transmission in Asynchronous Mode" section in the RA6T2 manual R01UH0951EJ0100 + * or the relevant section for the MCU being used */ + p_ctrl->p_reg->CCR0 |= (uint32_t) (R_SCI_B0_CCR0_TE_Msk | R_SCI_B0_CCR0_TIE_Msk); + + return FSP_SUCCESS; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); + FSP_PARAMETER_NOT_USED(p_src); + FSP_PARAMETER_NOT_USED(bytes); + + return FSP_ERR_UNSUPPORTED; +#endif +} + +/*******************************************************************************************************************//** + * Updates the user callback and has option of providing memory for callback structure. + * Implements uart_api_t::callbackSet + * + * @retval FSP_SUCCESS Callback updated successfully. + * @retval FSP_ERR_ASSERTION A required pointer is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened. + * @retval FSP_ERR_NO_CALLBACK_MEMORY p_callback is non-secure and p_callback_memory is either secure or NULL. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_CallbackSet (uart_ctrl_t * const p_api_ctrl, + void ( * p_callback)(uart_callback_args_t *), + void const * const p_context, + uart_callback_args_t * const p_callback_memory) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_callback); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if BSP_TZ_SECURE_BUILD + + /* Get security state of p_callback */ + bool callback_is_secure = + (NULL == cmse_check_address_range((void *) p_callback, sizeof(void *), CMSE_AU_NONSECURE)); + + #if SCI_B_UART_CFG_PARAM_CHECKING_ENABLE + + /* In secure projects, p_callback_memory must be provided in non-secure space if p_callback is non-secure */ + uart_callback_args_t * const p_callback_memory_checked = cmse_check_pointed_object(p_callback_memory, + CMSE_AU_NONSECURE); + FSP_ERROR_RETURN(callback_is_secure || (NULL != p_callback_memory_checked), FSP_ERR_NO_CALLBACK_MEMORY); + #endif +#endif + + /* Store callback and context */ +#if BSP_TZ_SECURE_BUILD + p_ctrl->p_callback = callback_is_secure ? p_callback : + (void (*)(uart_callback_args_t *))cmse_nsfptr_create(p_callback); +#else + p_ctrl->p_callback = p_callback; +#endif + p_ctrl->p_context = p_context; + p_ctrl->p_callback_memory = p_callback_memory; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Updates the baud rate using the clock selected in Open. p_baud_setting is a pointer to a + * sci_b_baud_setting_t structure. + * Implements @ref uart_api_t::baudSet + * + * @warning This terminates any in-progress transmission. + * + * @retval FSP_SUCCESS Baud rate was successfully changed. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL or the UART is not configured to use the + * internal clock. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_BaudSet (uart_ctrl_t * const p_api_ctrl, void const * const p_baud_setting) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); + + /* Verify that the On-Chip baud rate generator is currently selected. */ + FSP_ASSERT((p_ctrl->p_reg->CCR3_b.CKE & 0x2) == 0U); +#endif + + /* Save SCR configurations except transmit interrupts. Resuming transmission after reconfiguring baud settings is + * not supported. */ + uint32_t preserved_ccr0 = p_ctrl->p_reg->CCR0 & (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* Disables transmitter and receiver. This terminates any in-progress transmission. */ + p_ctrl->p_reg->CCR0 = preserved_ccr0 & + (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk | R_SCI_B0_CCR0_RE_Msk | R_SCI_B0_CCR0_RIE_Msk); + p_ctrl->p_tx_src = NULL; + + /* Apply new baud rate register settings. */ + p_ctrl->p_reg->CCR2 = ((sci_b_baud_setting_t *) p_baud_setting)->baudrate_bits; + + /* Restore all settings except transmit interrupts. */ + p_ctrl->p_reg->CCR0 = preserved_ccr0; + + /* Restore all settings except transmit interrupts. */ + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Provides the driver information, including the maximum number of bytes that can be received or transmitted at a time. + * Implements @ref uart_api_t::infoGet + * + * @retval FSP_SUCCESS Information stored in provided p_info. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_InfoGet (uart_ctrl_t * const p_api_ctrl, uart_info_t * const p_info) +{ +#if SCI_B_UART_CFG_PARAM_CHECKING_ENABLE || SCI_B_UART_CFG_DTC_SUPPORTED + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; +#else + FSP_PARAMETER_NOT_USED(p_api_ctrl); +#endif + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ASSERT(p_info); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + p_info->read_bytes_max = SCI_B_UART_MAX_READ_WRITE_NO_DTC; + p_info->write_bytes_max = SCI_B_UART_MAX_READ_WRITE_NO_DTC; + +#if (SCI_B_UART_CFG_RX_ENABLE) + + /* Store number of bytes that can be read at a time. */ + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + p_info->read_bytes_max = SCI_B_UART_DTC_MAX_TRANSFER; + } + #endif +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + + /* Store number of bytes that can be written at a time. */ + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + p_info->write_bytes_max = SCI_B_UART_DTC_MAX_TRANSFER; + } + #endif +#endif + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Provides API to abort ongoing transfer. Transmission is aborted after the current character is transmitted. + * Reception is still enabled after abort(). Any characters received after abort() and before the transfer + * is reset in the next call to read(), will arrive via the callback function with event UART_EVENT_RX_CHAR. + * Implements @ref uart_api_t::communicationAbort + * + * @retval FSP_SUCCESS UART transaction aborted successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened. + * @retval FSP_ERR_UNSUPPORTED The requested Abort direction is unsupported. + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::disable + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_Abort (uart_ctrl_t * const p_api_ctrl, uart_dir_t communication_to_abort) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + fsp_err_t err = FSP_ERR_UNSUPPORTED; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + if (UART_DIR_TX & communication_to_abort) + { + err = FSP_SUCCESS; + + /* Transmit interrupts must be disabled to start with. */ + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* Make sure no transmission is in progress. Setting CCR0_b.TE to 0 when CSR_b.TEND is 0 causes SCI peripheral + * to work abnormally. */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CSR_b.TEND, 1U); + + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk); + + /* Wait until interanl state of TE is 0 as it takes some time for the state to be reflected + * internally after rewriting the control register. Please refer "26.2.29 CESR : Communication + * Enable Status Register" description in the RA6T2 manual R01UH0951EJ0100 or the relevant section + * for the MCU being used */ + FSP_HARDWARE_REGISTER_WAIT(p_ctrl->p_reg->CESR_b.TIST, 0U); + + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + err = p_ctrl->p_cfg->p_transfer_tx->p_api->disable(p_ctrl->p_cfg->p_transfer_tx->p_ctrl); + } + #endif + + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + /* Reset the transmit fifo */ + p_ctrl->p_reg->FCR_b.TFRST = 1U; + } + #endif + p_ctrl->tx_src_bytes = 0U; + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } +#endif +#if (SCI_B_UART_CFG_RX_ENABLE) + if (UART_DIR_RX & communication_to_abort) + { + err = FSP_SUCCESS; + + p_ctrl->rx_dest_bytes = 0U; + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + err = p_ctrl->p_cfg->p_transfer_rx->p_api->disable(p_ctrl->p_cfg->p_transfer_rx->p_ctrl); + } + #endif + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_ctrl->p_reg->FCR_b.RFRST = 1U; + } + #endif + } +#endif + + return err; +} + +/*******************************************************************************************************************//** + * Provides API to abort ongoing read. Reception is still enabled after abort(). Any characters received after abort() + * and before the transfer is reset in the next call to read(), will arrive via the callback function with event + * UART_EVENT_RX_CHAR. + * Implements @ref uart_api_t::readStop + * + * @retval FSP_SUCCESS UART transaction aborted successfully. + * @retval FSP_ERR_ASSERTION Pointer to UART control block is NULL. + * @retval FSP_ERR_NOT_OPEN The control block has not been opened. + * @retval FSP_ERR_UNSUPPORTED The requested Abort direction is unsupported. + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::disable + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_ReadStop (uart_ctrl_t * const p_api_ctrl, uint32_t * remaining_bytes) +{ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) p_api_ctrl; + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_ctrl); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + *remaining_bytes = p_ctrl->rx_dest_bytes; + p_ctrl->rx_dest_bytes = 0U; + #if SCI_B_UART_CFG_DTC_SUPPORTED + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + fsp_err_t err = p_ctrl->p_cfg->p_transfer_rx->p_api->disable(p_ctrl->p_cfg->p_transfer_rx->p_ctrl); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + + transfer_properties_t transfer_info; + err = p_ctrl->p_cfg->p_transfer_rx->p_api->infoGet(p_ctrl->p_cfg->p_transfer_rx->p_ctrl, &transfer_info); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + *remaining_bytes = transfer_info.transfer_length_remaining; + } + #endif + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_ctrl->p_reg->FCR_b.RFRST = 1U; + } + #endif +#else + + return FSP_ERR_UNSUPPORTED; +#endif + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Calculates baud rate register settings. Evaluates and determines the best possible settings set to the baud rate + * related registers. + * + * @param[in] baudrate Baud rate [bps]. For example, 19200, 57600, 115200, etc. + * @param[in] bitrate_modulation Enable bitrate modulation + * @param[in] baud_rate_error_x_1000 Max baud rate error. At most <baud_rate_percent_error> x 1000 required + * for module to function. Absolute max baud_rate_error is 15000 (15%). + * @param[out] p_baud_setting Baud setting information stored here if successful + * + * @retval FSP_SUCCESS Baud rate is set successfully + * @retval FSP_ERR_ASSERTION Null pointer + * @retval FSP_ERR_INVALID_ARGUMENT Baud rate is '0', error in calculated baud rate is larger than requested + * max error, or requested max error in baud rate is larger than 15%. + **********************************************************************************************************************/ +fsp_err_t R_SCI_B_UART_BaudCalculate (uint32_t baudrate, + bool bitrate_modulation, + uint32_t baud_rate_error_x_1000, + sci_b_baud_setting_t * const p_baud_setting) +{ +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_baud_setting); + FSP_ERROR_RETURN(SCI_B_UART_MAX_BAUD_RATE_ERROR_X_1000 >= baud_rate_error_x_1000, FSP_ERR_INVALID_ARGUMENT); + FSP_ERROR_RETURN((0U != baudrate), FSP_ERR_INVALID_ARGUMENT); +#endif + + p_baud_setting->baudrate_bits_b.brr = SCI_B_UART_BRR_MAX; + p_baud_setting->baudrate_bits_b.brme = 0U; + p_baud_setting->baudrate_bits_b.mddr = SCI_B_UART_MDDR_MIN; + + /* Find the best BRR (bit rate register) value. + * In table g_async_baud, divisor values are stored for BGDM, ABCS, ABCSE and N values. Each set of divisors + * is tried, and the settings with the lowest bit rate error are stored. The formula to calculate BRR is as + * follows and it must be 255 or less: + * BRR = (PCLK / (div_coefficient * baud)) - 1 + */ + int32_t hit_bit_err = SCI_B_UART_100_PERCENT_X_1000; + uint8_t hit_mddr = 0U; + uint32_t divisor = 0U; + +#if (BSP_FEATURE_BSP_HAS_SCISPI_CLOCK) + uint32_t freq_hz = R_FSP_SciSpiClockHzGet(); +#else + uint32_t freq_hz = R_FSP_SciClockHzGet(); +#endif + + for (uint32_t select_16_base_clk_cycles = 0U; + select_16_base_clk_cycles <= 1U && (hit_bit_err > ((int32_t) baud_rate_error_x_1000)); + select_16_base_clk_cycles++) + { + for (uint32_t i = 0U; i < SCI_B_UART_NUM_DIVISORS_ASYNC; i++) + { + /* if select_16_base_clk_cycles == true: Skip this calculation for divisors that are not acheivable with 16 base clk cycles per bit. + * if select_16_base_clk_cycles == false: Skip this calculation for divisors that are only acheivable without 16 base clk cycles per bit. + */ + if (((uint8_t) select_16_base_clk_cycles) ^ (g_async_baud[i].abcs | g_async_baud[i].abcse)) + { + continue; + } + + divisor = (uint32_t) g_div_coefficient[i] * baudrate; + uint32_t temp_brr = freq_hz / divisor; + + if (temp_brr <= (SCI_B_UART_BRR_MAX + 1U)) + { + while (temp_brr > 0U) + { + temp_brr -= 1U; + + /* Calculate the bit rate error. The formula is as follows: + * bit rate error[%] = {(PCLK / (baud * div_coefficient * (BRR + 1)) - 1} x 100 + * calculates bit rate error[%] to three decimal places + */ + int32_t err_divisor = (int32_t) (divisor * (temp_brr + 1U)); + + /* Promoting to 64 bits for calculation, but the final value can never be more than 32 bits, as + * described below, so this cast is safe. + * 1. (temp_brr + 1) can be off by an upper limit of 1 due to rounding from the calculation: + * freq_hz / divisor, or: + * freq_hz / divisor <= (temp_brr + 1) < (freq_hz / divisor) + 1 + * 2. Solving for err_divisor: + * freq_hz <= err_divisor < freq_hz + divisor + * 3. Solving for bit_err: + * 0 >= bit_err >= (freq_hz * 100000 / (freq_hz + divisor)) - 100000 + * 4. freq_hz >= divisor (or temp_brr would be -1 and we would never enter this while loop), so: + * 0 >= bit_err >= 100000 / freq_hz - 100000 + * 5. Larger frequencies yield larger bit errors (absolute value). As the frequency grows, + * the bit_err approaches -100000, so: + * 0 >= bit_err >= -100000 + * 6. bit_err is between -100000 and 0. This entire range fits in an int32_t type, so the cast + * to (int32_t) is safe. + */ + int32_t bit_err = (int32_t) (((((int64_t) freq_hz) * SCI_B_UART_100_PERCENT_X_1000) / + err_divisor) - SCI_B_UART_100_PERCENT_X_1000); + + uint8_t mddr = 0U; + if (bitrate_modulation) + { + /* Calculate the MDDR (M) value if bit rate modulation is enabled, + * The formula to calculate MBBR (from the M and N relationship given in the hardware manual) is as follows + * and it must be between 128 and 255. + * MDDR = ((div_coefficient * baud * 256) * (BRR + 1)) / PCLK */ + mddr = (uint8_t) ((uint32_t) err_divisor / (freq_hz / SCI_B_UART_MDDR_MAX)); + + /* MDDR value must be greater than or equal to SCI_B_UART_MDDR_MIN. */ + if (mddr < SCI_B_UART_MDDR_MIN) + { + break; + } + + /* Adjust bit rate error for bit rate modulation. The following formula is used: + * bit rate error [%] = ((bit rate error [%, no modulation] + 100) * MDDR / 256) - 100 + */ + bit_err = (((bit_err + SCI_B_UART_100_PERCENT_X_1000) * (int32_t) mddr) / + SCI_B_UART_MDDR_DIVISOR) - SCI_B_UART_100_PERCENT_X_1000; + } + + /* Take the absolute value of the bit rate error. */ + if (bit_err < 0) + { + bit_err = -bit_err; + } + + /* If the absolute value of the bit rate error is less than the previous lowest absolute value of + * bit rate error, then store these settings as the best value. + */ + if (bit_err < hit_bit_err) + { + p_baud_setting->baudrate_bits_b.bgdm = g_async_baud[i].bgdm; + p_baud_setting->baudrate_bits_b.abcs = g_async_baud[i].abcs; + p_baud_setting->baudrate_bits_b.abcse = g_async_baud[i].abcse; + p_baud_setting->baudrate_bits_b.cks = g_async_baud[i].cks; + p_baud_setting->baudrate_bits_b.brr = (uint8_t) temp_brr; + hit_bit_err = bit_err; + hit_mddr = mddr; + } + + if (bitrate_modulation) + { + p_baud_setting->baudrate_bits_b.brme = 1U; + p_baud_setting->baudrate_bits_b.mddr = hit_mddr; + } + else + { + break; + } + } + } + } + } + + /* Return an error if the percent error is larger than the maximum percent error allowed for this instance */ + FSP_ERROR_RETURN((hit_bit_err <= (int32_t) baud_rate_error_x_1000), FSP_ERR_INVALID_ARGUMENT); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_B_UART) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private Functions + **********************************************************************************************************************/ + +#if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + +/*******************************************************************************************************************//** + * Parameter error check function for read/write. + * + * @param[in] p_ctrl Pointer to the control block for the channel + * @param[in] addr Pointer to the buffer + * @param[in] bytes Number of bytes to read or write + * + * @retval FSP_SUCCESS No parameter error found + * @retval FSP_ERR_NOT_OPEN The control block has not been opened + * @retval FSP_ERR_ASSERTION Pointer to UART control block or configuration structure is NULL + * @retval FSP_ERR_INVALID_ARGUMENT Address is not aligned to 2-byte boundary or size is the odd number when the data + * length is 9-bit + **********************************************************************************************************************/ +static fsp_err_t r_sci_b_read_write_param_check (sci_b_uart_instance_ctrl_t const * const p_ctrl, + uint8_t const * const addr, + uint32_t const bytes) +{ + FSP_ASSERT(p_ctrl); + FSP_ASSERT(addr); + FSP_ASSERT(0U != bytes); + FSP_ERROR_RETURN(SCI_B_UART_OPEN == p_ctrl->open, FSP_ERR_NOT_OPEN); + + if (2U == p_ctrl->data_bytes) + { + /* Do not allow odd buffer address if data length is 9 bits. */ + FSP_ERROR_RETURN((0U == ((uint32_t) addr & SCI_B_UART_ALIGN_2_BYTES)), FSP_ERR_INVALID_ARGUMENT); + + /* Do not allow odd number of data bytes if data length is 9 bits. */ + FSP_ERROR_RETURN(0U == (bytes % 2U), FSP_ERR_INVALID_ARGUMENT); + } + + return FSP_SUCCESS; +} + +#endif +#if SCI_B_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Subroutine to apply common UART transfer settings. + * + * @param[in] p_cfg Pointer to UART specific configuration structure + * @param[in] p_transfer Pointer to transfer instance to configure + * + * @retval FSP_SUCCESS UART transfer drivers successfully configured + * @retval FSP_ERR_ASSERTION Invalid pointer + **********************************************************************************************************************/ +static fsp_err_t r_sci_b_uart_transfer_configure (sci_b_uart_instance_ctrl_t * const p_ctrl, + transfer_instance_t const * p_transfer, + uint32_t * p_transfer_reg, + uint32_t sci_buffer_address) +{ + /* Configure the transfer instance, if enabled. */ + #if (SCI_B_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_transfer->p_api); + FSP_ASSERT(NULL != p_transfer->p_cfg); + FSP_ASSERT(NULL != p_transfer->p_cfg->p_info); + FSP_ASSERT(NULL != p_transfer->p_cfg->p_extend); + #endif + + transfer_info_t * p_info = p_transfer->p_cfg->p_info; + + p_info->transfer_settings_word_b.size = TRANSFER_SIZE_1_BYTE; + + if (UART_DATA_BITS_9 == p_ctrl->p_cfg->data_bits) + { + p_info->transfer_settings_word_b.size = TRANSFER_SIZE_2_BYTE; + } + + /* Casting for compatibility with 7 or 8 bit mode. */ + *p_transfer_reg = sci_buffer_address; + + fsp_err_t err = p_transfer->p_api->open(p_transfer->p_ctrl, p_transfer->p_cfg); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + + return FSP_SUCCESS; +} + +#endif + +#if SCI_B_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Configures UART related transfer drivers (if enabled). + * + * @param[in] p_ctrl Pointer to UART control structure + * @param[in] p_cfg Pointer to UART specific configuration structure + * + * @retval FSP_SUCCESS UART transfer drivers successfully configured + * @retval FSP_ERR_ASSERTION Invalid pointer or required interrupt not enabled in vector table + * + * @return See @ref RENESAS_ERROR_CODES or functions called by this function for other possible + * return codes. This function calls: + * * @ref transfer_api_t::open + **********************************************************************************************************************/ +static fsp_err_t r_sci_b_uart_transfer_open (sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_B_UART_CFG_RX_ENABLE) + + /* If a transfer instance is used for reception, apply UART specific settings and open the transfer instance. */ + if (NULL != p_cfg->p_transfer_rx) + { + transfer_info_t * p_info = p_cfg->p_transfer_rx->p_cfg->p_info; + + p_info->transfer_settings_word = SCI_B_UART_DTC_RX_TRANSFER_SETTINGS; + + err = + r_sci_b_uart_transfer_configure(p_ctrl, p_cfg->p_transfer_rx, (uint32_t *) &p_info->p_src, + (uint32_t) &(p_ctrl->p_reg->RDR)); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + #if (SCI_B_UART_CFG_TX_ENABLE) + + /* If a transfer instance is used for transmission, apply UART specific settings and open the transfer instance. */ + if (NULL != p_cfg->p_transfer_tx) + { + transfer_info_t * p_info = p_cfg->p_transfer_tx->p_cfg->p_info; + + p_info->transfer_settings_word = SCI_B_UART_DTC_TX_TRANSFER_SETTINGS; + + err = r_sci_b_uart_transfer_configure(p_ctrl, + p_cfg->p_transfer_tx, + (uint32_t *) &p_info->p_dest, + (uint32_t) &p_ctrl->p_reg->TDR); + + #if (SCI_B_UART_CFG_RX_ENABLE) + if ((err != FSP_SUCCESS) && (NULL != p_cfg->p_transfer_rx)) + { + p_cfg->p_transfer_rx->p_api->close(p_cfg->p_transfer_rx->p_ctrl); + } + #endif + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + return err; +} + +#endif + +/*******************************************************************************************************************//** + * Configures UART related registers based on user configurations. + * + * @param[in] p_ctrl Pointer to UART control structure + * @param[in] p_cfg Pointer to UART specific configuration structure + **********************************************************************************************************************/ +static void r_sci_b_uart_config_set (sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ + sci_b_uart_extended_cfg_t * p_extend = (sci_b_uart_extended_cfg_t *) p_cfg->p_extend; + sci_b_baud_setting_t * p_baud_setting = p_extend->p_baud_setting; + uint32_t ccr2 = 0U; + + /* Set Character length, Stop bit length, Start bit edge detection and SCI mode as Asynchronous mode. */ + uint32_t ccr3 = (uint32_t) R_SCI_B0_CCR3_LSBF_Msk; + ccr3 |= ((uint32_t) p_cfg->data_bits << SCI_B_UART_CCR3_CHAR_OFFSET) & SCI_B_UART_CCR3_CHAR_MASK; + ccr3 |= ((uint32_t) p_cfg->stop_bits << R_SCI_B0_CCR3_STP_Pos) & R_SCI_B0_CCR3_STP_Msk; + ccr3 |= ((uint32_t) p_extend->rx_edge_start << R_SCI_B0_CCR3_RXDESEL_Pos) & R_SCI_B0_CCR3_RXDESEL_Msk; + ccr3 |= ((uint32_t) p_extend->rs485_setting.enable << R_SCI_B0_CCR3_DEN_Pos) & R_SCI_B0_CCR3_DEN_Msk; + ccr3 |= ((uint32_t) p_extend->clock << SCI_B_UART_CCR3_CKE_OFFSET) & SCI_B_UART_CCR3_CKE_MASK; +#if SCI_B_UART_CFG_FIFO_SUPPORT + if (p_ctrl->fifo_depth > 0U) + { + ccr3 |= (1U << R_SCI_B0_CCR3_FM_Pos) & R_SCI_B0_CCR3_FM_Msk; + } +#endif + p_ctrl->p_reg->CCR3 = ccr3; + + if ((SCI_B_UART_CLOCK_EXT8X == p_extend->clock) || (SCI_B_UART_CLOCK_EXT16X == p_extend->clock)) + { + /* Use external clock for baud rate */ + ccr2 = SCI_B_UART_CCR2_DEFAULT_VALUE; + + if (SCI_B_UART_CLOCK_EXT8X == p_extend->clock) + { + /* Set baud rate as (external clock / 8) */ + ccr2 |= 1U << R_SCI_B0_CCR2_ABCS_Pos; + } + } + else + { + /* Set the baud rate settings for the internal baud rate generator. */ + ccr2 |= p_baud_setting->baudrate_bits; + } + + p_ctrl->p_reg->CCR2 = ccr2; + + /* Configure flow control pin. */ + uint32_t ccr1 = ((uint32_t) (p_extend->flow_control << R_SCI_B0_CCR1_CTSE_Pos) & SCI_B_UART_CCR1_FLOW_CTSRTS_MASK); + + /* TXD pin is at high level when TE is 0. */ + ccr1 |= (3U << SCI_B_UART_CCR1_SPB2_OFFSET) & SCI_B_UART_CCR1_SPB2_MASK; + + if (0 != p_cfg->parity) + { + ccr1 |= + (((UART_PARITY_EVEN == + p_cfg->parity) ? 1U : 3U) << SCI_B_UART_CCR1_PARITY_OFFSET) & SCI_B_UART_CCR1_PARITY_MASK; + } + + ccr1 |= ((uint32_t) p_extend->noise_cancel << R_SCI_B0_CCR1_NFEN_Pos) & + R_SCI_B0_CCR1_NFEN_Msk; + p_ctrl->p_reg->CCR1 = ccr1; + + p_ctrl->p_reg->CCR4 = 0U; + +#if SCI_B_UART_CFG_FIFO_SUPPORT + + /* Configure FIFO related registers. */ + r_sci_b_uart_fifo_cfg(p_ctrl); +#else + + /* If fifo support is disabled and the current channel supports fifo set FCR to default */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + p_ctrl->p_reg->FCR = SCI_B_UART_FCR_DEFAULT_VALUE; + } +#endif + + /* Configure RS-485 DE assertion settings. */ + uint32_t dcr = ((uint32_t) (p_extend->rs485_setting.polarity << R_SCI_B0_DCR_DEPOL_Pos)) & R_SCI_B0_DCR_DEPOL_Msk; + dcr |= ((uint32_t) p_extend->rs485_setting.assertion_time << R_SCI_B0_DCR_DEAST_Pos) & + R_SCI_B0_DCR_DEAST_Msk; + dcr |= ((uint32_t) p_extend->rs485_setting.negation_time << R_SCI_B0_DCR_DENGT_Pos) & + R_SCI_B0_DCR_DENGT_Msk; + p_ctrl->p_reg->DCR = dcr; +} + +#if SCI_B_UART_CFG_FIFO_SUPPORT + +/*******************************************************************************************************************//** + * Resets FIFO related registers. + * + * @param[in] p_ctrl Pointer to UART instance control + * @param[in] p_cfg Pointer to UART configuration structure + **********************************************************************************************************************/ +static void r_sci_b_uart_fifo_cfg (sci_b_uart_instance_ctrl_t * const p_ctrl) +{ + if (0U != p_ctrl->fifo_depth) + { + uint32_t fcr = 0U; + + /* Set the tx and rx reset bits */ + p_ctrl->p_reg->FCR = (uint32_t) (SCI_B_UART_FCR_RESET_TX_RX); + + #if SCI_B_UART_CFG_RX_ENABLE + #if SCI_B_UART_CFG_DTC_SUPPORTED + + /* If DTC is used keep the receive trigger at the default level of 0. */ + if (NULL == p_ctrl->p_cfg->p_transfer_rx) + #endif + { + /* Otherwise, set receive trigger number as configured by the user. */ + sci_b_uart_extended_cfg_t const * p_extend = p_ctrl->p_cfg->p_extend; + + /* RTRG(Receive FIFO Data Trigger Number) controls when the RXI interrupt will be generated. If data is + * received but the trigger number is not met the RXI interrupt will be generated after 15 ETUs from + * the last stop bit in asynchronous mode. For more information see the FIFO Selected section of "Serial + * Data Reception in Asynchronous Mode" in the RA6T2 manual R01UH0951EJ0100 or the relevant section for + * the MCU being used. */ + fcr |= (((p_ctrl->fifo_depth - 1U) & p_extend->rx_fifo_trigger) & SCI_B_UART_FCR_TRIGGER_MASK) << + R_SCI_B0_FCR_RTRG_Pos; + } + + /* RTS asserts when the amount of received data stored in the fifo is equal or less than this value. */ + fcr |= ((p_ctrl->fifo_depth - 1U) & SCI_B_UART_FCR_TRIGGER_MASK) << R_SCI_B0_FCR_RSTRG_Pos; + #endif + + /* Set the FCR and reset the fifos. */ + p_ctrl->p_reg->FCR |= fcr; + } +} + +#endif + +/*******************************************************************************************************************//** + * Sets interrupt priority and initializes vector info. + * + * @param[in] p_ctrl Pointer to driver control block + * @param[in] ipl Interrupt priority level + * @param[in] irq IRQ number for this interrupt + **********************************************************************************************************************/ +static void r_sci_b_irq_cfg (sci_b_uart_instance_ctrl_t * const p_ctrl, uint8_t const ipl, IRQn_Type const irq) +{ + /* Disable interrupts, set priority, and store control block in the vector information so it can be accessed + * from the callback. */ + R_BSP_IrqDisable(irq); + R_BSP_IrqStatusClear(irq); + R_BSP_IrqCfg(irq, ipl, p_ctrl); +} + +/*******************************************************************************************************************//** + * Sets interrupt priority and initializes vector info for all interrupts. + * + * @param[in] p_ctrl Pointer to UART instance control block + * @param[in] p_cfg Pointer to UART specific configuration structure + **********************************************************************************************************************/ +static void r_sci_b_irqs_cfg (sci_b_uart_instance_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ +#if (SCI_B_UART_CFG_RX_ENABLE) + + /* ERI is optional. */ + r_sci_b_irq_cfg(p_ctrl, p_cfg->eri_ipl, p_cfg->eri_irq); + r_sci_b_irq_cfg(p_ctrl, p_cfg->rxi_ipl, p_cfg->rxi_irq); +#endif +#if (SCI_B_UART_CFG_TX_ENABLE) + r_sci_b_irq_cfg(p_ctrl, p_cfg->txi_ipl, p_cfg->txi_irq); + r_sci_b_irq_cfg(p_ctrl, p_cfg->tei_ipl, p_cfg->tei_irq); +#endif +} + +#if SCI_B_UART_CFG_DTC_SUPPORTED + +/*******************************************************************************************************************//** + * Closes transfer interfaces. + * + * @param[in] p_ctrl Pointer to UART instance control block + **********************************************************************************************************************/ +static void r_sci_b_uart_transfer_close (sci_b_uart_instance_ctrl_t * p_ctrl) +{ + #if (SCI_B_UART_CFG_RX_ENABLE) + if (NULL != p_ctrl->p_cfg->p_transfer_rx) + { + p_ctrl->p_cfg->p_transfer_rx->p_api->close(p_ctrl->p_cfg->p_transfer_rx->p_ctrl); + } + #endif + #if (SCI_B_UART_CFG_TX_ENABLE) + if (NULL != p_ctrl->p_cfg->p_transfer_tx) + { + p_ctrl->p_cfg->p_transfer_tx->p_api->close(p_ctrl->p_cfg->p_transfer_tx->p_ctrl); + } + #endif +} + +#endif + +/*******************************************************************************************************************//** + * Calls user callback. + * + * @param[in] p_ctrl Pointer to UART instance control block + * @param[in] data See uart_callback_args_t in r_uart_api.h + * @param[in] event Event code + **********************************************************************************************************************/ +static void r_sci_b_uart_call_callback (sci_b_uart_instance_ctrl_t * p_ctrl, uint32_t data, uart_event_t event) +{ + uart_callback_args_t args; + + /* Store callback arguments in memory provided by user if available. This allows callback arguments to be + * stored in non-secure memory so they can be accessed by a non-secure callback function. */ + uart_callback_args_t * p_args = p_ctrl->p_callback_memory; + if (NULL == p_args) + { + /* Store on stack */ + p_args = &args; + } + else + { + /* Save current arguments on the stack in case this is a nested interrupt. */ + args = *p_args; + } + + p_args->channel = p_ctrl->p_cfg->channel; + p_args->data = data; + p_args->event = event; + p_args->p_context = p_ctrl->p_context; + +#if BSP_TZ_SECURE_BUILD + + /* p_callback can point to a secure function or a non-secure function. */ + if (!cmse_is_nsfptr(p_ctrl->p_callback)) + { + /* If p_callback is secure, then the project does not need to change security state. */ + p_ctrl->p_callback(p_args); + } + else + { + /* If p_callback is Non-secure, then the project must change to Non-secure state in order to call the callback. */ + sci_b_uart_prv_ns_callback p_callback = (sci_b_uart_prv_ns_callback) (p_ctrl->p_callback); + p_callback(p_args); + } + +#else + + /* If the project is not Trustzone Secure, then it will never need to change security state in order to call the callback. */ + p_ctrl->p_callback(p_args); +#endif + if (NULL != p_ctrl->p_callback_memory) + { + /* Restore callback memory in case this is a nested interrupt. */ + *p_ctrl->p_callback_memory = args; + } +} + +#if (SCI_B_UART_CFG_TX_ENABLE) + +/*******************************************************************************************************************//** + * TXI interrupt processing for UART mode. TXI interrupt fires when the data in the data register or FIFO register has + * been transferred to the data shift register, and the next data can be written. This interrupt writes the next data. + * After the last data byte is written, this interrupt disables the TXI interrupt and enables the TEI (transmit end) + * interrupt. + **********************************************************************************************************************/ +void sci_b_uart_txi_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + if ((NULL == p_ctrl->p_cfg->p_transfer_tx) && (0U != p_ctrl->tx_src_bytes)) + { + /* Fill the FIFO if its used. Otherwise write data to the TDR. */ + #if SCI_B_UART_CFG_FIFO_SUPPORT + if (0U != p_ctrl->fifo_depth) + { + uint32_t fifo_count = p_ctrl->p_reg->FTSR_b.T; + for (uint32_t cnt = fifo_count; (cnt < p_ctrl->fifo_depth) && p_ctrl->tx_src_bytes; cnt++) + { + if ((2U == p_ctrl->data_bytes)) + { + /* Write 16-bit data to TDR register */ + p_ctrl->p_reg->TDR = (uint32_t) (*(uint16_t *) (p_ctrl->p_tx_src)) & SCI_B_UART_TDR_TDAT_MASK_9BITS; + } + else + { + /* Write 1byte data to TDR_BY register */ + p_ctrl->p_reg->TDR_BY = (*(p_ctrl->p_tx_src)); + } + + p_ctrl->tx_src_bytes -= p_ctrl->data_bytes; + p_ctrl->p_tx_src += p_ctrl->data_bytes; + } + + /* Clear TDRE flag */ + p_ctrl->p_reg->CFCLR |= SCI_B_UART_CFCLR_TDREC_MASK; + } + else + #endif + { + if ((2U == p_ctrl->data_bytes)) + { + /* Write 16-bit data to TDR register */ + p_ctrl->p_reg->TDR = (uint32_t) (*(uint16_t *) (p_ctrl->p_tx_src)) & SCI_B_UART_TDR_TDAT_MASK_9BITS; + } + else + { + /* Write 1byte data to TDR_BY register */ + p_ctrl->p_reg->TDR_BY = (*(p_ctrl->p_tx_src)); + } + + p_ctrl->tx_src_bytes -= p_ctrl->data_bytes; + p_ctrl->p_tx_src += p_ctrl->data_bytes; + } + } + + if (0U == p_ctrl->tx_src_bytes) + { + /* After all data has been transmitted, disable transmit interrupts and enable the transmit end interrupt. */ + uint32_t ccr0_temp = p_ctrl->p_reg->CCR0; + ccr0_temp |= R_SCI_B0_CCR0_TEIE_Msk; + ccr0_temp &= (uint32_t) ~(R_SCI_B0_CCR0_TIE_Msk); + p_ctrl->p_reg->CCR0 = ccr0_temp; + + p_ctrl->p_tx_src = NULL; + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_TX_DATA_EMPTY); + } + } + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + +/*******************************************************************************************************************//** + * RXI interrupt processing for UART mode. RXI interrupt happens when data arrives to the data register or the FIFO + * register. This function calls callback function when it meets conditions below. + * - UART_EVENT_RX_COMPLETE: The number of data which has been read reaches to the number specified in R_SCI_B_UART_Read() + * if a transfer instance is used for reception. + * - UART_EVENT_RX_CHAR: Data is received asynchronously (read has not been called) + * + * This interrupt also calls the callback function for RTS pin control if it is registered in R_SCI_B_UART_Open(). This is + * special functionality to expand SCI hardware capability and make RTS/CTS hardware flow control possible. If macro + * 'SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT' is set, it is called at the beginning in this function to set the RTS pin high, + * then it is it is called again just before leaving this function to set the RTS pin low. + * @retval none + **********************************************************************************************************************/ +void sci_b_uart_rxi_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + #if SCI_B_UART_CFG_DTC_SUPPORTED + if ((p_ctrl->p_cfg->p_transfer_rx == NULL) || (0 == p_ctrl->rx_dest_bytes)) + #endif + { + #if (SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_ctrl->flow_pin != SCI_B_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + + /* Pause the transmission of data from the other device. */ + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_B_UART_FLOW_CONTROL_ACTIVE); + } + #endif + + uint32_t data; + #if SCI_B_UART_CFG_FIFO_SUPPORT + do + { + if ((p_ctrl->fifo_depth > 0U)) + { + if (p_ctrl->p_reg->FRSR_b.R > 0U) + { + if (2U == p_ctrl->data_bytes) + { + data = p_ctrl->p_reg->RDR & R_SCI_B0_RDR_RDAT_Msk; + } + else + { + data = p_ctrl->p_reg->RDR_BY; + } + } + else + { + break; + } + } + else if (2U == p_ctrl->data_bytes) + #else + { + if (2U == p_ctrl->data_bytes) + #endif + { + data = p_ctrl->p_reg->RDR & R_SCI_B0_RDR_RDAT_Msk; + } + else + { + data = p_ctrl->p_reg->RDR_BY; + } + + if (0 == p_ctrl->rx_dest_bytes) + { + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Call user callback with the data. */ + r_sci_b_uart_call_callback(p_ctrl, data, UART_EVENT_RX_CHAR); + } + } + else + { + memcpy((void *) p_ctrl->p_rx_dest, &data, p_ctrl->data_bytes); + p_ctrl->p_rx_dest += p_ctrl->data_bytes; + p_ctrl->rx_dest_bytes -= p_ctrl->data_bytes; + + if (0 == p_ctrl->rx_dest_bytes) + { + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + } + } + + #if SCI_B_UART_CFG_FIFO_SUPPORT + } while ((p_ctrl->fifo_depth > 0U) && ((p_ctrl->p_reg->FRSR_b.R) > 0U)); + + if (p_ctrl->fifo_depth > 0U) + { + p_ctrl->p_reg->CFCLR |= SCI_B_UART_CFCLR_RDRFC_MASK; + } + + #else + } + #endif + #if (SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_ctrl->flow_pin != SCI_B_UART_INVALID_16BIT_PARAM) + { + /* Resume the transmission of data from the other device. */ + R_BSP_PinWrite(p_ctrl->flow_pin, SCI_B_UART_FLOW_CONTROL_INACTIVE); + R_BSP_PinAccessDisable(); + } + #endif + } + + #if SCI_B_UART_CFG_DTC_SUPPORTED + else + { + p_ctrl->rx_dest_bytes = 0; + + p_ctrl->p_rx_dest = NULL; + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Call callback */ + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + } + #endif + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif + +#if (SCI_B_UART_CFG_TX_ENABLE) + +/*******************************************************************************************************************//** + * TEI interrupt processing for UART mode. The TEI interrupt fires after the last byte is transmitted on the TX pin. + * The user callback function is called with the UART_EVENT_TX_COMPLETE event code (if it is registered in + * R_SCI_B_UART_Open()). + **********************************************************************************************************************/ +void sci_b_uart_tei_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + p_ctrl->p_reg->CCR0 &= (uint32_t) ~(R_SCI_B0_CCR0_TE_Msk | R_SCI_B0_CCR0_TIE_Msk | R_SCI_B0_CCR0_TEIE_Msk); + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Receiving TEI(transmit end interrupt) means the completion of transmission, so call callback function here. */ + r_sci_b_uart_call_callback(p_ctrl, 0U, UART_EVENT_TX_COMPLETE); + } + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif + +#if (SCI_B_UART_CFG_RX_ENABLE) + +/*******************************************************************************************************************//** + * ERI interrupt processing for UART mode. When an ERI interrupt fires, the user callback function is called if it is + * registered in R_SCI_B_UART_Open() with the event code that triggered the interrupt. + **********************************************************************************************************************/ +void sci_b_uart_eri_isr (void) +{ + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_b_uart_instance_ctrl_t * p_ctrl = (sci_b_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + uint32_t data = 0U; + + /* Read data. */ + if (2U == p_ctrl->data_bytes) + { + data = p_ctrl->p_reg->RDR & R_SCI_B0_RDR_RDAT_Msk; + } + else + { + data = p_ctrl->p_reg->RDR_BY; + } + + /* Determine cause of error. */ + uint32_t csr = p_ctrl->p_reg->CSR; + uart_event_t event = (uart_event_t) ((((csr & R_SCI_B0_CSR_ORER_Msk) == R_SCI_B0_CSR_ORER_Msk) << 5U) | + (((csr & R_SCI_B0_CSR_FER_Msk) == R_SCI_B0_CSR_FER_Msk) << 4U) | + (((csr & R_SCI_B0_CSR_PER_Msk) == R_SCI_B0_CSR_PER_Msk) << 3U)); + + /* Check if there is a break detected. */ + if ((UART_EVENT_ERR_FRAMING == (event & UART_EVENT_ERR_FRAMING)) && (0U == p_ctrl->p_reg->CSR_b.RXDMON)) + { + event |= UART_EVENT_BREAK_DETECT; + } + + /* Clear error condition. */ + p_ctrl->p_reg->CFCLR |= SCI_B_UART_RCVR_ERR_MASK; + + /* If a callback was provided, call it with the argument */ + if (NULL != p_ctrl->p_callback) + { + /* Call callback. */ + r_sci_b_uart_call_callback(p_ctrl, data, event); + } + + /* Clear pending IRQ to make sure it doesn't fire again after exiting */ + R_BSP_IrqStatusClear(irq); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE +} + +#endif diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/SConscript b/bsp/renesas/ra8d1-ek/ra_cfg/SConscript new file mode 100644 index 0000000000..ff52ceb4fe --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/SConscript @@ -0,0 +1,20 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd+'/fsp_cfg', cwd + '/fsp_cfg/bsp'] + +group += DefineGroup('ra_cfg', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h new file mode 100644 index 0000000000..02732917fc --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/board_cfg.h @@ -0,0 +1,5 @@ +/* generated configuration header file - do not edit */ +#ifndef BOARD_CFG_H_ +#define BOARD_CFG_H_ +#include "../../../ra/board/ra8d1_ek/board.h" +#endif /* BOARD_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h new file mode 100644 index 0000000000..f509c7eb90 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_cfg.h @@ -0,0 +1,62 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_CFG_H_ +#define BSP_CFG_H_ +#ifdef __cplusplus + extern "C" { + #endif + + #include "bsp_clock_cfg.h" + #include "bsp_mcu_family_cfg.h" + #include "board_cfg.h" + #define RA_NOT_DEFINED 0 + #ifndef BSP_CFG_RTOS + #if (RA_NOT_DEFINED) != (RA_NOT_DEFINED) + #define BSP_CFG_RTOS (2) + #elif (RA_NOT_DEFINED) != (RA_NOT_DEFINED) + #define BSP_CFG_RTOS (1) + #else + #define BSP_CFG_RTOS (0) + #endif + #endif + #ifndef BSP_CFG_RTC_USED + #define BSP_CFG_RTC_USED (RA_NOT_DEFINED) + #endif + #undef RA_NOT_DEFINED + #if defined(_RA_BOOT_IMAGE) + #define BSP_CFG_BOOT_IMAGE (1) + #endif + #define BSP_CFG_MCU_VCC_MV (3300) + #define BSP_CFG_STACK_MAIN_BYTES (0x400) + #define BSP_CFG_HEAP_BYTES (0x4000) + #define BSP_CFG_PARAM_CHECKING_ENABLE (0) + #define BSP_CFG_ASSERT (0) + #define BSP_CFG_ERROR_LOG (0) + + #define BSP_CFG_PFS_PROTECT ((1)) + + #define BSP_CFG_C_RUNTIME_INIT ((1)) + #define BSP_CFG_EARLY_INIT ((0)) + + #define BSP_CFG_STARTUP_CLOCK_REG_NOT_RESET ((0)) + + #ifndef BSP_CLOCK_CFG_MAIN_OSC_POPULATED + #define BSP_CLOCK_CFG_MAIN_OSC_POPULATED (1) + #endif + + #ifndef BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE + #define BSP_CLOCK_CFG_MAIN_OSC_CLOCK_SOURCE (0) + #endif + #ifndef BSP_CLOCK_CFG_SUBCLOCK_DRIVE + #define BSP_CLOCK_CFG_SUBCLOCK_DRIVE (0) + #endif + #ifndef BSP_CLOCK_CFG_SUBCLOCK_POPULATED + #define BSP_CLOCK_CFG_SUBCLOCK_POPULATED (1) + #endif + #ifndef BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS + #define BSP_CLOCK_CFG_SUBCLOCK_STABILIZATION_MS 1000 + #endif + + #ifdef __cplusplus + } + #endif +#endif /* BSP_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h new file mode 100644 index 0000000000..92e7ddcdb6 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h @@ -0,0 +1,5 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_CFG_H_ +#define BSP_MCU_DEVICE_CFG_H_ +#define BSP_CFG_MCU_PART_SERIES (8) +#endif /* BSP_MCU_DEVICE_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h new file mode 100644 index 0000000000..7ac2befc3d --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h @@ -0,0 +1,11 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_R7FA8D1BHECBD + #define BSP_MCU_FEATURE_SET ('B') + #define BSP_ROM_SIZE_BYTES (2064384) + #define BSP_RAM_SIZE_BYTES (917504) + #define BSP_DATA_FLASH_SIZE_BYTES (12288) + #define BSP_PACKAGE_BGA + #define BSP_PACKAGE_PINS (224) +#endif /* BSP_MCU_DEVICE_PN_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h new file mode 100644 index 0000000000..ff077eaa46 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h @@ -0,0 +1,560 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_FAMILY_CFG_H_ +#define BSP_MCU_FAMILY_CFG_H_ +#include "bsp_mcu_device_pn_cfg.h" + #include "bsp_mcu_device_cfg.h" + #include "../../../ra/fsp/src/bsp/mcu/ra8d1/bsp_override.h" + #include "../../../ra/fsp/src/bsp/mcu/ra8d1/bsp_mcu_info.h" + #include "bsp_clock_cfg.h" + #define BSP_MCU_GROUP_RA8D1 (1) + #define BSP_LOCO_HZ (32768) + #define BSP_MOCO_HZ (8000000) + #define BSP_SUB_CLOCK_HZ (0) + #if BSP_CFG_HOCO_FREQUENCY == 0 + #define BSP_HOCO_HZ (16000000) + #elif BSP_CFG_HOCO_FREQUENCY == 1 + #define BSP_HOCO_HZ (18000000) + #elif BSP_CFG_HOCO_FREQUENCY == 2 + #define BSP_HOCO_HZ (20000000) + #elif BSP_CFG_HOCO_FREQUENCY == 4 + #define BSP_HOCO_HZ (32000000) + #elif BSP_CFG_HOCO_FREQUENCY == 7 + #define BSP_HOCO_HZ (48000000) + #else + #error "Invalid HOCO frequency chosen (BSP_CFG_HOCO_FREQUENCY) in bsp_clock_cfg.h" + #endif + + #define BSP_CFG_FLL_ENABLE (0) + + #define BSP_CFG_CLOCK_SETTLING_DELAY_ENABLE (1) + #define BSP_CFG_SLEEP_MODE_DELAY_ENABLE (1) + #define BSP_CFG_MSTP_CHANGE_DELAY_ENABLE (1) + #define BSP_CFG_RTOS_IDLE_SLEEP (0) + #define BSP_CFG_CLOCK_SETTLING_DELAY_US (150) + + #if defined(BSP_PACKAGE_LQFP) && (BSP_PACKAGE_PINS == 100) + #define BSP_MAX_CLOCK_CHANGE_THRESHOLD (180000000U) + #elif defined(BSP_PACKAGE_LQFP) + #define BSP_MAX_CLOCK_CHANGE_THRESHOLD (200000000U) + #else + #define BSP_MAX_CLOCK_CHANGE_THRESHOLD (240000000U) + #endif + + #define BSP_CORTEX_VECTOR_TABLE_ENTRIES (16U) + #define BSP_VECTOR_TABLE_MAX_ENTRIES (112U) + + #if defined(_RA_TZ_SECURE) + #define BSP_TZ_SECURE_BUILD (1) + #define BSP_TZ_NONSECURE_BUILD (0) + #elif defined(_RA_TZ_NONSECURE) + #define BSP_TZ_SECURE_BUILD (0) + #define BSP_TZ_NONSECURE_BUILD (1) + #else + #define BSP_TZ_SECURE_BUILD (0) + #define BSP_TZ_NONSECURE_BUILD (0) + #endif + + /* TrustZone Settings */ + #define BSP_TZ_CFG_INIT_SECURE_ONLY (BSP_CFG_CLOCKS_SECURE || (!BSP_CFG_CLOCKS_OVERRIDE)) + #define BSP_TZ_CFG_SKIP_INIT (BSP_TZ_NONSECURE_BUILD && BSP_TZ_CFG_INIT_SECURE_ONLY) + #define BSP_TZ_CFG_EXCEPTION_RESPONSE (0) + + /* CMSIS TrustZone Settings */ + #define SCB_CSR_AIRCR_INIT (1) + #define SCB_AIRCR_BFHFNMINS_VAL (0) + #define SCB_AIRCR_SYSRESETREQS_VAL (1) + #define SCB_AIRCR_PRIS_VAL (0) + #define TZ_FPU_NS_USAGE (1) +#ifndef SCB_NSACR_CP10_11_VAL + #define SCB_NSACR_CP10_11_VAL (3U) +#endif + +#ifndef FPU_FPCCR_TS_VAL + #define FPU_FPCCR_TS_VAL (1U) +#endif + #define FPU_FPCCR_CLRONRETS_VAL (1) + +#ifndef FPU_FPCCR_CLRONRET_VAL + #define FPU_FPCCR_CLRONRET_VAL (1) +#endif + + /* Type 1 Peripheral Security Attribution */ + + /* Peripheral Security Attribution Register (PSAR) Settings */ +#ifndef BSP_TZ_CFG_PSARB +#define BSP_TZ_CFG_PSARB (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4) /* I3C */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8) /* IIC1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 9) /* IIC0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11) /* USBFS */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12) /* USBHS */ | \ + (1 << 15) /* ETHERC/EDMAC */ | \ + (1 << 16) /* OSPI */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 18) /* SPI1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 19) /* SPI0 */ | \ + (((1 > 0) ? 0U : 1U) << 22) /* SCI9 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* SCI4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 28) /* SCI3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 29) /* SCI2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 30) /* SCI1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* SCI0 */) +#endif +#ifndef BSP_TZ_CFG_PSARC +#define BSP_TZ_CFG_PSARC (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 0) /* CAC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1) /* CRC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 7) /* SSIE1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8) /* SSIE0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11) /* SDHI1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12) /* SDHI0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 13) /* DOC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 15) /* GLCDC/MIPI-DSI/DRW */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 16) /* CEU */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 26) /* CANFD1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* CANFD0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* RSIP7 */) +#endif +#ifndef BSP_TZ_CFG_PSARD +#define BSP_TZ_CFG_PSARD (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4) /* AGT1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 5) /* AGT0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11) /* POEG3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12) /* POEG2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 13) /* POEG1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 14) /* POEG0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 15) /* ADC121 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 16) /* ADC120 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 20) /* DAC120 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 22) /* TSN */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* ACMPHS1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 28) /* ACMPHS0 */) +#endif +#ifndef BSP_TZ_CFG_PSARE +#define BSP_TZ_CFG_PSARE (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1) /* WDT */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 2) /* IWDT */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 3) /* RTC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8) /* ULPT1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 9) /* ULPT0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 18) /* GPT13 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 19) /* GPT12 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 20) /* GPT11 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 21) /* GPT10 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 22) /* GPT9 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 23) /* GPT8 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 24) /* GPT7 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 25) /* GPT6 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 26) /* GPT5 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 27) /* GPT4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 28) /* GPT3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 29) /* GPT2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 30) /* GPT1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* GPT0 */) +#endif +#ifndef BSP_TZ_CFG_MSSAR +#define BSP_TZ_CFG_MSSAR (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 22) /* DTC_DMAC */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 31) /* ELC */) +#endif + + /* Type 2 Peripheral Security Attribution */ + + /* Security attribution for RSTSRn registers. */ +#ifndef BSP_TZ_CFG_RSTSAR +#define BSP_TZ_CFG_RSTSAR (0x0000000FU) +#endif + + /* Security attribution for registers of LVD channels. */ +#ifndef BSP_TZ_CFG_LVDSAR + /* The LVD driver needs to access both channels. This means that the security attribution for both channels must be the same. */ +#if (RA_NOT_DEFINED > 0) || (RA_NOT_DEFINED > 0) +#define BSP_TZ_CFG_LVDSAR (0U) +#else +#define BSP_TZ_CFG_LVDSAR (3U) +#endif +#endif + + /* Security attribution for LPM registers. + * - OPCCR based on clock security. + * - Set remaining registers based on LPM security. + */ +#ifndef BSP_TZ_CFG_LPMSAR +#define BSP_TZ_CFG_LPMSAR ((RA_NOT_DEFINED > 0) ? BSP_CFG_CLOCKS_SECURE == 0 : (\ + 0x002E0106U | \ + (BSP_CFG_CLOCKS_SECURE == 0))) +#endif + /* Deep Standby Interrupt Factor Security Attribution Register. */ +#ifndef BSP_TZ_CFG_DPFSAR +#define BSP_TZ_CFG_DPFSAR ((RA_NOT_DEFINED > 0) ? 0U : 0xAF1FFFFFU) +#endif + /* RAM Standby Control Security Attribution Register. */ +#ifndef BSP_TZ_CFG_RSCSAR +#define BSP_TZ_CFG_RSCSAR ((RA_NOT_DEFINED > 0) ? 0U : 0x00037FFFU) +#endif + /* Power Gating Control Security Attribution Register */ +#ifndef BSP_TZ_CFG_PGCSAR +#define BSP_TZ_CFG_PGCSAR 0 +#endif + + /* Security attribution for CGC registers. */ +#ifndef BSP_TZ_CFG_CGFSAR +#if BSP_CFG_CLOCKS_SECURE +/* Protect all CGC registers from Non-secure write access. */ +#define BSP_TZ_CFG_CGFSAR (0U) +#else +/* Allow Secure and Non-secure write access. */ +#define BSP_TZ_CFG_CGFSAR (0x047F3BFDU) +#endif +#endif + + /* Security attribution for Battery Backup registers. */ +#ifndef BSP_TZ_CFG_BBFSAR +#define BSP_TZ_CFG_BBFSAR (0x0000001FU) +#endif + + /* Security attribution for registers for IRQ channels. */ +#ifndef BSP_TZ_CFG_ICUSARA +#define BSP_TZ_CFG_ICUSARA (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 0U) /* External IRQ0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1U) /* External IRQ1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 2U) /* External IRQ2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 3U) /* External IRQ3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4U) /* External IRQ4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 5U) /* External IRQ5 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 6U) /* External IRQ6 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 7U) /* External IRQ7 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 8U) /* External IRQ8 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 9U) /* External IRQ9 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 10U) /* External IRQ10 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 11U) /* External IRQ11 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 12U) /* External IRQ12 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 13U) /* External IRQ13 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 14U) /* External IRQ14 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 15U) /* External IRQ15 */) +#endif + + /* Security attribution for NMI registers. */ +#ifndef BSP_TZ_CFG_ICUSARB +#define BSP_TZ_CFG_ICUSARB (0 | 0xFFFFFFFEU) /* Should match AIRCR.BFHFNMINS. */ +#endif + + /* Security attribution for registers for DMAC channels */ +#ifndef BSP_TZ_CFG_DMACCHSAR +#define BSP_TZ_CFG_DMACCHSAR (\ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 0U) /* DMAC Channel 0 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 1U) /* DMAC Channel 1 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 2U) /* DMAC Channel 2 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 3U) /* DMAC Channel 3 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 4U) /* DMAC Channel 4 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 5U) /* DMAC Channel 5 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 6U) /* DMAC Channel 6 */ | \ + (((RA_NOT_DEFINED > 0) ? 0U : 1U) << 7U) /* DMAC Channel 7 */) +#endif + + /* Security attribution registers for WUPEN0. */ +#ifndef BSP_TZ_CFG_ICUSARE +#define BSP_TZ_CFG_ICUSARE ((RA_NOT_DEFINED > 0) ? 0U : 0xFF1D0000U) +#endif + + /* Security attribution registers for WUPEN1. */ +#ifndef BSP_TZ_CFG_ICUSARF +#define BSP_TZ_CFG_ICUSARF ((RA_NOT_DEFINED > 0) ? 0U : 0x00007F08U) +#endif + + /* Trusted Event Route Control Register for IELSR, DMAC.DELSR and ELC.ELSR. Note that currently Trusted Event Route Control is not supported. */ +#ifndef BSP_TZ_CFG_TEVTRCR +#define BSP_TZ_CFG_TEVTRCR (0) +#endif + + /* Security attribution register for ELCR, ELSEGR0, ELSEGR1 Security Attribution. */ +#ifndef BSP_TZ_CFG_ELCSARA + #define BSP_TZ_CFG_ELCSARA (0x00000007U) +#endif + + /* Set DTCSTSAR if the Secure program uses the DTC. */ +#if RA_NOT_DEFINED == RA_NOT_DEFINED + #define BSP_TZ_CFG_DTC_USED (0U) +#else + #define BSP_TZ_CFG_DTC_USED (1U) +#endif + + /* Security attribution of FLWT and FCKMHZ registers. */ +#ifndef BSP_TZ_CFG_FSAR +/* If the CGC registers are only accessible in Secure mode, than there is no + * reason for nonsecure applications to access FLWT and FCKMHZ. */ +#define BSP_TZ_CFG_FSAR (\ + ((BSP_CFG_CLOCKS_SECURE == 0) ? (1U << 0) : 0U) | /* FLWTSA */\ + ((RA_NOT_DEFINED) > 0 ? 0U: (1U << 1)) | /* FCACHESA */\ + ((BSP_CFG_CLOCKS_SECURE == 0) ? (1U << 8) : 0U) | /* FCKMHZSA */ \ + ((RA_NOT_DEFINED) > 0 ? 0U : (1U << 9U)) | /* FACICMISA */\ + ((RA_NOT_DEFINED) > 0 ? 0U: (1U << 10U)) /* FACICMRSA */) +#endif + + /* Security attribution for SRAM registers. */ +#ifndef BSP_TZ_CFG_SRAMSAR +/* If the CGC registers are only accessible in Secure mode, than there is no reason for Non Secure applications to access + * SRAM0WTEN and therefore there is no reason to access PRCR2. */ + #define BSP_TZ_CFG_SRAMSAR (\ + ((1U) << 0U) | /* SRAMSA0 */\ + ((1U) << 1U) | /* SRAMSA1 */\ + ((1U) << 7U) | /* STBRAMSA */\ + ((BSP_CFG_CLOCKS_SECURE == 0) ? (1U << 8U) : 0U) /* SRAMWTSA */) +#endif + + /* Security attribution for the DMAC Bus Master MPU settings. */ +#ifndef BSP_TZ_CFG_MMPUSARA + /* The DMAC Bus Master MPU settings should align with the DMAC channel settings. */ + #define BSP_TZ_CFG_MMPUSARA (BSP_TZ_CFG_DMACCHSAR) +#endif + + /* Security Attribution Register A for BUS Control registers. */ +#ifndef BSP_TZ_CFG_BUSSARA + #define BSP_TZ_CFG_BUSSARA (1U) +#endif + /* Security Attribution Register B for BUS Control registers. */ +#ifndef BSP_TZ_CFG_BUSSARB + #define BSP_TZ_CFG_BUSSARB (1U) +#endif + /* Security Attribution Register C for BUS Control registers. */ +#ifndef BSP_TZ_CFG_BUSSARC + #define BSP_TZ_CFG_BUSSARC (1U) +#endif + + /* Enable Uninitialized Non-Secure Application Fallback. */ +#ifndef BSP_TZ_CFG_NON_SECURE_APPLICATION_FALLBACK + #define BSP_TZ_CFG_NON_SECURE_APPLICATION_FALLBACK (1U) +#endif + + + #define OFS_SEQ1 0xA001A001 | (1 << 1) | (3 << 2) + #define OFS_SEQ2 (15 << 4) | (3 << 8) | (3 << 10) + #define OFS_SEQ3 (1 << 12) | (1 << 14) | (1 << 17) + #define OFS_SEQ4 (3 << 18) |(15 << 20) | (3 << 24) | (3 << 26) + #define OFS_SEQ5 (1 << 28) | (1 << 30) + #define BSP_CFG_ROM_REG_OFS0 (OFS_SEQ1 | OFS_SEQ2 | OFS_SEQ3 | OFS_SEQ4 | OFS_SEQ5) + + #define BSP_CFG_ROM_REG_OFS2 ((1 << 0) | 0xFFFFFFFEU) + + /* Option Function Select Register 1 Security Attribution */ +#ifndef BSP_CFG_ROM_REG_OFS1_SEL +#if defined(_RA_TZ_SECURE) || defined(_RA_TZ_NONSECURE) + #define BSP_CFG_ROM_REG_OFS1_SEL (0x00000000U | ((0U << 0U)) | ((0U << 3U)) | ((0U << 5U)) | ((BSP_CFG_CLOCKS_SECURE == 0) ? 0xF00U : 0U) | ((0U << 24U)) | ((0U << 25U))) +#else + #define BSP_CFG_ROM_REG_OFS1_SEL (0x00000000U) +#endif +#endif + #define BSP_CFG_ROM_REG_OFS1_INITECCEN (0 << 25) + #define BSP_CFG_ROM_REG_OFS1 (0xFCFFFED0 | (1 << 3) | (7) | (1 << 5) | (1 << 8) | (1 << 24) | (BSP_CFG_ROM_REG_OFS1_INITECCEN)) + + /* Used to create IELS values for the interrupt initialization table g_interrupt_event_link_select. */ + #define BSP_PRV_IELS_ENUM(vector) (ELC_ ## vector) + + /* Dual Mode Select Register */ +#ifndef BSP_CFG_ROM_REG_DUALSEL + #define BSP_CFG_ROM_REG_DUALSEL (0xFFFFFFF8U | (0x7U)) +#endif + + /* Block Protection Register 0 */ +#ifndef BSP_CFG_ROM_REG_BPS0 + #define BSP_CFG_ROM_REG_BPS0 (~( 0U)) +#endif + /* Block Protection Register 1 */ +#ifndef BSP_CFG_ROM_REG_BPS1 + #define BSP_CFG_ROM_REG_BPS1 (~( 0U)) +#endif + /* Block Protection Register 2 */ +#ifndef BSP_CFG_ROM_REG_BPS2 + #define BSP_CFG_ROM_REG_BPS2 (~( 0U)) +#endif + /* Block Protection Register 3 */ +#ifndef BSP_CFG_ROM_REG_BPS3 + #define BSP_CFG_ROM_REG_BPS3 (~( 0U)) +#endif + /* Permanent Block Protection Register 0 */ +#ifndef BSP_CFG_ROM_REG_PBPS0 + #define BSP_CFG_ROM_REG_PBPS0 (~( 0U)) +#endif + /* Permanent Block Protection Register 1 */ +#ifndef BSP_CFG_ROM_REG_PBPS1 + #define BSP_CFG_ROM_REG_PBPS1 (~( 0U)) +#endif + /* Permanent Block Protection Register 2 */ +#ifndef BSP_CFG_ROM_REG_PBPS2 + #define BSP_CFG_ROM_REG_PBPS2 (~( 0U)) +#endif + /* Permanent Block Protection Register 3 */ +#ifndef BSP_CFG_ROM_REG_PBPS3 + #define BSP_CFG_ROM_REG_PBPS3 (~( 0U)) +#endif + /* Security Attribution for Block Protection Register 0 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL0 + #define BSP_CFG_ROM_REG_BPS_SEL0 (BSP_CFG_ROM_REG_BPS0 & BSP_CFG_ROM_REG_PBPS0) +#endif + /* Security Attribution for Block Protection Register 1 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL1 + #define BSP_CFG_ROM_REG_BPS_SEL1 (BSP_CFG_ROM_REG_BPS1 & BSP_CFG_ROM_REG_PBPS1) +#endif + /* Security Attribution for Block Protection Register 2 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL2 + #define BSP_CFG_ROM_REG_BPS_SEL2 (BSP_CFG_ROM_REG_BPS2 & BSP_CFG_ROM_REG_PBPS2) +#endif + /* Security Attribution for Block Protection Register 3 (If any blocks are marked as protected in the secure application, then mark them as secure) */ +#ifndef BSP_CFG_ROM_REG_BPS_SEL3 + #define BSP_CFG_ROM_REG_BPS_SEL3 (BSP_CFG_ROM_REG_BPS3 & BSP_CFG_ROM_REG_PBPS3) +#endif + /* Security Attribution for Bank Select Register */ +#ifndef BSP_CFG_ROM_REG_BANKSEL_SEL + #define BSP_CFG_ROM_REG_BANKSEL_SEL (0xFFFFFFFFU) +#endif +#ifndef BSP_CLOCK_CFG_MAIN_OSC_WAIT + #define BSP_CLOCK_CFG_MAIN_OSC_WAIT (9) +#endif + + /* FSBL Control Register 0 */ +#ifndef BSP_CFG_ROM_REG_FSBLCTRL0 +#define BSP_CFG_ROM_REG_FSBLCTRL0 ( \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLEN_Pos) | \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPSW_Pos) | \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLSKIPDS_Pos) | \ + (7 << R_OFS_DATAFLASH_FSBLCTRL0_FSBLCLK_Pos) | \ + 0xFFFFF000) +#endif + + /* FSBL Control Register 1 */ +#ifndef BSP_CFG_ROM_REG_FSBLCTRL1 +#define BSP_CFG_ROM_REG_FSBLCTRL1 ( \ + (3 << R_OFS_DATAFLASH_FSBLCTRL1_FSBLEXMD_Pos) | \ + 0xFFFFFFFC) +#endif + + /* FSBL Control Register 2 */ +#ifndef BSP_CFG_ROM_REG_FSBLCTRL2 +#define BSP_CFG_ROM_REG_FSBLCTRL2 ( \ + (15 << R_OFS_DATAFLASH_FSBLCTRL2_PORTPN_Pos) | \ + (0x1F << R_OFS_DATAFLASH_FSBLCTRL2_PORTGN_Pos) | \ + 0xFFFFFE00) +#endif + + /* Start Address of Code Certificate Register 0 */ +#ifndef BSP_CFG_ROM_REG_SACC0 +#define BSP_CFG_ROM_REG_SACC0 (0xFFFFFFFF) +#endif + + /* Start Address of Code Certificate Register 1 */ +#ifndef BSP_CFG_ROM_REG_SACC1 +#define BSP_CFG_ROM_REG_SACC1 (0xFFFFFFFF) +#endif + + /* Start Address of Measurement Report Register */ +#ifndef BSP_CFG_ROM_REG_SAMR +#define BSP_CFG_ROM_REG_SAMR (0xFFFFFFFF) +#endif + + /* Hash of OEM_ROOT_PK Register */ +#ifndef BSP_CFG_ROM_REG_HOEMRTPK +#define BSP_CFG_ROM_REG_HOEMRTPK (RA_NOT_DEFINED) +#endif + + /* Configuration Data 0 Lock Bit Register 0 */ +#ifndef BSP_CFG_ROM_REG_CFGD0LOCK0 +#define BSP_CFG_ROM_REG_CFGD0LOCK0 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 0 Lock Bit Register 1 */ +#ifndef BSP_CFG_ROM_REG_CFGD0LOCK1 +#define BSP_CFG_ROM_REG_CFGD0LOCK1 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 1 Lock Bit Register 0 */ +#ifndef BSP_CFG_ROM_REG_CFGD1LOCK0 +#define BSP_CFG_ROM_REG_CFGD1LOCK0 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 1 Lock Bit Register 1 */ +#ifndef BSP_CFG_ROM_REG_CFGD1LOCK1 +#define BSP_CFG_ROM_REG_CFGD1LOCK1 (RA_NOT_DEFINED) +#endif + + /* Configuration Data 2 Lock Bit Register */ +#ifndef BSP_CFG_ROM_REG_CFGD2LOCK +#define BSP_CFG_ROM_REG_CFGD2LOCK (RA_NOT_DEFINED) +#endif + + /* Anti-Rollback Counter Lock Setting Register */ +#ifndef BSP_CFG_ROM_REG_ARCLS +#define BSP_CFG_ROM_REG_ARCLS ( \ + (RA_NOT_DEFINED << R_OFS_DATAFLASH_ARCLS_ARCS_LK_Pos) | \ + (RA_NOT_DEFINED << R_OFS_DATAFLASH_ARCLS_ARCNS_LK_Pos) | \ + (RA_NOT_DEFINED << R_OFS_DATAFLASH_ARCLS_ARCBL_LK_Pos) | \ + 0xFFC0) +#endif + + /* Anti-Rollback Counter Configuration Setting for Non-secure Application Register */ +#ifndef BSP_CFG_ROM_REG_ARCCS +#define BSP_CFG_ROM_REG_ARCCS (RA_NOT_DEFINED | 0xFFFC) +#endif + + /* Anti-Rollback Counter for Secure Application 0 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_SEC0 +#define BSP_CFG_ROM_REG_ARC_SEC0 (0U) +#endif + + /* Anti-Rollback Counter for Secure Application 1 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_SEC1 +#define BSP_CFG_ROM_REG_ARC_SEC1 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 0 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC0 +#define BSP_CFG_ROM_REG_ARC_NSEC0 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 1 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC1 +#define BSP_CFG_ROM_REG_ARC_NSEC1 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 2 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC2 +#define BSP_CFG_ROM_REG_ARC_NSEC2 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 3 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC3 +#define BSP_CFG_ROM_REG_ARC_NSEC3 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 4 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC4 +#define BSP_CFG_ROM_REG_ARC_NSEC4 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 5 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC5 +#define BSP_CFG_ROM_REG_ARC_NSEC5 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 6 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC6 +#define BSP_CFG_ROM_REG_ARC_NSEC6 (0U) +#endif + + /* Anti-Rollback Counter for Non-secure Application 7 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_NSEC7 +#define BSP_CFG_ROM_REG_ARC_NSEC7 (0U) +#endif + + /* Anti-Rollback Counter for OEMBL 0 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_OEMBL0 +#define BSP_CFG_ROM_REG_ARC_OEMBL0 (0U) +#endif + + /* Anti-Rollback Counter for OEMBL 1 Register */ +#ifndef BSP_CFG_ROM_REG_ARC_OEMBL1 +#define BSP_CFG_ROM_REG_ARC_OEMBL1 (0U) +#endif + +#ifndef BSP_CFG_DCACHE_ENABLED +#define BSP_CFG_DCACHE_ENABLED (0) +#endif +#endif /* BSP_MCU_FAMILY_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h new file mode 100644 index 0000000000..9588536177 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/bsp/bsp_pin_cfg.h @@ -0,0 +1,178 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_PIN_CFG_H_ +#define BSP_PIN_CFG_H_ +#if __has_include("r_ioport.h") +#include "r_ioport.h" +#elif __has_include("r_ioport_b.h") +#include "r_ioport_b.h" +#endif + +/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +#define ENET_RMII_INT (BSP_IO_PORT_00_PIN_00) +#define GROVE2_AN102 (BSP_IO_PORT_00_PIN_02) +#define ARDUINO_A1 (BSP_IO_PORT_00_PIN_03) +#define ARDUINO_A0_MIKROBUS_AN000 (BSP_IO_PORT_00_PIN_04) +#define GROVE2_AN001 (BSP_IO_PORT_00_PIN_05) +#define PMOD1_IRQ11 (BSP_IO_PORT_00_PIN_06) +#define ARDUINO_A004 (BSP_IO_PORT_00_PIN_07) +#define USER_S2 (BSP_IO_PORT_00_PIN_08) +#define USER_S1 (BSP_IO_PORT_00_PIN_09) +#define MIKROBUS_IRQ14 (BSP_IO_PORT_00_PIN_10) +#define ARDUINO_A3 (BSP_IO_PORT_00_PIN_11) +#define ARDUINO_A4 (BSP_IO_PORT_00_PIN_14) +#define ARDUINO_A5 (BSP_IO_PORT_00_PIN_15) +#define OSPI_DQ0 (BSP_IO_PORT_01_PIN_00) +#define OSPI_DQ3 (BSP_IO_PORT_01_PIN_01) +#define OSPI_DQ4 (BSP_IO_PORT_01_PIN_02) +#define OSPI_DQ2 (BSP_IO_PORT_01_PIN_03) +#define OSPI_CS (BSP_IO_PORT_01_PIN_04) +#define OSPI_INT (BSP_IO_PORT_01_PIN_05) +#define OSPI_RESET (BSP_IO_PORT_01_PIN_06) +#define LED3 (BSP_IO_PORT_01_PIN_07) +#define ETH_A_RMII_RMII_RXDV (BSP_IO_PORT_01_PIN_12) +#define SDRAM_CKE (BSP_IO_PORT_01_PIN_13) +#define ETH_A_LINKSTA (BSP_IO_PORT_01_PIN_14) +#define MPLX_CTRL (BSP_IO_PORT_01_PIN_15) +#define NMI (BSP_IO_PORT_02_PIN_00) +#define MD (BSP_IO_PORT_02_PIN_01) +#define MIPI_DSI_TE (BSP_IO_PORT_02_PIN_06) +#define CAN_STB (BSP_IO_PORT_02_PIN_07) +#define TDI (BSP_IO_PORT_02_PIN_08) +#define TDO (BSP_IO_PORT_02_PIN_09) +#define SWDIO (BSP_IO_PORT_02_PIN_10) +#define SWCLK (BSP_IO_PORT_02_PIN_11) +#define EXTAL (BSP_IO_PORT_02_PIN_12) +#define XTAL (BSP_IO_PORT_02_PIN_13) +#define ETH_A_RXER (BSP_IO_PORT_03_PIN_00) +#define ETH_A_RXD1 (BSP_IO_PORT_03_PIN_01) +#define ETH_A_RXD0 (BSP_IO_PORT_03_PIN_02) +#define ETH_A_REFCLK (BSP_IO_PORT_03_PIN_03) +#define ETH_A_TXD0 (BSP_IO_PORT_03_PIN_04) +#define ETH_A_TXD1 (BSP_IO_PORT_03_PIN_05) +#define ETH_A_TXEN (BSP_IO_PORT_03_PIN_06) +#define ETH_A_MDIO (BSP_IO_PORT_03_PIN_07) +#define ETH_A_MDC (BSP_IO_PORT_03_PIN_08) +#define ARDUINO_D0_MIKROBUS_RXD3 (BSP_IO_PORT_03_PIN_09) +#define ARDUINO_D1_MIKROBUS_TXD3 (BSP_IO_PORT_03_PIN_10) +#define CAN_RXD (BSP_IO_PORT_03_PIN_11) +#define CAN_TXD (BSP_IO_PORT_03_PIN_12) +#define I3C_SCL0_ARDUINO_MIKROBUS_PMOD1_3_qwiic (BSP_IO_PORT_04_PIN_00) +#define I3C_SDA0_ARDUINO_MIKROBUS_PMOD1_4_qwiic (BSP_IO_PORT_04_PIN_01) +#define ETH_B_MDIO (BSP_IO_PORT_04_PIN_02) +#define ETH_B_LINKSTA (BSP_IO_PORT_04_PIN_03) +#define DISP_BLEN (BSP_IO_PORT_04_PIN_04) +#define ETH_B_TXEN (BSP_IO_PORT_04_PIN_05) +#define ETH_B_TXD1 (BSP_IO_PORT_04_PIN_06) +#define USBFS_VBUS (BSP_IO_PORT_04_PIN_07) +#define USBHS_VBUSEN (BSP_IO_PORT_04_PIN_08) +#define USBHS_OVRCURA (BSP_IO_PORT_04_PIN_09) +#define MISOB_B_ARDUINO_MIKROBUS (BSP_IO_PORT_04_PIN_10) +#define MOSIB_B_ARDUINO_MIKROBUS (BSP_IO_PORT_04_PIN_11) +#define RSPCKB_B_ARDUINO_MIKROBUS (BSP_IO_PORT_04_PIN_12) +#define SSLB0_B_ARDUINO_D10_MIKROBUS (BSP_IO_PORT_04_PIN_13) +#define LED2 (BSP_IO_PORT_04_PIN_14) +#define CAM_D12 (BSP_IO_PORT_04_PIN_15) +#define USBFS_VBUS_EN (BSP_IO_PORT_05_PIN_00) +#define USBFS_OVERCURA (BSP_IO_PORT_05_PIN_01) +#define MIKROBUS_RESET (BSP_IO_PORT_05_PIN_02) +#define MIKROBUS_RES (BSP_IO_PORT_05_PIN_07) +#define PMOD2_7_IRQ1 (BSP_IO_PORT_05_PIN_08) +#define ARDUINO_D3 (BSP_IO_PORT_05_PIN_09) +#define DISP_INT (BSP_IO_PORT_05_PIN_10) +#define GROVE2_IIC_SDA1 (BSP_IO_PORT_05_PIN_11) +#define GROVE2_IIC_SCL1 (BSP_IO_PORT_05_PIN_12) +#define LCD_TCON2 (BSP_IO_PORT_05_PIN_13) +#define LCD_EXTCLK (BSP_IO_PORT_05_PIN_14) +#define LCD_TCON3 (BSP_IO_PORT_05_PIN_15) +#define LED1 (BSP_IO_PORT_06_PIN_00) +#define SDRAM_D0 (BSP_IO_PORT_06_PIN_01) +#define ARDUINO_D6 (BSP_IO_PORT_06_PIN_02) +#define SDRAM_D2 (BSP_IO_PORT_06_PIN_03) +#define SDRAM_D3 (BSP_IO_PORT_06_PIN_04) +#define SDRAM_D4 (BSP_IO_PORT_06_PIN_05) +#define SDRAM_D5 (BSP_IO_PORT_06_PIN_06) +#define SDRAM_D6 (BSP_IO_PORT_06_PIN_07) +#define PMOD1_3_MISO0_RXD0_SCL0 (BSP_IO_PORT_06_PIN_09) +#define PMOD1_2_MOSI0_TXD0 (BSP_IO_PORT_06_PIN_10) +#define PMOD1_4_SCK0 (BSP_IO_PORT_06_PIN_11) +#define PMOD1_1_SSL0_CTS_RTS (BSP_IO_PORT_06_PIN_12) +#define PMOD1_1_CTS0 (BSP_IO_PORT_06_PIN_13) +#define PMOD1_9_GPIO (BSP_IO_PORT_06_PIN_14) +#define PMOD1_10_GPIO (BSP_IO_PORT_06_PIN_15) +#define ETH_B_TXD0 (BSP_IO_PORT_07_PIN_00) +#define ETH_B_REFCLK (BSP_IO_PORT_07_PIN_01) +#define ETH_B_RXD0 (BSP_IO_PORT_07_PIN_02) +#define ETH_B_RXD1 (BSP_IO_PORT_07_PIN_03) +#define ETH_B_RXER (BSP_IO_PORT_07_PIN_04) +#define CAM_PWRDOWN (BSP_IO_PORT_07_PIN_05) +#define ETH_B_RST_CAM_D10 (BSP_IO_PORT_07_PIN_06) +#define LCD_DATA23 (BSP_IO_PORT_07_PIN_07) +#define CAM_CLK (BSP_IO_PORT_07_PIN_08) +#define CAM_HD (BSP_IO_PORT_07_PIN_09) +#define CAM_VD (BSP_IO_PORT_07_PIN_10) +#define I3C_SDA0_PULLUP (BSP_IO_PORT_07_PIN_11) +#define LCD_DATA11 (BSP_IO_PORT_07_PIN_12) +#define LCD_DATA12 (BSP_IO_PORT_07_PIN_13) +#define LCD_DATA13 (BSP_IO_PORT_07_PIN_14) +#define LCD_DATA14 (BSP_IO_PORT_07_PIN_15) +#define OSPI_DQ5 (BSP_IO_PORT_08_PIN_00) +#define OSPI_DS (BSP_IO_PORT_08_PIN_01) +#define OSPI_DQ6 (BSP_IO_PORT_08_PIN_02) +#define OSPI_DQ1 (BSP_IO_PORT_08_PIN_03) +#define OSPI_DQ7 (BSP_IO_PORT_08_PIN_04) +#define LCD_TCON0 (BSP_IO_PORT_08_PIN_05) +#define LCD_CLK (BSP_IO_PORT_08_PIN_06) +#define LCD_TCON1 (BSP_IO_PORT_08_PIN_07) +#define OSPI_CK (BSP_IO_PORT_08_PIN_08) +#define PMOD2_8_RESET (BSP_IO_PORT_08_PIN_09) +#define PMOD2_9_GPIO (BSP_IO_PORT_08_PIN_10) +#define PMOD2_10_GPIO (BSP_IO_PORT_08_PIN_11) +#define ARDUINO_RESET (BSP_IO_PORT_08_PIN_13) +#define USBFS_P (BSP_IO_PORT_08_PIN_14) +#define USBFS_N (BSP_IO_PORT_08_PIN_15) +#define LCD_DATA8 (BSP_IO_PORT_09_PIN_02) +#define LCD_DATA7 (BSP_IO_PORT_09_PIN_03) +#define LCD_DATA6 (BSP_IO_PORT_09_PIN_04) +#define ARDUINO_D4 (BSP_IO_PORT_09_PIN_05) +#define ARDUINO_D2 (BSP_IO_PORT_09_PIN_06) +#define ARDUINO_D3_MIKROBUS_GTIOC13A (BSP_IO_PORT_09_PIN_07) +#define ARDUINO_D7 (BSP_IO_PORT_09_PIN_08) +#define ARDUINO_D8 (BSP_IO_PORT_09_PIN_09) +#define LCD_DATA2 (BSP_IO_PORT_09_PIN_10) +#define LCD_DATA3 (BSP_IO_PORT_09_PIN_11) +#define LCD_DATA4 (BSP_IO_PORT_09_PIN_12) +#define LCD_DATA5 (BSP_IO_PORT_09_PIN_13) +#define LCD_DATA0 (BSP_IO_PORT_09_PIN_14) +#define LCD_DATA1 (BSP_IO_PORT_09_PIN_15) +#define SDRAM_D7 (BSP_IO_PORT_10_PIN_00) +#define DISP_RST (BSP_IO_PORT_10_PIN_01) +#define PMOD2_3_MISO2_RXD2 (BSP_IO_PORT_10_PIN_02) +#define PMOD2_2_MOSI2_TXD2 (BSP_IO_PORT_10_PIN_03) +#define PMOD2_4_SCK2 (BSP_IO_PORT_10_PIN_04) +#define PMOD2_1_CTS_RTS_SSL2 (BSP_IO_PORT_10_PIN_05) +#define PMOD2_1_CTS2 (BSP_IO_PORT_10_PIN_06) +#define ARDUINO_D9 (BSP_IO_PORT_10_PIN_07) +#define PMOD1_8_RESET (BSP_IO_PORT_10_PIN_08) +#define SDRAM_SDCLK (BSP_IO_PORT_10_PIN_09) +#define SDRAM_DQM0 (BSP_IO_PORT_10_PIN_10) +#define ARDUINO_D5 (BSP_IO_PORT_10_PIN_11) +#define ETH_A_RST (BSP_IO_PORT_10_PIN_13) +#define JLOB_COMS_TX (BSP_IO_PORT_10_PIN_14) +#define JLOB_COMS_RX (BSP_IO_PORT_10_PIN_15) +#define I3C_SCL0_PULLUP (BSP_IO_PORT_11_PIN_00) +#define USBHS_VBUS (BSP_IO_PORT_11_PIN_01) +#define LCD_DATA21 (BSP_IO_PORT_11_PIN_02) +#define LCD_DATA20 (BSP_IO_PORT_11_PIN_03) +#define LCD_DATA19 (BSP_IO_PORT_11_PIN_04) +#define LCD_DATA17 (BSP_IO_PORT_11_PIN_05) +#define LCD_DATA16 (BSP_IO_PORT_11_PIN_06) +#define LCD_DATA15 (BSP_IO_PORT_11_PIN_07) +extern const ioport_cfg_t g_bsp_pin_cfg; /* RA8D1 EK */ + +void BSP_PinConfigSecurityInit(); + +/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */ +FSP_FOOTER +#endif /* BSP_PIN_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h new file mode 100644 index 0000000000..d2688bf5ba --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_ioport_cfg.h @@ -0,0 +1,13 @@ +/* generated configuration header file - do not edit */ +#ifndef R_IOPORT_CFG_H_ +#define R_IOPORT_CFG_H_ +#ifdef __cplusplus +extern "C" { +#endif + +#define IOPORT_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) + +#ifdef __cplusplus +} +#endif +#endif /* R_IOPORT_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h new file mode 100644 index 0000000000..d7a9235fcc --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_cfg/fsp_cfg/r_sci_b_uart_cfg.h @@ -0,0 +1,16 @@ +/* generated configuration header file - do not edit */ +#ifndef R_SCI_B_UART_CFG_H_ +#define R_SCI_B_UART_CFG_H_ +#ifdef __cplusplus + extern "C" { + #endif + + #define SCI_B_UART_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) + #define SCI_B_UART_CFG_FIFO_SUPPORT (1) + #define SCI_B_UART_CFG_DTC_SUPPORTED (0) + #define SCI_B_UART_CFG_FLOW_CONTROL_SUPPORT (0) + + #ifdef __cplusplus + } + #endif +#endif /* R_SCI_B_UART_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_gen/SConscript b/bsp/renesas/ra8d1-ek/ra_gen/SConscript new file mode 100644 index 0000000000..6a52bcd615 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/SConscript @@ -0,0 +1,20 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + print("\nThe current project does not support IAR build\n") + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd, ] + +group = DefineGroup('ra_gen', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/ra8d1-ek/ra_gen/bsp_clock_cfg.h b/bsp/renesas/ra8d1-ek/ra_gen/bsp_clock_cfg.h new file mode 100644 index 0000000000..e9b17d6588 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/bsp_clock_cfg.h @@ -0,0 +1,58 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_CLOCK_CFG_H_ +#define BSP_CLOCK_CFG_H_ +#define BSP_CFG_CLOCKS_SECURE (0) +#define BSP_CFG_CLOCKS_OVERRIDE (0) +#define BSP_CFG_XTAL_HZ (20000000) /* XTAL 20000000Hz */ +#define BSP_CFG_HOCO_FREQUENCY (7) /* HOCO 48MHz */ +#define BSP_CFG_PLL_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_MAIN_OSC) /* PLL Src: XTAL */ +#define BSP_CFG_PLL_DIV (BSP_CLOCKS_PLL_DIV_1) /* PLL Div /1 */ +#define BSP_CFG_PLL_MUL BSP_CLOCKS_PLL_MUL(48,0) /* PLL Mul x40-59|Mul x48|PLL Mul x48.00 */ +#define BSP_CFG_PLL_FREQUENCY_HZ (960000000) /* PLL 960000000Hz */ +#define BSP_CFG_PLODIVP (BSP_CLOCKS_PLL_DIV_2) /* PLL1P Div /2 */ +#define BSP_CFG_PLL1P_FREQUENCY_HZ (480000000) /* PLL1P 480000000Hz */ +#define BSP_CFG_PLODIVQ (BSP_CLOCKS_PLL_DIV_4) /* PLL1Q Div /4 */ +#define BSP_CFG_PLL1Q_FREQUENCY_HZ (240000000) /* PLL1Q 240000000Hz */ +#define BSP_CFG_PLODIVR (BSP_CLOCKS_PLL_DIV_2) /* PLL1R Div /2 */ +#define BSP_CFG_PLL1R_FREQUENCY_HZ (480000000) /* PLL1R 480000000Hz */ +#define BSP_CFG_PLL2_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* PLL2 Disabled */ +#define BSP_CFG_PLL2_DIV (BSP_CLOCKS_PLL_DIV_1) /* PLL2 Div /1 */ +#define BSP_CFG_PLL2_MUL BSP_CLOCKS_PLL_MUL(48,0) /* PLL2 Mul x40-59|Mul x48|PLL2 Mul x48.00 */ +#define BSP_CFG_PLL2_FREQUENCY_HZ (0) /* PLL2 0Hz */ +#define BSP_CFG_PL2ODIVP (BSP_CLOCKS_PLL_DIV_2) /* PLL2P Div /2 */ +#define BSP_CFG_PLL2P_FREQUENCY_HZ (0) /* PLL2P 0Hz */ +#define BSP_CFG_PL2ODIVQ (BSP_CLOCKS_PLL_DIV_2) /* PLL2Q Div /2 */ +#define BSP_CFG_PLL2Q_FREQUENCY_HZ (0) /* PLL2Q 0Hz */ +#define BSP_CFG_PL2ODIVR (BSP_CLOCKS_PLL_DIV_2) /* PLL2R Div /2 */ +#define BSP_CFG_PLL2R_FREQUENCY_HZ (0) /* PLL2R 0Hz */ +#define BSP_CFG_CLOCK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1P) /* Clock Src: PLL1P */ +#define BSP_CFG_CLKOUT_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* CLKOUT Disabled */ +#define BSP_CFG_SCICLK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1P) /* SCICLK Src: PLL1P */ +#define BSP_CFG_SPICLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* SPICLK Disabled */ +#define BSP_CFG_CANFDCLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* CANFDCLK Disabled */ +#define BSP_CFG_LCDCLK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1P) /* LCDCLK Src: PLL1P */ +#define BSP_CFG_I3CCLK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* I3CCLK Disabled */ +#define BSP_CFG_UCK_SOURCE (BSP_CLOCKS_SOURCE_CLOCK_PLL1Q) /* UCK Src: PLL1Q */ +#define BSP_CFG_U60CK_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* U60CK Disabled */ +#define BSP_CFG_OCTA_SOURCE (BSP_CLOCKS_CLOCK_DISABLED) /* OCTASPICLK Disabled */ +#define BSP_CFG_CPUCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_1) /* CPUCLK Div /1 */ +#define BSP_CFG_ICLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* ICLK Div /2 */ +#define BSP_CFG_PCLKA_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* PCLKA Div /4 */ +#define BSP_CFG_PCLKB_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_8) /* PCLKB Div /8 */ +#define BSP_CFG_PCLKC_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_8) /* PCLKC Div /8 */ +#define BSP_CFG_PCLKD_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* PCLKD Div /4 */ +#define BSP_CFG_PCLKE_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_2) /* PCLKE Div /2 */ +#define BSP_CFG_SDCLK_OUTPUT (1) /* SDCLK Enabled */ +#define BSP_CFG_BCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_4) /* BCLK Div /4 */ +#define BSP_CFG_BCLK_OUTPUT (2) /* EBCLK Div /2 */ +#define BSP_CFG_FCLK_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_8) /* FCLK Div /8 */ +#define BSP_CFG_CLKOUT_DIV (BSP_CLOCKS_SYS_CLOCK_DIV_1) /* CLKOUT Div /1 */ +#define BSP_CFG_SCICLK_DIV (BSP_CLOCKS_SCI_CLOCK_DIV_4) /* SCICLK Div /4 */ +#define BSP_CFG_SPICLK_DIV (BSP_CLOCKS_SPI_CLOCK_DIV_4) /* SPICLK Div /4 */ +#define BSP_CFG_CANFDCLK_DIV (BSP_CLOCKS_CANFD_CLOCK_DIV_8) /* CANFDCLK Div /8 */ +#define BSP_CFG_LCDCLK_DIV (BSP_CLOCKS_LCD_CLOCK_DIV_2) /* LCDCLK Div /2 */ +#define BSP_CFG_I3CCLK_DIV (BSP_CLOCKS_I3C_CLOCK_DIV_3) /* I3CCLK Div /3 */ +#define BSP_CFG_UCK_DIV (BSP_CLOCKS_USB_CLOCK_DIV_5) /* UCK Div /5 */ +#define BSP_CFG_U60CK_DIV (BSP_CLOCKS_USB60_CLOCK_DIV_5) /* U60CK Div /5 */ +#define BSP_CFG_OCTA_DIV (BSP_CLOCKS_OCTA_CLOCK_DIV_4) /* OCTASPICLK Div /4 */ +#endif /* BSP_CLOCK_CFG_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_gen/common_data.c b/bsp/renesas/ra8d1-ek/ra_gen/common_data.c new file mode 100644 index 0000000000..50036c0adc --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/common_data.c @@ -0,0 +1,11 @@ +/* generated common source file - do not edit */ +#include "common_data.h" +ioport_instance_ctrl_t g_ioport_ctrl; +const ioport_instance_t g_ioport = + { + .p_api = &g_ioport_on_ioport, + .p_ctrl = &g_ioport_ctrl, + .p_cfg = &g_bsp_pin_cfg, + }; +void g_common_init(void) { +} diff --git a/bsp/renesas/ra8d1-ek/ra_gen/common_data.h b/bsp/renesas/ra8d1-ek/ra_gen/common_data.h new file mode 100644 index 0000000000..6a08cbee09 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/common_data.h @@ -0,0 +1,20 @@ +/* generated common header file - do not edit */ +#ifndef COMMON_DATA_H_ +#define COMMON_DATA_H_ +#include +#include "bsp_api.h" +#include "r_ioport.h" +#include "bsp_pin_cfg.h" +FSP_HEADER +#define IOPORT_CFG_NAME g_bsp_pin_cfg +#define IOPORT_CFG_OPEN R_IOPORT_Open +#define IOPORT_CFG_CTRL g_ioport_ctrl + +/* IOPORT Instance */ +extern const ioport_instance_t g_ioport; + +/* IOPORT control structure. */ +extern ioport_instance_ctrl_t g_ioport_ctrl; +void g_common_init(void); +FSP_FOOTER +#endif /* COMMON_DATA_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_gen/hal_data.c b/bsp/renesas/ra8d1-ek/ra_gen/hal_data.c new file mode 100644 index 0000000000..ba385e77aa --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/hal_data.c @@ -0,0 +1,89 @@ +/* generated HAL source file - do not edit */ +#include "hal_data.h" +sci_b_uart_instance_ctrl_t g_uart9_ctrl; + + sci_b_baud_setting_t g_uart9_baud_setting = + { + /* Baud rate calculated with 0.160% error. */ .baudrate_bits_b.abcse = 0, .baudrate_bits_b.abcs = 0, .baudrate_bits_b.bgdm = 1, .baudrate_bits_b.cks = 0, .baudrate_bits_b.brr = 64, .baudrate_bits_b.mddr = (uint8_t) 256, .baudrate_bits_b.brme = false + }; + + /** UART extended configuration for UARTonSCI HAL driver */ + const sci_b_uart_extended_cfg_t g_uart9_cfg_extend = + { + .clock = SCI_B_UART_CLOCK_INT, + .rx_edge_start = SCI_B_UART_START_BIT_FALLING_EDGE, + .noise_cancel = SCI_B_UART_NOISE_CANCELLATION_DISABLE, + .rx_fifo_trigger = SCI_B_UART_RX_FIFO_TRIGGER_MAX, + .p_baud_setting = &g_uart9_baud_setting, + .flow_control = SCI_B_UART_FLOW_CONTROL_RTS, + #if 0xFF != 0xFF + .flow_control_pin = BSP_IO_PORT_FF_PIN_0xFF, + #else + .flow_control_pin = (bsp_io_port_pin_t) UINT16_MAX, + #endif + .rs485_setting = { + .enable = SCI_B_UART_RS485_DISABLE, + .polarity = SCI_B_UART_RS485_DE_POLARITY_HIGH, + .assertion_time = 1, + .negation_time = 1, + } + }; + + /** UART interface configuration */ + const uart_cfg_t g_uart9_cfg = + { + .channel = 9, + .data_bits = UART_DATA_BITS_8, + .parity = UART_PARITY_OFF, + .stop_bits = UART_STOP_BITS_1, + .p_callback = user_uart9_callback, + .p_context = NULL, + .p_extend = &g_uart9_cfg_extend, +#define RA_NOT_DEFINED (1) +#if (RA_NOT_DEFINED == RA_NOT_DEFINED) + .p_transfer_tx = NULL, +#else + .p_transfer_tx = &RA_NOT_DEFINED, +#endif +#if (RA_NOT_DEFINED == RA_NOT_DEFINED) + .p_transfer_rx = NULL, +#else + .p_transfer_rx = &RA_NOT_DEFINED, +#endif +#undef RA_NOT_DEFINED + .rxi_ipl = (12), + .txi_ipl = (12), + .tei_ipl = (12), + .eri_ipl = (12), +#if defined(VECTOR_NUMBER_SCI9_RXI) + .rxi_irq = VECTOR_NUMBER_SCI9_RXI, +#else + .rxi_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI9_TXI) + .txi_irq = VECTOR_NUMBER_SCI9_TXI, +#else + .txi_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI9_TEI) + .tei_irq = VECTOR_NUMBER_SCI9_TEI, +#else + .tei_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI9_ERI) + .eri_irq = VECTOR_NUMBER_SCI9_ERI, +#else + .eri_irq = FSP_INVALID_VECTOR, +#endif + }; + +/* Instance structure to use this module. */ +const uart_instance_t g_uart9 = +{ + .p_ctrl = &g_uart9_ctrl, + .p_cfg = &g_uart9_cfg, + .p_api = &g_uart_on_sci_b +}; +void g_hal_init(void) { +g_common_init(); +} diff --git a/bsp/renesas/ra8d1-ek/ra_gen/hal_data.h b/bsp/renesas/ra8d1-ek/ra_gen/hal_data.h new file mode 100644 index 0000000000..c1913153ae --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/hal_data.h @@ -0,0 +1,24 @@ +/* generated HAL header file - do not edit */ +#ifndef HAL_DATA_H_ +#define HAL_DATA_H_ +#include +#include "bsp_api.h" +#include "common_data.h" +#include "r_sci_b_uart.h" + #include "r_uart_api.h" +FSP_HEADER +/** UART on SCI Instance. */ + extern const uart_instance_t g_uart9; + + /** Access the UART instance using these structures when calling API functions directly (::p_api is not used). */ + extern sci_b_uart_instance_ctrl_t g_uart9_ctrl; + extern const uart_cfg_t g_uart9_cfg; + extern const sci_b_uart_extended_cfg_t g_uart9_cfg_extend; + + #ifndef user_uart9_callback + void user_uart9_callback(uart_callback_args_t * p_args); + #endif +void hal_entry(void); +void g_hal_init(void); +FSP_FOOTER +#endif /* HAL_DATA_H_ */ diff --git a/bsp/renesas/ra8d1-ek/ra_gen/main.c b/bsp/renesas/ra8d1-ek/ra_gen/main.c new file mode 100644 index 0000000000..42c5904834 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/main.c @@ -0,0 +1,6 @@ +/* generated main source file - do not edit */ +#include "hal_data.h" + int main(void) { + hal_entry(); + return 0; + } diff --git a/bsp/renesas/ra8d1-ek/ra_gen/pin_data.c b/bsp/renesas/ra8d1-ek/ra_gen/pin_data.c new file mode 100644 index 0000000000..4e521d970c --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/pin_data.c @@ -0,0 +1,644 @@ +/* generated pin source file - do not edit */ +#include "bsp_api.h" +#if __has_include("r_ioport.h") +#include "r_ioport.h" +#elif __has_include("r_ioport_b.h") +#include "r_ioport_b.h" +#endif + +const ioport_pin_cfg_t g_bsp_pin_cfg_data[] = { + { + .pin = BSP_IO_PORT_00_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_00_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_ANALOG_ENABLE) + }, + { + .pin = BSP_IO_PORT_01_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_01_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_01_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_01_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_01_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_01_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_02_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_MIPI) + }, + { + .pin = BSP_IO_PORT_02_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_02_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_02_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_02_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_02_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_DEBUG) + }, + { + .pin = BSP_IO_PORT_03_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_03_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_04_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_04_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_04_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_04_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_04_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_04_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_04_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_04_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_04_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_04_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SPI) + }, + { + .pin = BSP_IO_PORT_04_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_04_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_05_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_05_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_05_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_05_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_05_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_05_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_05_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_IIC) + }, + { + .pin = BSP_IO_PORT_05_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_IIC) + }, + { + .pin = BSP_IO_PORT_05_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_05_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_05_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_06_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_06_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_06_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_07_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_07_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_07_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_07_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_07_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_07_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_ETHER_RMII) + }, + { + .pin = BSP_IO_PORT_07_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_07_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_CEU) + }, + { + .pin = BSP_IO_PORT_07_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_07_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_08_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_08_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_08_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_08_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_OSPI) + }, + { + .pin = BSP_IO_PORT_08_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_08_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_08_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_08_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_08_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_08_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_USB_FS) + }, + { + .pin = BSP_IO_PORT_09_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_09_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_09_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_12, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_09_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_10_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_10_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI0_2_4_6_8) + }, + { + .pin = BSP_IO_PORT_10_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_10_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_10_PIN_08, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_09, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HS_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_10, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_BUS) + }, + { + .pin = BSP_IO_PORT_10_PIN_11, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_10_PIN_13, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_10_PIN_14, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_10_PIN_15, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_SCI1_3_5_7_9) + }, + { + .pin = BSP_IO_PORT_11_PIN_00, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_01, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_02, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_03, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_04, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_05, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_06, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, + { + .pin = BSP_IO_PORT_11_PIN_07, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_MID | (uint32_t) IOPORT_CFG_PERIPHERAL_PIN | (uint32_t) IOPORT_PERIPHERAL_LCD_GRAPHICS) + }, +}; + +const ioport_cfg_t g_bsp_pin_cfg = { + .number_of_pins = sizeof(g_bsp_pin_cfg_data)/sizeof(ioport_pin_cfg_t), + .p_pin_cfg_data = &g_bsp_pin_cfg_data[0], +}; + +#if __has_include("r_ioport.h") +#if BSP_TZ_SECURE_BUILD + +void R_BSP_PinCfgSecurityInit(void); + +/* Initialize SAR registers for secure pins. */ +void R_BSP_PinCfgSecurityInit(void) +{ + #if (2U == BSP_FEATURE_IOPORT_VERSION) + uint32_t pmsar[BSP_FEATURE_BSP_NUM_PMSAR]; + #else + uint16_t pmsar[BSP_FEATURE_BSP_NUM_PMSAR]; + #endif + memset(pmsar, 0xFF, BSP_FEATURE_BSP_NUM_PMSAR * sizeof(R_PMISC->PMSAR[0])); + + + for(uint32_t i = 0; i < g_bsp_pin_cfg.number_of_pins; i++) + { + uint32_t port_pin = g_bsp_pin_cfg.p_pin_cfg_data[i].pin; + uint32_t port = port_pin >> 8U; + uint32_t pin = port_pin & 0xFFU; + pmsar[port] &= (uint16_t) ~(1U << pin); + } + + for(uint32_t i = 0; i < BSP_FEATURE_BSP_NUM_PMSAR; i++) + { + #if (2U == BSP_FEATURE_IOPORT_VERSION) + R_PMISC->PMSAR[i].PMSAR = (uint16_t) pmsar[i]; + #else + R_PMISC->PMSAR[i].PMSAR = pmsar[i]; + #endif + } + +} +#endif +#endif diff --git a/bsp/renesas/ra8d1-ek/ra_gen/vector_data.c b/bsp/renesas/ra8d1-ek/ra_gen/vector_data.c new file mode 100644 index 0000000000..cac65f94c5 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/vector_data.c @@ -0,0 +1,29 @@ +/* generated vector source file - do not edit */ + #include "bsp_api.h" + /* Do not build these data structures if no interrupts are currently allocated because IAR will have build errors. */ + #if VECTOR_DATA_IRQ_COUNT > 0 + #if __has_include("r_ioport.h") + BSP_DONT_REMOVE const fsp_vector_t g_vector_table[BSP_ICU_VECTOR_MAX_ENTRIES] BSP_PLACE_IN_SECTION(BSP_SECTION_APPLICATION_VECTORS) = + { + [0] = sci_b_uart_rxi_isr, /* SCI9 RXI (Receive data full) */ + [1] = sci_b_uart_txi_isr, /* SCI9 TXI (Transmit data empty) */ + [2] = sci_b_uart_tei_isr, /* SCI9 TEI (Transmit end) */ + [3] = sci_b_uart_eri_isr, /* SCI9 ERI (Receive error) */ + }; + const bsp_interrupt_event_t g_interrupt_event_link_select[BSP_ICU_VECTOR_MAX_ENTRIES] = + { + [0] = BSP_PRV_IELS_ENUM(EVENT_SCI9_RXI), /* SCI9 RXI (Receive data full) */ + [1] = BSP_PRV_IELS_ENUM(EVENT_SCI9_TXI), /* SCI9 TXI (Transmit data empty) */ + [2] = BSP_PRV_IELS_ENUM(EVENT_SCI9_TEI), /* SCI9 TEI (Transmit end) */ + [3] = BSP_PRV_IELS_ENUM(EVENT_SCI9_ERI), /* SCI9 ERI (Receive error) */ + }; + #elif __has_include("r_ioport_b.h") + BSP_DONT_REMOVE const fsp_vector_t g_vector_table[BSP_IRQ_VECTOR_MAX_ENTRIES] BSP_PLACE_IN_SECTION(BSP_SECTION_APPLICATION_VECTORS) = + { + [BSP_PRV_IELS_ENUM(SCI9_RXI)] = sci_b_uart_rxi_isr, /* SCI9 RXI (Receive data full) */ + [BSP_PRV_IELS_ENUM(SCI9_TXI)] = sci_b_uart_txi_isr, /* SCI9 TXI (Transmit data empty) */ + [BSP_PRV_IELS_ENUM(SCI9_TEI)] = sci_b_uart_tei_isr, /* SCI9 TEI (Transmit end) */ + [BSP_PRV_IELS_ENUM(SCI9_ERI)] = sci_b_uart_eri_isr, /* SCI9 ERI (Receive error) */ + }; + #endif + #endif diff --git a/bsp/renesas/ra8d1-ek/ra_gen/vector_data.h b/bsp/renesas/ra8d1-ek/ra_gen/vector_data.h new file mode 100644 index 0000000000..8f41b4bb15 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/ra_gen/vector_data.h @@ -0,0 +1,32 @@ +/* generated vector header file - do not edit */ + #ifndef VECTOR_DATA_H + #define VECTOR_DATA_H + #ifdef __cplusplus + extern "C" { + #endif + /* Number of interrupts allocated */ + #ifndef VECTOR_DATA_IRQ_COUNT + #define VECTOR_DATA_IRQ_COUNT (4) + #endif + /* ISR prototypes */ + void sci_b_uart_rxi_isr(void); + void sci_b_uart_txi_isr(void); + void sci_b_uart_tei_isr(void); + void sci_b_uart_eri_isr(void); + + #if __has_include("r_ioport.h") + /* Vector table allocations */ + #define VECTOR_NUMBER_SCI9_RXI ((IRQn_Type) 0) /* SCI9 RXI (Receive data full) */ + #define SCI9_RXI_IRQn ((IRQn_Type) 0) /* SCI9 RXI (Receive data full) */ + #define VECTOR_NUMBER_SCI9_TXI ((IRQn_Type) 1) /* SCI9 TXI (Transmit data empty) */ + #define SCI9_TXI_IRQn ((IRQn_Type) 1) /* SCI9 TXI (Transmit data empty) */ + #define VECTOR_NUMBER_SCI9_TEI ((IRQn_Type) 2) /* SCI9 TEI (Transmit end) */ + #define SCI9_TEI_IRQn ((IRQn_Type) 2) /* SCI9 TEI (Transmit end) */ + #define VECTOR_NUMBER_SCI9_ERI ((IRQn_Type) 3) /* SCI9 ERI (Receive error) */ + #define SCI9_ERI_IRQn ((IRQn_Type) 3) /* SCI9 ERI (Receive error) */ + #endif + + #ifdef __cplusplus + } + #endif + #endif /* VECTOR_DATA_H */ diff --git a/bsp/renesas/ra8d1-ek/rasc_version.txt b/bsp/renesas/ra8d1-ek/rasc_version.txt new file mode 100644 index 0000000000..03a436fda0 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/rasc_version.txt @@ -0,0 +1,3 @@ +# RASC version and installation file +5.1.0 +E:\mcu_sw\Renesas\RA\sc_v2023-10_fsp_v5.1.0\eclipse\rasc.exe diff --git a/bsp/renesas/ra8d1-ek/rtconfig.h b/bsp/renesas/ra8d1-ek/rtconfig.h new file mode 100644 index 0000000000..3a11c24175 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/rtconfig.h @@ -0,0 +1,257 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 12 +#define RT_CPUS_NR 1 +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 1000 +#define RT_USING_OVERFLOW_CHECK +#define RT_USING_HOOK +#define RT_HOOK_USING_FUNC_PTR +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 256 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 + +/* kservice optimization */ + +#define RT_USING_DEBUG +#define RT_DEBUGING_COLOR +#define RT_DEBUGING_CONTEXT + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_MEMHEAP +#define RT_MEMHEAP_FAST_MODE +#define RT_USING_MEMHEAP_AS_HEAP +#define RT_USING_MEMHEAP_AUTO_BINDING +#define RT_USING_HEAP +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 128 +#define RT_CONSOLE_DEVICE_NAME "uart9" +#define RT_VER_NUM 0x50100 +#define RT_BACKTRACE_LEVEL_MAX_NR 32 +#define RT_USING_HW_ATOMIC +#define RT_USING_CPU_FFS +#define ARCH_ARM +#define ARCH_ARM_CORTEX_M +#define ARCH_ARM_CORTEX_M85 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 +#define RT_USING_MSH +#define RT_USING_FINSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 4096 +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_CMD_SIZE 80 +#define MSH_USING_BUILT_IN_COMMANDS +#define FINSH_USING_DESCRIPTION +#define FINSH_ARG_MAX 10 +#define FINSH_USING_OPTION_COMPLETION + +/* DFS: device virtual file system */ + + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V2 +#define RT_SERIAL_USING_DMA +#define RT_USING_PIN + +/* Using USB */ + + +/* C/C++ and POSIX layer */ + +/* ISO-ANSI C layer */ + +/* Timezone and Daylight Saving Time */ + +#define RT_LIBC_USING_LIGHT_TZ_DST +#define RT_LIBC_TZ_DEFAULT_HOUR 8 +#define RT_LIBC_TZ_DEFAULT_MIN 0 +#define RT_LIBC_TZ_DEFAULT_SEC 0 + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + + +/* Network */ + + +/* Memory protection */ + + +/* Utilities */ + + +/* RT-Thread Utestcases */ + + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + +/* sensors drivers */ + + +/* touch drivers */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* Signal Processing and Control Algorithm Packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Projects and Demos */ + + +/* Sensors */ + + +/* Display */ + + +/* Timing */ + + +/* Data Processing */ + + +/* Data Storage */ + +/* Communication */ + + +/* Device Control */ + + +/* Other */ + + +/* Signal IO */ + + +/* Uncategorized */ + +#define SOC_FAMILY_RENESAS +#define SOC_SERIES_R7FA8M85 + +/* Hardware Drivers Config */ + +#define SOC_R7FA8D1AH + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART9 +#define BSP_UART9_RX_BUFSIZE 256 +#define BSP_UART9_TX_BUFSIZE 0 +#define BSP_USING_SDRAM +#define BSP_USING_SDRAM_SIZE 0x8000000 + +#endif diff --git a/bsp/renesas/ra8d1-ek/rtconfig.py b/bsp/renesas/ra8d1-ek/rtconfig.py new file mode 100644 index 0000000000..51a4958c83 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/rtconfig.py @@ -0,0 +1,137 @@ +import os +import sys + +# toolchains options +ARCH='arm' +CPU='cortex-m85' +CROSS_TOOL='keil' + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') +if os.getenv('RTT_ROOT'): + RTT_ROOT = os.getenv('RTT_ROOT') + +# cross_tool provides the cross compiler +# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'C:\Users\XXYYZZ' +elif CROSS_TOOL == 'keil': + PLATFORM = 'armclang' + EXEC_PATH = r'C:/Keil_v5' +elif CROSS_TOOL == 'iar': + PLATFORM = 'iccarm' + EXEC_PATH = r'C:/Program Files/IAR Systems/Embedded Workbench 8.0' +elif CROSS_TOOL == 'llvm-arm': + PLATFORM = 'llvm-arm' + EXEC_PATH = r'D:\Progrem\LLVMEmbeddedToolchainForArm-17.0.1-Windows-x86_64\bin' + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' +# BUILD = 'release' + +if PLATFORM == 'gcc': + # toolchains + PREFIX = 'arm-none-eabi-' + CC = PREFIX + 'gcc' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + CXX = PREFIX + 'g++' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + NM = PREFIX + 'nm' + + DEVICE = ' -march=armv8.1-m.main+mve.fp+fp.dp -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb ' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T script/fsp.ld -L script/' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g -Wall' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -Os' + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O ihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n' + # POST_ACTION += OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + +elif PLATFORM == 'armclang': + # toolchains + CC = 'armclang' + CXX = 'armclang' + AS = 'armasm' + AR = 'armar' + LINK = 'armlink' + TARGET_EXT = 'axf' + + DEVICE = ' --cpu Cortex-M85' + + CFLAGS = ' -mcpu=Cortex-M85 -xc -std=c99 --target=arm-arm-none-eabi -mfpu=neon-fp-armv8 -mfloat-abi=hard -c' + CFLAGS += ' -fno-rtti -funsigned-char -ffunction-sections' + CFLAGS += ' -Wno-license-management -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal' + + AFLAGS = DEVICE + ' --apcs=interwork ' + + LFLAGS = DEVICE + ' --scatter ' + 'script/fsp.scat' + LFLAGS +=' --info sizes --info totals --info unused --info veneers ' + LFLAGS += ' --list rt-thread.map --strict' + LFLAGS += ' --diag_suppress 6319,6314 --summary_stderr --info summarysizes' + LFLAGS += ' --map --load_addr_map_info --xref --callgraph --symbols' + LFLAGS += ' --libpath=' + EXEC_PATH + '/ARM/ARMCLANG/lib' + + EXEC_PATH += '/ARM/ARMCLANG/bin/' + + if BUILD == 'debug': + CFLAGS += ' -g -O0' + AFLAGS += ' -g' + else: + CFLAGS += ' -Os' + + POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET \n' +elif PLATFORM == 'llvm-arm': + # toolchains + PREFIX = 'llvm-' + CC = 'clang' + AS = 'clang' + AR = PREFIX + 'ar' + CXX = 'clang++' + LINK = 'clang' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + DEVICE = ' --target=arm-none-eabihf -mfloat-abi=hard -march=armv8.1m.main+fp' + DEVICE += ' -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti' + CFLAGS = DEVICE + CFLAGS += ' -mfloat-abi=hard -march=armv8.1m.main+fp' + AFLAGS = ' -c' + DEVICE + ' -Wa,-mimplicit-it=thumb ' ## -x assembler-with-cpp + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rt-thread.map,-u,Reset_Handler -lcrt0 -T script/fsp.ld -L script/' + + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -gdwarf-2 -g' + AFLAGS += ' -gdwarf-2' + else: + CFLAGS += ' -O2' + + CXXFLAGS = CFLAGS + + POST_ACTION = OBJCPY + ' -O ihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n' + +def dist_handle(BSP_ROOT, dist_dir): + import sys + cwd_path = os.getcwd() + sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) + from sdk_dist import dist_do_building + dist_do_building(BSP_ROOT, dist_dir) diff --git a/bsp/renesas/ra8d1-ek/script/ac6/fsp_keep.via b/bsp/renesas/ra8d1-ek/script/ac6/fsp_keep.via new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/script/ac6/fsp_keep.via @@ -0,0 +1 @@ + diff --git a/bsp/renesas/ra8d1-ek/script/fsp.ld b/bsp/renesas/ra8d1-ek/script/fsp.ld new file mode 100644 index 0000000000..0006ec6281 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/script/fsp.ld @@ -0,0 +1,768 @@ +/* + Linker File for Renesas FSP +*/ + +INCLUDE memory_regions.ld + +/* Uncomment and set XIP_SECONDARY_SLOT_IMAGE to 1 below for the secondary XIP application image.*/ +/* + XIP_SECONDARY_SLOT_IMAGE = 1; +*/ + +QSPI_FLASH_PRV_LENGTH = DEFINED(QSPI_FLASH_SIZE) ? ABSOLUTE(QSPI_FLASH_SIZE) : ABSOLUTE(QSPI_FLASH_LENGTH); +OSPI_DEVICE_0_PRV_LENGTH = DEFINED(OSPI_DEVICE_0_SIZE) ? ABSOLUTE(OSPI_DEVICE_0_SIZE) : ABSOLUTE(OSPI_DEVICE_0_LENGTH); +OSPI_DEVICE_1_PRV_LENGTH = DEFINED(OSPI_DEVICE_1_SIZE) ? ABSOLUTE(OSPI_DEVICE_1_SIZE) : ABSOLUTE(OSPI_DEVICE_1_LENGTH); + +/* If a flat (secure) project has DEFINED RAM_NS_BUFFER_LENGTH, then emit IDAU symbols to allocate non-secure RAM. */ +__RESERVE_NS_RAM = !DEFINED(PROJECT_NONSECURE) && DEFINED(RAM_NS_BUFFER_LENGTH) && (OPTION_SETTING_S_LENGTH != 0); + +ITCM_START = DEFINED(ITCM_START)? ITCM_START : 0; +ITCM_LENGTH = DEFINED(ITCM_LENGTH)? ITCM_LENGTH : 0; +DTCM_START = DEFINED(DTCM_START)? DTCM_START : 0; +DTCM_LENGTH = DEFINED(DTCM_LENGTH)? DTCM_LENGTH : 0; +NS_OFFSET_START = DEFINED(NS_OFFSET_START) ? NS_OFFSET_START : 0; +NS_IMAGE_OFFSET = DEFINED(PROJECT_NONSECURE) ? NS_OFFSET_START : 0; +RAM_NS_BUFFER_BLOCK_LENGTH = DEFINED(RAM_NS_BUFFER_LENGTH) ? ALIGN(RAM_NS_BUFFER_LENGTH, 8192) : 0; +RAM_NS_BUFFER_LENGTH = DEFINED(RAM_NS_BUFFER_LENGTH) ? RAM_NS_BUFFER_LENGTH : 0; +RAM_NS_BUFFER_START = RAM_START + RAM_LENGTH - RAM_NS_BUFFER_LENGTH; +RAM_NS_BUFFER_BLOCK_START = RAM_START + RAM_LENGTH - RAM_NS_BUFFER_BLOCK_LENGTH; + +OPTION_SETTING_START_NS = DEFINED(PROJECT_NONSECURE) ? OPTION_SETTING_START : OPTION_SETTING_START + 0x80; + +/* This definition is used to avoid moving the counter in OPTION_SETTING regions for projects that should not configure option settings. + * Bootloader images do not configure option settings because they are owned by the bootloader. + * FSP_BOOTABLE_IMAGE is only defined in bootloader images. */ +__bl_FSP_BOOTABLE_IMAGE = 1; +__bln_FSP_BOOTABLE_IMAGE = 1; +PROJECT_SECURE_OR_FLAT = (!DEFINED(PROJECT_NONSECURE) || DEFINED(PROJECT_SECURE)) && OPTION_SETTING_LENGTH && !DEFINED(FSP_BOOTABLE_IMAGE); +USE_OPTION_SETTING_NS = DEFINED(PROJECT_NONSECURE) && !DEFINED(FSP_BOOTABLE_IMAGE); + +__bl_FLASH_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_IMAGE_NUMBER == 1 ? FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH : + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_SCRATCH_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_FLASH_IMAGE_LENGTH = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_FLASH_IMAGE_END = __bl_FLASH_IMAGE_START + __bl_FLASH_IMAGE_LENGTH; +__bl_XIP_SECONDARY_FLASH_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_BOOTLOADER_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH; +__bl_XIP_SECONDARY_FLASH_IMAGE_END = __bl_XIP_SECONDARY_FLASH_IMAGE_START + __bl_FLASH_IMAGE_LENGTH; +__bl_FLASH_NS_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_IMAGE_START - FLASH_BOOTLOADER_HEADER_LENGTH + FLASH_APPLICATION_S_LENGTH; +__bl_FLASH_NSC_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_NS_START - FLASH_APPLICATION_NSC_LENGTH; +__bl_RAM_NS_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : + RAM_START + RAM_LENGTH - RAM_APPLICATION_NS_LENGTH; +__bl_RAM_NSC_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : + __bl_RAM_NS_START - RAM_APPLICATION_NSC_LENGTH; +__bl_FLASH_NS_IMAGE_START = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + __bl_FLASH_NS_START + FLASH_BOOTLOADER_HEADER_LENGTH_2; +__bln_FLASH_IMAGE_START = __bl_FLASH_NS_IMAGE_START; +__bln_FLASH_IMAGE_LENGTH = !DEFINED(FLASH_BOOTLOADER_LENGTH) ? 0 : + FLASH_APPLICATION_NS_LENGTH == 0 ? __bl_FLASH_IMAGE_END : + FLASH_APPLICATION_NS_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH_2; + +XIP_SECONDARY_SLOT_IMAGE = DEFINED(XIP_SECONDARY_SLOT_IMAGE) ? XIP_SECONDARY_SLOT_IMAGE : 0; +FLASH_ORIGIN = !DEFINED(FLASH_IMAGE_START) ? FLASH_START : + XIP_SECONDARY_SLOT_IMAGE == 1 ? XIP_SECONDARY_FLASH_IMAGE_START : + FLASH_IMAGE_START; +LIMITED_FLASH_LENGTH = DEFINED(FLASH_IMAGE_LENGTH) ? FLASH_IMAGE_LENGTH : + DEFINED(FLASH_BOOTLOADER_LENGTH) ? FLASH_BOOTLOADER_LENGTH : + FLASH_LENGTH; + +/* Define memory regions. */ +MEMORY +{ + ITCM (rx) : ORIGIN = ITCM_START + NS_IMAGE_OFFSET, LENGTH = ITCM_LENGTH + DTCM (rwx) : ORIGIN = DTCM_START + NS_IMAGE_OFFSET, LENGTH = DTCM_LENGTH + FLASH (rx) : ORIGIN = FLASH_ORIGIN + NS_IMAGE_OFFSET, LENGTH = LIMITED_FLASH_LENGTH + RAM (rwx) : ORIGIN = RAM_START + NS_IMAGE_OFFSET, LENGTH = RAM_LENGTH + DATA_FLASH (rx) : ORIGIN = DATA_FLASH_START + NS_IMAGE_OFFSET, LENGTH = DATA_FLASH_LENGTH + QSPI_FLASH (rx) : ORIGIN = QSPI_FLASH_START, LENGTH = QSPI_FLASH_PRV_LENGTH + OSPI_DEVICE_0 (rx) : ORIGIN = OSPI_DEVICE_0_START, LENGTH = OSPI_DEVICE_0_PRV_LENGTH + OSPI_DEVICE_1 (rx) : ORIGIN = OSPI_DEVICE_1_START, LENGTH = OSPI_DEVICE_1_PRV_LENGTH + OSPI_DEVICE_0_RAM (rwx) : ORIGIN = OSPI_DEVICE_0_START, LENGTH = OSPI_DEVICE_0_PRV_LENGTH + OSPI_DEVICE_1_RAM (rwx) : ORIGIN = OSPI_DEVICE_1_START, LENGTH = OSPI_DEVICE_1_PRV_LENGTH + SDRAM (rwx) : ORIGIN = SDRAM_START, LENGTH = SDRAM_LENGTH + OPTION_SETTING (r) : ORIGIN = OPTION_SETTING_START + NS_IMAGE_OFFSET, LENGTH = OPTION_SETTING_LENGTH + OPTION_SETTING_OFS (r) : ORIGIN = OPTION_SETTING_START + NS_IMAGE_OFFSET, LENGTH = 0x18 + OPTION_SETTING_SAS (r) : ORIGIN = OPTION_SETTING_START + NS_IMAGE_OFFSET + 0x34, LENGTH = OPTION_SETTING_LENGTH - 0x34 + OPTION_SETTING_S (r) : ORIGIN = OPTION_SETTING_S_START + NS_IMAGE_OFFSET, LENGTH = OPTION_SETTING_S_LENGTH + ID_CODE (rx) : ORIGIN = ID_CODE_START, LENGTH = ID_CODE_LENGTH +} + +/* Library configurations */ +GROUP(libgcc.a libc.a libm.a libnosys.a) + +/* Linker script to place sections and symbol values. Should be used together + * with other linker script that defines memory regions FLASH and RAM. + * It references following symbols, which must be DEFINED in code: + * Reset_Handler : Entry of reset handler + * + * It defines following symbols, which code can use without definition: + * __exidx_start + * __exidx_end + * __copy_table_start__ + * __copy_table_end__ + * __zero_table_start__ + * __zero_table_end__ + * __etext + * __data_start__ + * __preinit_array_start + * __preinit_array_end + * __init_array_start + * __init_array_end + * __fini_array_start + * __fini_array_end + * __data_end__ + * __bss_start__ + * __bss_end__ + * __HeapLimit + * __StackLimit + * __StackTop + * __stack + * __Vectors_End + * __Vectors_Size + * __qspi_flash_start__ + * __qspi_flash_end__ + * __qspi_flash_code_size__ + * __qspi_region_max_size__ + * __qspi_region_start_address__ + * __qspi_region_end_address__ + * __ospi_device_0_start__ + * __ospi_device_0_end__ + * __ospi_device_0_code_size__ + * __ospi_device_0_region_max_size__ + * __ospi_device_0_region_start_address__ + * __ospi_device_0_region_end_address__ + * __ospi_device_1_start__ + * __ospi_device_1_end__ + * __ospi_device_1_code_size__ + * __ospi_device_1_region_max_size__ + * __ospi_device_1_region_start_address__ + * __ospi_device_1_region_end_address__ + */ +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + __tz_FLASH_S = ABSOLUTE(FLASH_START); + __ROM_Start = .; + + /* Even though the vector table is not 256 entries (1KB) long, we still allocate that much + * space because ROM registers are at address 0x400 and there is very little space + * in between. */ + KEEP(*(.fixed_vectors*)) + KEEP(*(.application_vectors*)) + __Vectors_End = .; + + /* ROM Registers start at address 0x00000400 for devices that do not have the OPTION_SETTING region. */ + . = OPTION_SETTING_LENGTH > 0 ? . : __ROM_Start + 0x400; + KEEP(*(.rom_registers*)) + + /* Reserving 0x100 bytes of space for ROM registers. */ + . = OPTION_SETTING_LENGTH > 0 ? . : __ROM_Start + 0x500; + + /* Allocate flash write-boundary-aligned + * space for sce9 wrapped public keys for mcuboot if the module is used. + */ + . = ALIGN(128); + KEEP(*(.mcuboot_sce9_key*)) + + *(.text*) + + KEEP(*(.version)) + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + __usb_dev_descriptor_start_fs = .; + KEEP(*(.usb_device_desc_fs*)) + __usb_cfg_descriptor_start_fs = .; + KEEP(*(.usb_config_desc_fs*)) + __usb_interface_descriptor_start_fs = .; + KEEP(*(.usb_interface_desc_fs*)) + __usb_descriptor_end_fs = .; + __usb_dev_descriptor_start_hs = .; + KEEP(*(.usb_device_desc_hs*)) + __usb_cfg_descriptor_start_hs = .; + KEEP(*(.usb_config_desc_hs*)) + __usb_interface_descriptor_start_hs = .; + KEEP(*(.usb_interface_desc_hs*)) + __usb_descriptor_end_hs = .; + + KEEP(*(.eh_frame*)) + + __ROM_End = .; + } > FLASH = 0xFF + + __Vectors_Size = __Vectors_End - __Vectors; + + . = .; + __itcm_data_pre_location = .; + + /* Initialized ITCM data. */ + /* Aligned to FCACHE2 for RA8. */ + .itcm_data : ALIGN(16) + { + /* Start of ITCM Secure Trustzone region. */ + __tz_ITCM_S = ABSOLUTE(ITCM_START); + + /* All ITCM data start */ + __itcm_data_start = .; + + KEEP(*(.itcm_data*)) + + /* Pad to eight byte alignment in case of ECC initialization. Fill zero. */ + . = ALIGN(8); + + /* All ITCM data end */ + __itcm_data_end = .; + + /* + * Start of the ITCM Non-Secure Trustzone region. + * ITCM_NS_START can be used to set a fixed address for non-secure ITCM in secure projects or flat projects. + */ + __tz_ITCM_N = DEFINED(ITCM_NS_START) ? ABSOLUTE(ITCM_NS_START) : ALIGN(__itcm_data_end, 8192); + } > ITCM AT > FLASH = 0x00 + + /* Addresses exported for ITCM initialization. */ + __itcm_data_init_start = LOADADDR(.itcm_data); + __itcm_data_init_end = LOADADDR(.itcm_data) + SIZEOF(.itcm_data); + + ASSERT(ORIGIN(ITCM) % 8 == 0, "ITCM memory region origin must be aligned to 8 bytes.") + ASSERT(LENGTH(ITCM) % 8 == 0, "ITCM memory region length must be a multiple of 8 bytes.") + ASSERT(LOADADDR(.itcm_data) % 16 == 0, ".itcm_data section must be aligned to 16 bytes.") + ASSERT(SIZEOF(.itcm_data) % 8 == 0, ".itcm_data section size must be a multiple of 8 bytes.") + + /* Restore location counter. */ + /* If ITCM is not present, this will be the address stored in '.' before ALIGN was attempted. */ + /* If ITCM is present, this will be the absolute address that follows the ITCM ROM location. */ + . = (SIZEOF(.itcm_data) > 0) ? __itcm_data_init_end : __itcm_data_pre_location; + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + /* To copy multiple ROM to RAM sections, + * uncomment .copy.table section and, + * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */ + /* + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + LONG (__etext) + LONG (__data_start__) + LONG (__data_end__ - __data_start__) + LONG (__etext2) + LONG (__data2_start__) + LONG (__data2_end__ - __data2_start__) + __copy_table_end__ = .; + } > FLASH + */ + + /* To clear multiple BSS sections, + * uncomment .zero.table section and, + * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */ + /* + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + LONG (__bss_start__) + LONG (__bss_end__ - __bss_start__) + LONG (__bss2_start__) + LONG (__bss2_end__ - __bss2_start__) + __zero_table_end__ = .; + } > FLASH + */ + + __etext = .; + + __tz_RAM_S = ORIGIN(RAM); + + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + .fsp_dtc_vector_table (NOLOAD) : + { + . = ORIGIN(RAM); + *(.fsp_dtc_vector_table) + } > RAM + + /* Initialized data section. */ + .data : + { + __data_start__ = .; + . = ALIGN(4); + + __Code_In_RAM_Start = .; + + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; + + *(vtable) + /* Don't use *(.data*) because it will place data meant for .data_flash in this section. */ + *(.data.*) + *(.data) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + + . = ALIGN(4); + + /* All data end */ + __data_end__ = .; + + } > RAM AT > FLASH + + . = .; + __dtcm_data_pre_location = LOADADDR(.data) + SIZEOF(.data); + + /* Initialized DTCM data. */ + /* Aligned to FCACHE2 for RA8. */ + .dtcm_data : ALIGN(16) + { + /* Start of DTCM Secure Trustzone region. */ + __tz_DTCM_S = ABSOLUTE(DTCM_START); + + /* Initialized DTCM data start */ + __dtcm_data_start = .; + + KEEP(*(.dtcm_data*)) + + /* Pad to eight byte alignment in case of ECC initialization. Fill zero. */ + . = ALIGN(8); + + /* Initialized DTCM data end */ + __dtcm_data_end = .; + } > DTCM AT > FLASH = 0x00 + + . = __dtcm_data_end; + /* Uninitialized DTCM data. */ + /* ALIGN appears on the left side of the colon because it is being used to assign the VMA directly, as opposed to a right side appearance which would control the LMA. */ + .dtcm_bss ALIGN(8) (NOLOAD) : + { + /* Uninitialized DTCM data start */ + __dtcm_bss_start = .; + + KEEP(*(.dtcm_bss*)) + + /* Pad to eight byte alignment in case of ECC initialization. No fill because of NOLOAD. */ + . = ALIGN(8); + + /* Uninitialized DTCM data end */ + __dtcm_bss_end = .; + + /* + * Start of the DTCM Non-Secure Trustzone region. + * DTCM_NS_START can be used to set a fixed address for non-secure DTCM in secure projects or flat projects. + */ + __tz_DTCM_N = DEFINED(DTCM_NS_START) ? ABSOLUTE(DTCM_NS_START) : ALIGN(__dtcm_bss_end, 8192); + } > DTCM + + /* Addresses exported for DTCM initialization. */ + __dtcm_data_init_start = LOADADDR(.dtcm_data); + __dtcm_data_init_end = LOADADDR(.dtcm_data) + SIZEOF(.dtcm_data); + + ASSERT(ORIGIN(DTCM) % 8 == 0, "DTCM memory region origin must be aligned to 8 bytes.") + ASSERT(LENGTH(DTCM) % 8 == 0, "DTCM memory region length must be a multiple of 8 bytes.") + ASSERT(LOADADDR(.dtcm_bss) == ADDR(.dtcm_bss), ".dtcm_bss has (VMA != LMA) but should be NOLOAD (VMA == LMA).") + ASSERT(LOADADDR(.dtcm_data) % 16 == 0, ".dtcm_data section must be aligned to 16 bytes.") + ASSERT(SIZEOF(.dtcm_data) % 8 == 0, ".dtcm_data section size must be a multiple of 8 bytes.") + ASSERT(LOADADDR(.dtcm_bss) % 8 == 0, ".dtcm_bss section must be aligned to 8 bytes.") + ASSERT(SIZEOF(.dtcm_bss) % 8 == 0, ".dtcm_bss section size must be a multiple of 8 bytes.") + ASSERT(__dtcm_bss_start == __dtcm_data_end, ".dtcm_bss section is not adjacent to .dtcm_data section.") + + /* Restore location counter. */ + /* If DTCM is not present, this will be the address stored in '.' before ALIGN was attempted. */ + /* If DTCM is present, this will be the absolute address that follows the DTCM ROM location. */ + . = (SIZEOF(.dtcm_data) > 0) ? __dtcm_data_init_end : __dtcm_data_pre_location; + + /* TrustZone Secure Gateway Stubs Section */ + + /* Store location counter for SPI non-retentive sections. */ + sgstubs_pre_location = .; + + /* Determine the secure gateway stubs address either by the provided linker variable or the next 1024-byte block. */ + SGSTUBS_LOC = (DEFINED(PROJECT_SECURE) && DEFINED(FLASH_NSC_START)) ? ABSOLUTE(FLASH_NSC_START) : ALIGN(1024); + .gnu.sgstubs SGSTUBS_LOC : ALIGN(1024) + { + __tz_FLASH_C = DEFINED(FLASH_NSC_START) ? ABSOLUTE(FLASH_NSC_START) : __RESERVE_NS_RAM ? ABSOLUTE(FLASH_START + FLASH_LENGTH) : ALIGN(1024); + _start_sg = .; + *(.gnu.sgstubs*) + . = ALIGN(32); + _end_sg = .; + } > FLASH + + __tz_FLASH_N = DEFINED(FLASH_NS_START) ? ABSOLUTE(FLASH_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(FLASH_START + FLASH_LENGTH) : FLASH_LENGTH < 32768 ? FLASH_LENGTH : ALIGN(32768); + FLASH_NS_IMAGE_START = DEFINED(FLASH_NS_IMAGE_START) ? FLASH_NS_IMAGE_START : __tz_FLASH_N; + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_QSPI_FLASH_S = ORIGIN(QSPI_FLASH); + + /* QSPI_FLASH section to be downloaded via debugger */ + .qspi_flash : + { + __qspi_flash_start__ = .; + KEEP(*(.qspi_flash*)) + KEEP(*(.code_in_qspi*)) + __qspi_flash_end__ = .; + } > QSPI_FLASH + __qspi_flash_code_size__ = __qspi_flash_end__ - __qspi_flash_start__; + + /* QSPI_FLASH non-retentive section, creates a copy in internal flash that can be copied to QSPI */ + __qspi_flash_code_addr__ = sgstubs_pre_location; + .qspi_non_retentive : AT(__qspi_flash_code_addr__) + { + __qspi_non_retentive_start__ = .; + KEEP(*(.qspi_non_retentive*)) + __qspi_non_retentive_end__ = .; + } > QSPI_FLASH + __qspi_non_retentive_size__ = __qspi_non_retentive_end__ - __qspi_non_retentive_start__; + + __qspi_region_max_size__ = 0x4000000; /* Must be the same as defined in MEMORY above */ + __qspi_region_start_address__ = __qspi_flash_start__; + __qspi_region_end_address__ = __qspi_flash_start__ + __qspi_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_QSPI_FLASH_N = __qspi_non_retentive_end__; + + /* Support for OctaRAM */ + .OSPI_DEVICE_0_NO_LOAD (NOLOAD): + { + . = ALIGN(4); + __ospi_device_0_start__ = .; + *(.ospi_device_0_no_load*) + . = ALIGN(4); + __ospi_device_0_end__ = .; + } > OSPI_DEVICE_0_RAM + + .OSPI_DEVICE_1_NO_LOAD (NOLOAD): + { + . = ALIGN(4); + __ospi_device_1_start__ = .; + *(.ospi_device_1_no_load*) + . = ALIGN(4); + __ospi_device_1_end__ = .; + } > OSPI_DEVICE_1_RAM + + /* Note: There are no secure/non-secure boundaries for QSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_0_S = ORIGIN(OSPI_DEVICE_0); + + /* OSPI_DEVICE_0 section to be downloaded via debugger */ + .OSPI_DEVICE_0 : + { + __ospi_device_0_start__ = .; + KEEP(*(.ospi_device_0*)) + KEEP(*(.code_in_ospi_device_0*)) + __ospi_device_0_end__ = .; + } > OSPI_DEVICE_0 + __ospi_device_0_code_size__ = __ospi_device_0_end__ - __ospi_device_0_start__; + + /* OSPI_DEVICE_0 non-retentive section, creates a copy in internal flash that can be copied to OSPI */ + __ospi_device_0_code_addr__ = sgstubs_pre_location + (SIZEOF(.qspi_non_retentive)); + .ospi_device_0_non_retentive : AT(__ospi_device_0_code_addr__) + { + __ospi_device_0_non_retentive_start__ = .; + KEEP(*(.ospi_device_0_non_retentive*)) + __ospi_device_0_non_retentive_end__ = .; + } > OSPI_DEVICE_0 + __ospi_device_0_non_retentive_size__ = __ospi_device_0_non_retentive_end__ - __ospi_device_0_non_retentive_start__; + + __ospi_device_0_region_max_size__ = 0x8000000; /* Must be the same as defined in MEMORY above */ + __ospi_device_0_region_start_address__ = __ospi_device_0_start__; + __ospi_device_0_region_end_address__ = __ospi_device_0_start__ + __ospi_device_0_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_0_N = __ospi_device_0_non_retentive_end__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_1_S = ORIGIN(OSPI_DEVICE_1); + + /* OSPI_DEVICE_1 section to be downloaded via debugger */ + .OSPI_DEVICE_1 : + { + __ospi_device_1_start__ = .; + KEEP(*(.ospi_device_1*)) + KEEP(*(.code_in_ospi_device_1*)) + __ospi_device_1_end__ = .; + } > OSPI_DEVICE_1 + __ospi_device_1_code_size__ = __ospi_device_1_end__ - __ospi_device_1_start__; + + /* OSPI_DEVICE_1 non-retentive section, creates a copy in internal flash that can be copied to OSPI */ + __ospi_device_1_code_addr__ = sgstubs_pre_location + (SIZEOF(.qspi_non_retentive) + SIZEOF(.ospi_device_0_non_retentive)); + .ospi_device_1_non_retentive : AT(__ospi_device_1_code_addr__) + { + __ospi_device_1_non_retentive_start__ = .; + KEEP(*(.ospi_device_1_non_retentive*)) + __ospi_device_1_non_retentive_end__ = .; + } > OSPI_DEVICE_1 + __ospi_device_1_non_retentive_size__ = __ospi_device_1_non_retentive_end__ - __ospi_device_1_non_retentive_start__; + + __ospi_device_1_region_max_size__ = 0x10000000; /* Must be the same as defined in MEMORY above */ + __ospi_device_1_region_start_address__ = __ospi_device_1_start__; + __ospi_device_1_region_end_address__ = __ospi_device_1_start__ + __ospi_device_1_region_max_size__; + + /* Note: There are no secure/non-secure boundaries for OSPI. These symbols are provided for the RA configuration tool. */ + __tz_OSPI_DEVICE_1_N = __ospi_device_1_non_retentive_end__; + + .noinit (NOLOAD): + { + . = ALIGN(4); + __noinit_start = .; + KEEP(*(.noinit*)) + . = ALIGN(8); + /* Place the FreeRTOS heap here so that the __HeapLimit calculation does not include the freertos heap. */ + KEEP(*(.heap.*)) + __noinit_end = .; + } > RAM + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (NOLOAD): + { + . = ALIGN(8); + __HeapBase = .; + /* Place the STD heap here. */ + KEEP(*(.heap)) + __HeapLimit = .; + } > RAM + + /* Stacks are stored in this section. */ + .stack_dummy (NOLOAD): + { + . = ALIGN(8); + __StackLimit = .; + /* Main stack */ + KEEP(*(.stack)) + __StackTop = .; + /* Thread stacks */ + KEEP(*(.stack*)) + __StackTopAll = .; + } > RAM + + PROVIDE(__stack = __StackTopAll); + + /* This symbol represents the end of user allocated RAM. The RAM after this symbol can be used + at run time for things such as ThreadX memory pool allocations. */ + __RAM_segment_used_end__ = ALIGN(__StackTopAll , 4); + + /* RAM_NSC_START can be used to set a fixed address for non-secure callable RAM in secure projects. + * If it is not specified, the address for NSC RAM is the end of RAM aligned to a 1K boundary. + * In flat projects that require non-secure RAM, this variable is set to the start of non-secure RAM. */ + __tz_RAM_C = DEFINED(RAM_NSC_START) ? ABSOLUTE(RAM_NSC_START - RAM_NS_BUFFER_BLOCK_LENGTH) : __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_BLOCK_START) : ALIGN(__RAM_segment_used_end__, 1024); + + /* RAM_NS_START can be used to set a fixed address for non-secure RAM in secure projects or flat projects. + * RAM_NS_BUFFER_BLOCK_LENGTH is used to allocate non-secure buffers in a flat project. If it is not + * specified, the address for NSC RAM is the end of RAM aligned to an 8K boundary. + * In flat projects that require non-secure RAM, this variable is set to the start of non-secure RAM. */ + __tz_RAM_N = DEFINED(RAM_NS_START) ? ABSOLUTE(RAM_NS_START - RAM_NS_BUFFER_BLOCK_LENGTH) : __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_BLOCK_START) : ALIGN(__tz_RAM_C, 8192); + + /* Non-secure buffers must be in non-secure RAM. This is primarily used for the EDMAC in flat projects. + * The EDMAC is a non-secure bus master and can only access non-secure RAM. */ + .ns_buffer (NOLOAD): + { + /* Allocate RAM on a 32-byte boundary to help with placement of Ethernet buffers. */ + . = __RESERVE_NS_RAM ? ABSOLUTE(RAM_NS_BUFFER_START & 0xFFFFFFE0) : .; + + KEEP(*(.ns_buffer*)) + } > RAM + + /* Data flash. */ + .data_flash : + { + . = ORIGIN(DATA_FLASH); + __tz_DATA_FLASH_S = .; + __Data_Flash_Start = .; + KEEP(*(.data_flash*)) + __Data_Flash_End = .; + + __tz_DATA_FLASH_N = DEFINED(DATA_FLASH_NS_START) ? ABSOLUTE(DATA_FLASH_NS_START) : __RESERVE_NS_RAM ? ABSOLUTE(DATA_FLASH_START + DATA_FLASH_LENGTH) : ALIGN(1024); + } > DATA_FLASH + + /* Note: There are no secure/non-secure boundaries for SDRAM. These symbols are provided for the RA configuration tool. */ + __tz_SDRAM_S = ORIGIN(SDRAM); + + /* SDRAM */ + .sdram (NOLOAD): + { + __SDRAM_Start = .; + KEEP(*(.sdram*)) + KEEP(*(.frame*)) + __SDRAM_End = .; + } > SDRAM + + /* Note: There are no secure/non-secure boundaries for SDRAM. These symbols are provided for the RA configuration tool. */ + __tz_SDRAM_N = __SDRAM_End; + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. */ + __tz_ID_CODE_S = ORIGIN(ID_CODE); + + /* Note: There are no secure/non-secure boundaries for ID_CODE. These symbols are provided for the RA configuration tool. + * Set this symbol to the same value as __tz_ID_CODE_S so the RA configuration tool does not split the ID_CODE + * memory region between TrustZone projects. */ + __tz_ID_CODE_N = __tz_ID_CODE_S; + + .id_code : + { + __ID_Code_Start = .; + KEEP(*(.id_code*)) + __ID_Code_End = .; + } > ID_CODE + + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S = ORIGIN(OPTION_SETTING_OFS); + + .option_setting_ofs : + { + __OPTION_SETTING_OFS_Start = .; + KEEP(*(.option_setting_ofs0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_OFS_Start + 0x04 : __OPTION_SETTING_OFS_Start; + KEEP(*(.option_setting_ofs2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_OFS_Start + 0x10 : __OPTION_SETTING_OFS_Start; + KEEP(*(.option_setting_dualsel)) + __OPTION_SETTING_OFS_End = .; + } > OPTION_SETTING_OFS = 0xFF + + .option_setting_sas : + { + __OPTION_SETTING_SAS_Start = .; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_SAS_End = .; + } > OPTION_SETTING_SAS = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_N = ABSOLUTE(OPTION_SETTING_START_NS); + + .option_setting_ns : + { + __OPTION_SETTING_NS_Start = .; + KEEP(*(.option_setting_ofs1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x04 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_ofs3)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x10 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_banksel)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x40 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps0)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x44 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x48 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps2)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x4C : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_bps3)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x60 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps0)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x64 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps1)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x68 : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps2)) + . = USE_OPTION_SETTING_NS ? __OPTION_SETTING_NS_Start + 0x6C : __OPTION_SETTING_NS_Start; + KEEP(*(.option_setting_pbps3)) + __OPTION_SETTING_NS_End = .; + } > OPTION_SETTING = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S_S = ORIGIN(OPTION_SETTING_S); + + .option_setting_s : + { + __OPTION_SETTING_S_Start = .; + KEEP(*(.option_setting_ofs1_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x04 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs3_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x10 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_banksel_sec)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x40 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x44 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x48 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x4C : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sec3)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x60 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x64 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x68 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x6C : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_pbps_sec3)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x80 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs1_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x84 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_ofs3_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0x90 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_banksel_sel)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC0 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel0)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC4 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel1)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xC8 : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel2)) + . = PROJECT_SECURE_OR_FLAT ? __OPTION_SETTING_S_Start + 0xCC : __OPTION_SETTING_S_Start; + KEEP(*(.option_setting_bps_sel3)) + __OPTION_SETTING_S_End = .; + } > OPTION_SETTING_S = 0xFF + + /* Symbol required for RA Configuration tool. */ + __tz_OPTION_SETTING_S_N = __OPTION_SETTING_S_End; +} diff --git a/bsp/renesas/ra8d1-ek/script/fsp.scat b/bsp/renesas/ra8d1-ek/script/fsp.scat new file mode 100644 index 0000000000..e8cd0b0699 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/script/fsp.scat @@ -0,0 +1,986 @@ +#! armclang -mcpu=cortex-m4 --target=arm-arm-none-eabi -E -x c -I. +#include "memory_regions.scat" + +; This scatter-file places the vector table, application code, data, stacks and heap at suitable addresses in the memory map. + +#define ROM_REGISTERS_START 0x400 +; Uncomment and set XIP_SECONDARY_SLOT_IMAGE to 1 below for the secondary XIP application image. +; #define XIP_SECONDARY_SLOT_IMAGE 1 + +#ifdef FLASH_BOOTLOADER_LENGTH + +#define BL_FLASH_IMAGE_START (FLASH_APPLICATION_IMAGE_NUMBER == 1 ? FLASH_START + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH : \ + FLASH_START + FLASH_BOOTLOADER_LENGTH + FLASH_BOOTLOADER_SCRATCH_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_FLASH_IMAGE_END (BL_FLASH_IMAGE_START + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_XIP_SECONDARY_FLASH_IMAGE_START (FLASH_BOOTLOADER_LENGTH + FLASH_APPLICATION_S_LENGTH + FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_XIP_SECONDARY_FLASH_IMAGE_END (BL_XIP_SECONDARY_FLASH_IMAGE_START + FLASH_APPLICATION_S_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH) +#define BL_FLASH_NS_START (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_IMAGE_START - FLASH_BOOTLOADER_HEADER_LENGTH + FLASH_APPLICATION_S_LENGTH) +#define BL_FLASH_NSC_START (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_NS_START - FLASH_APPLICATION_NSC_LENGTH) +#define BL_FLASH_NS_IMAGE_START (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_NS_START + FLASH_BOOTLOADER_HEADER_LENGTH_2) +#define BL_RAM_NS_START (FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : \ + RAM_START + RAM_LENGTH - RAM_APPLICATION_NS_LENGTH) +#define BL_RAM_NSC_START (FLASH_APPLICATION_NS_LENGTH == 0 ? RAM_START + RAM_LENGTH : \ + BL_RAM_NS_START - RAM_APPLICATION_NSC_LENGTH) +#define BLN_FLASH_IMAGE_START (BL_FLASH_NS_IMAGE_START) +#define BLN_FLASH_IMAGE_END (FLASH_APPLICATION_NS_LENGTH == 0 ? BL_FLASH_IMAGE_END : \ + BL_FLASH_NS_IMAGE_START + FLASH_APPLICATION_NS_LENGTH - FLASH_BOOTLOADER_HEADER_LENGTH_2) + +#define FLASH_ORIGIN FLASH_START +#define LIMITED_FLASH_LENGTH FLASH_BOOTLOADER_LENGTH + +#elif defined FLASH_IMAGE_START + +#if defined XIP_SECONDARY_SLOT_IMAGE +#define FLASH_ORIGIN (XIP_SECONDARY_SLOT_IMAGE == 1 ? XIP_SECONDARY_FLASH_IMAGE_START : FLASH_IMAGE_START) +#else +#define FLASH_ORIGIN FLASH_IMAGE_START +#endif + + +#ifdef FLASH_NS_START +#define LIMITED_FLASH_LENGTH FLASH_NS_START - FLASH_IMAGE_START +#else +#define LIMITED_FLASH_LENGTH FLASH_IMAGE_END - FLASH_IMAGE_START +#endif + +#else + +#define FLASH_ORIGIN FLASH_START +#define LIMITED_FLASH_LENGTH FLASH_LENGTH + +#endif + +; If a flat project has defined RAM_NS_BUFFER_LENGTH, then emit IDAU symbols to allocate non-secure RAM. +#if !defined(PROJECT_NONSECURE) && defined(RAM_NS_BUFFER_LENGTH) +#define __RESERVE_NS_RAM (1) +; Allocate required RAM and align to 32K boundary +#define RAM_NS_BUFFER_START ((RAM_START + RAM_LENGTH - RAM_NS_BUFFER_LENGTH) AND 0xFFFFFFE0) +#else +#define __RESERVE_NS_RAM (0) +#endif + +#ifndef FLASH_S_START +#define FLASH_S_START 0 +#endif + +#ifndef RAM_S_START +#define RAM_S_START RAM_START +#endif + +#ifndef DATA_FLASH_S_START +#define DATA_FLASH_S_START DATA_FLASH_START +#endif +#ifndef OPTION_SETTING_DATA_FLASH_S_START +#define OPTION_SETTING_DATA_FLASH_S_START 0 +#endif + +#ifndef OPTION_SETTING_DATA_FLASH_S_LENGTH +#define OPTION_SETTING_DATA_FLASH_S_LENGTH 0 +#endif + +#if __RESERVE_NS_RAM + +#ifndef RAM_NSC_START +#define RAM_NSC_START RAM_NS_BUFFER_START AND 0xFFFFE000 +#endif + +#ifndef RAM_NS_START +#define RAM_NS_START RAM_NS_BUFFER_START AND 0xFFFFE000 +#endif + +#ifndef DATA_FLASH_NS_START +#define DATA_FLASH_NS_START DATA_FLASH_START + DATA_FLASH_LENGTH +#endif + +#ifndef FLASH_NSC_START +#define FLASH_NSC_START FLASH_ORIGIN + LIMITED_FLASH_LENGTH +#endif + +#ifndef FLASH_NS_START +#define FLASH_NS_START FLASH_ORIGIN + LIMITED_FLASH_LENGTH +#endif + +#else + +#ifndef RAM_NSC_START +#ifdef PROJECT_SECURE +#define RAM_NSC_START +0 ALIGN 1024 +#else +#define RAM_NSC_START RAM_START + RAM_LENGTH +#endif +#endif + +#ifndef RAM_NS_START +#ifdef PROJECT_SECURE +#define RAM_NS_START +0 ALIGN 8192 +#else +#define RAM_NS_START RAM_START + RAM_LENGTH +#endif +#endif + +#ifndef DATA_FLASH_NS_START +#define DATA_FLASH_NS_START +0 ALIGN 1024 +#endif + +#ifndef FLASH_NSC_START +#define FLASH_NSC_START (AlignExpr(ImageLength(LOAD_REGION_FLASH) + ImageBase(LOAD_REGION_FLASH), 1024)) +#endif + +#ifndef FLASH_NS_START +#define FLASH_NS_START AlignExpr(+0, 32768) +#endif + +#endif + +#ifndef QSPI_FLASH_S_START +#define QSPI_FLASH_S_START QSPI_FLASH_START +#endif + +#ifndef QSPI_FLASH_NS_START +#define QSPI_FLASH_NS_START +0 +#endif + +#ifndef OSPI_DEVICE_0_S_START +#define OSPI_DEVICE_0_S_START OSPI_DEVICE_0_START +#endif + +#ifndef OSPI_DEVICE_0_NS_START +#define OSPI_DEVICE_0_NS_START +0 +#endif + +#ifndef OSPI_DEVICE_1_S_START +#define OSPI_DEVICE_1_S_START OSPI_DEVICE_1_START +#endif + +#ifndef OSPI_DEVICE_1_NS_START +#define OSPI_DEVICE_1_NS_START +0 +#endif + +#ifndef SDRAM_S_START +#define SDRAM_S_START SDRAM_START +#endif + +#ifndef SDRAM_NS_START +#define SDRAM_NS_START +0 +#endif + +#ifdef QSPI_FLASH_SIZE +#define QSPI_FLASH_PRV_LENGTH QSPI_FLASH_SIZE +#else +#define QSPI_FLASH_PRV_LENGTH QSPI_FLASH_LENGTH +#endif + +#ifdef OSPI_DEVICE_0_SIZE +#define OSPI_DEVICE_0_PRV_LENGTH OSPI_DEVICE_0_SIZE +#else +#define OSPI_DEVICE_0_PRV_LENGTH OSPI_DEVICE_0_LENGTH +#endif + +#ifdef OSPI_DEVICE_1_SIZE +#define OSPI_DEVICE_1_PRV_LENGTH OSPI_DEVICE_1_SIZE +#else +#define OSPI_DEVICE_1_PRV_LENGTH OSPI_DEVICE_1_LENGTH +#endif + +#ifdef PROJECT_NONSECURE +#define OPTION_SETTING_START_NS (OPTION_SETTING_START) +#else +#define OPTION_SETTING_START_NS (OPTION_SETTING_START + 0x80) +#endif + +#define ID_CODE_OVERLAP ((ID_CODE_START > OPTION_SETTING_START) && (ID_CODE_START < OPTION_SETTING_START + OPTION_SETTING_LENGTH)) + +LOAD_REGION_FLASH FLASH_ORIGIN ALIGN 0x80 LIMITED_FLASH_LENGTH +{ + __tz_FLASH_S +0 EMPTY 0 + { + } + + VECTORS +0 FIXED PADVALUE 0xFFFFFFFF ; maximum of 256 exceptions (256*4 bytes == 0x400) + { + *(.fixed_vectors, +FIRST) + *(.application_vectors) + } + +#if (OPTION_SETTING_LENGTH == 0) && (FLASH_ORIGIN == FLASH_START) + + /* MCUs with the OPTION_SETTING region do not use the ROM registers at 0x400. */ + + VECTORS_FILL +0 FIXED FILL 0xFFFFFFFF (0x400 - ImageLength(VECTORS)) + { + } + + ROM_REGISTERS FLASH_START+0x400 FIXED PADVALUE 0xFFFFFFFF + { + bsp_rom_registers.o (.rom_registers) + } + + ROM_REGISTERS_FILL +0 FIXED FILL 0xFFFFFFFF (0x100 - ImageLength(ROM_REGISTERS)) + { + } + +#endif + + MCUBOOT_SCE9_KEY +0 FIXED + { + *(.mcuboot_sce9_key) + } + + + INIT_ARRAY +0 FIXED + { + *(.init_array) + } + + USB_DESC_FS +0 FIXED + { + *(.usb_device_desc_fs*) + *(.usb_config_desc_fs*) + *(.usb_interface_desc_fs*) + } + + RO_CODE_DATA +0 FIXED + { + *(.text*,.rodata*,.constdata*) + .ANY(+RO) + } + + __tz_RAM_S RAM_S_START EMPTY 0 + { + } + + DTC_VECTOR_TABLE RAM_START UNINIT NOCOMPRESS RAM_LENGTH + { + ; If DTC is used, put the DTC vector table at the start of SRAM. + ; This avoids memory holes due to 1K alignment required by it. + *(.bss.fsp_dtc_vector_table) + } + + DATA +0 NOCOMPRESS + { + ; Do not use *(.data*) because it will place data meant for .data_flash in this section. + *(.data.*) + *(.data) + *(.code_in_ram) + +#if !__RESERVE_NS_RAM + *(.ns_buffer*) +#endif + + .ANY(+RW) + } + + BSS +0 NOCOMPRESS + { + *(+ZI) + } + + NOINIT +0 UNINIT NOCOMPRESS + { + *(.bss.noinit) + } + + NOCACHE +0 UNINIT NOCOMPRESS ALIGN 32 + { + *(.bss.nocache) + } + + ; The required minimum ending alignment is a 32 byte boundary for Armv8-M MPU requirements. + ; There is no way to control the ending alignment of NOCACHE, so this dedicated section acts as padding and as the true execution section limit of NOCACHE. + NOCACHE_PAD (ImageLimit(NOCACHE)) EMPTY NOCOMPRESS (AlignExpr(ImageLength(NOCACHE), 32) - ImageLength(NOCACHE)) + { + } + + ARM_LIB_HEAP +0 ALIGN 8 UNINIT NOCOMPRESS + { + *(.bss.heap) + } + + ; ARM_LIB_STACK is not used in FSP, but it must be in the scatter file to avoid a linker error + ARM_LIB_STACK +0 ALIGN 8 UNINIT NOCOMPRESS EMPTY 0 + { + } + + STACK +0 ALIGN 8 UNINIT NOCOMPRESS + { + *(.bss.stack) + *(.bss.stack.thread) + } + + /* This is the end of RAM used in the application. */ + RAM_END +0 EMPTY 4 + { + } + __RAM_NSC_START RAM_NSC_START EMPTY 0 + { + } + + __tz_RAM_N RAM_NS_START EMPTY 0 + { + } + + ; Support for OctaRAM + OSPI_DEVICE_0_NO_LOAD OSPI_DEVICE_0_START UNINIT NOCOMPRESS + { + *(.ospi_device_0_no_load*) + } + + ; Support for OctaRAM + OSPI_DEVICE_1_NO_LOAD OSPI_DEVICE_1_START UNINIT NOCOMPRESS + { + *(.ospi_device_1_no_load*) + } + +#ifdef FLASH_BOOTLOADER_LENGTH + + __bl_FLASH_IMAGE_START BL_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_image_start) + } + + __bl_XIP_SECONDARY_FLASH_IMAGE_START BL_XIP_SECONDARY_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_xip_secondary_flash_image_start) + } + + +#if FLASH_APPLICATION_NS_LENGTH == 0 + + __bl_FLASH_IMAGE_END BL_FLASH_IMAGE_END OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_image_end) + } + + __bl_XIP_SECONDARY_FLASH_IMAGE_END BL_XIP_SECONDARY_FLASH_IMAGE_END OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_xip_secondary_flash_image_end) + } + +#else + + __bl_FLASH_NS_START BL_FLASH_NS_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_ns_start) + } + + __bl_FLASH_NSC_START BL_FLASH_NSC_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_nsc_start) + } + + __bl_FLASH_NS_IMAGE_START BL_FLASH_NS_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_flash_ns_image_start) + } + + __bln_FLASH_IMAGE_START BLN_FLASH_IMAGE_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bln_flash_image_start) + } + + __bln_FLASH_IMAGE_END BLN_FLASH_IMAGE_END OVERLAY UNINIT 4 + { + *(.bl_boundary.bln_flash_image_end) + } + + __bl_RAM_NS_START BL_RAM_NS_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_ram_ns_start) + } + + __bl_RAM_NSC_START BL_RAM_NSC_START OVERLAY UNINIT 4 + { + *(.bl_boundary.bl_ram_nsc_start) + } + +#endif + +#endif + +#if __RESERVE_NS_RAM + RAM_NS_BUFFER RAM_NS_BUFFER_START + { + *(.ns_buffer*) + } +#endif + + RAM_LIMIT RAM_START + RAM_LENGTH EMPTY 4 + { + } + +#if ITCM_LENGTH > 0 + ; ALIGN will align both the load address and execution address. + ; The required minimum execution address alignment is an 8 byte boundary for ECC compatibility. + ; Aligning instead to a 16 byte boundary meets the above requirement and also aligns the load address to FCACHE2 for RA8 to optimize copying. + __tz_ITCM_S ITCM_START ALIGN 16 EMPTY 0 + { + } + + ITCM_DATA +0 NOCOMPRESS ITCM_LENGTH + { + *(.itcm_data*) + } + + ; The required minimum ending alignment is an 8 byte boundary for ECC compatibility. + ; There is no way to control the ending alignment of ITCM_DATA, so this dedicated section acts as padding and as the true load and execution section limit of ITCM_DATA. + ; "Load Addr" will show "-" in the map file making it seem as if no padding is actually in the binary, but "Load base:" will show otherwise. + ITCM_PAD (ImageLimit(ITCM_DATA)) FILL 0 NOCOMPRESS (AlignExpr(ImageLength(ITCM_DATA), 8) - ImageLength(ITCM_DATA)) + { + } + +#ifndef ITCM_NS_START +#define ITCM_NS_START AlignExpr(+0, 8192) +#endif + __tz_ITCM_N ITCM_NS_START ALIGN 8 EMPTY 0 + { + } + + ScatterAssert((ITCM_START AND 0xF) == 0) + ScatterAssert((ITCM_LENGTH AND 0x7) == 0) + ScatterAssert(((LoadLength(ITCM_DATA) + LoadLength(ITCM_PAD)) AND 0x7) == 0) + ScatterAssert(LoadLimit(ITCM_DATA) == LoadBase(ITCM_PAD)) + ScatterAssert(ImageLimit(ITCM_DATA) == ImageBase(ITCM_PAD)) + +#endif + + + +#if DTCM_LENGTH > 0 + ; ALIGN will align both the load address and execution address. + ; The required minimum execution address alignment is an 8 byte boundary for ECC compatibility. + ; Aligning instead to a 16 byte boundary meets the above requirement and also aligns the load address to FCACHE2 for RA8 to optimize copying. + __tz_DTCM_S DTCM_START ALIGN 16 EMPTY 0 + { + } + + DTCM_DATA +0 NOCOMPRESS DTCM_LENGTH + { + *(.dtcm_data*) + } + + ; The required minimum ending alignment is an 8 byte boundary for ECC compatibility. + ; There is no way to control the ending alignment of DTCM_DATA, so this dedicated section acts as padding and as the true load and execution section limit of DTCM_DATA. + ; "Load Addr" will show "-" in the map file making it seem as if no padding is actually in the binary, but "Load base:" will show otherwise. + DTCM_PAD (ImageLimit(DTCM_DATA)) FILL 0 NOCOMPRESS (AlignExpr(ImageLength(DTCM_DATA), 8) - ImageLength(DTCM_DATA)) + { + } + + DTCM_BSS (ImageLimit(DTCM_PAD)) UNINIT NOCOMPRESS (DTCM_LENGTH - ImageLength(DTCM_DATA) - ImageLength(DTCM_PAD)) + { + ; .bss prefix is required for AC6 to not create a load image data for this section. + ; Only .bss prefixed sections can be ZI. + ; Only ZI sections with UNINIT can be uninitialized. + *(.bss.dtcm_bss) + } + + ; The required minimum ending alignment is an 8 byte boundary for ECC compatibility. + ; There is no way to control the ending alignment of DTCM_BSS, so this dedicated section acts as padding and as the true execution section limit of DTCM_BSS. + DTCM_BSS_PAD (ImageLimit(DTCM_BSS)) EMPTY NOCOMPRESS (AlignExpr(ImageLength(DTCM_BSS), 8) - ImageLength(DTCM_BSS)) + { + } + +#ifndef DTCM_NS_START +#define DTCM_NS_START AlignExpr(+0, 8192) +#endif + __tz_DTCM_N DTCM_NS_START ALIGN 8 EMPTY 0 + { + } + + ScatterAssert((DTCM_START AND 0xF) == 0) + ScatterAssert((DTCM_LENGTH AND 0x7) == 0) + ScatterAssert(((LoadLength(DTCM_DATA) + LoadLength(DTCM_PAD)) AND 0x7) == 0) + ScatterAssert(((ImageLength(DTCM_BSS) + ImageLength(DTCM_BSS_PAD)) AND 0x7) == 0) + ScatterAssert(LoadLimit(DTCM_DATA) == LoadBase(DTCM_PAD)) + ScatterAssert(LoadLimit(DTCM_PAD) == LoadBase(DTCM_BSS)) + ScatterAssert(LoadLimit(DTCM_BSS) == LoadBase(DTCM_BSS_PAD)) + ScatterAssert(ImageLimit(DTCM_DATA) == ImageBase(DTCM_PAD)) + ScatterAssert(ImageLimit(DTCM_PAD) == ImageBase(DTCM_BSS)) + ScatterAssert(ImageLimit(DTCM_BSS) == ImageBase(DTCM_BSS_PAD)) + +#endif +} + +LOAD_REGION_NSC_FLASH FLASH_NSC_START +{ + __FLASH_NSC_START FLASH_NSC_START EMPTY 0 + { + } + + EXEC_NSCR FLASH_NSC_START FIXED + { + *(Veneer$$CMSE) + } + + __tz_FLASH_N FLASH_NS_START EMPTY 0 + { + } +} + +#if ID_CODE_OVERLAP == 0 + +#if ID_CODE_LENGTH != 0 +LOAD_REGION_ID_CODE ID_CODE_START ID_CODE_LENGTH +{ + __tz_ID_CODE_S ID_CODE_START EMPTY 0 + { + } + + ; Set this symbol to the same value as __tz_ID_CODE_S so the RA configuration tool does not split the ID_CODE + ; memory region between TrustZone projects. + __tz_ID_CODE_N +0 EMPTY 0 + { + } + + ID_CODE +0 FIXED + { + *(.id_code*) + } +} +#else +LOAD_REGION_ID_CODE ID_CODE_START 4 +{ + __tz_ID_CODE_S ID_CODE_START EMPTY 0 + { + } + + __tz_ID_CODE_N +0 EMPTY 0 + { + } +} +#endif + +#endif + +#if OPTION_SETTING_LENGTH != 0 +LOAD_REGION_OPTION_SETTING OPTION_SETTING_START OPTION_SETTING_LENGTH +{ + __tz_OPTION_SETTING_S OPTION_SETTING_START EMPTY 0 + { + } + +#ifndef PROJECT_NONSECURE + OFS0 OPTION_SETTING_START + 0 FIXED + { + *(.option_setting_ofs0) + } + + UNUSED_0 (ImageBase(OFS0)+ImageLength(OFS0)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x04 - (ImageBase(OFS0)+ImageLength(OFS0))) + { + + } + + OFS2 OPTION_SETTING_START + 0x04 FIXED + { + *(.option_setting_ofs2) + } + + UNUSED_1 (ImageBase(OFS2)+ImageLength(OFS2)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x10 - (ImageBase(OFS2)+ImageLength(OFS2))) + { + + } + + DUALSEL OPTION_SETTING_START + 0x10 FIXED + { + *(.option_setting_dualsel) + } + +#if ID_CODE_OVERLAP == 0 + + UNUSED_2 (ImageBase(DUALSEL)+ImageLength(DUALSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x34 - (ImageBase(DUALSEL)+ImageLength(DUALSEL))) + { + + } + +#else + + UNUSED_BEFORE_ID_CODE (ImageBase(DUALSEL)+ImageLength(DUALSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x20 - (ImageBase(DUALSEL)+ImageLength(DUALSEL))) + { + + } + + __tz_ID_CODE_S ID_CODE_START EMPTY 0 + { + } + + ; Set this symbol to the same value as __tz_ID_CODE_S so the RA configuration tool does not split the ID_CODE + ; memory region between TrustZone projects. + __tz_ID_CODE_N +0 EMPTY 0 + { + } + + ID_CODE ID_CODE_START FIXED + { + *(.id_code*) + } + + UNUSED_AFTER_ID_CODE (ID_CODE_START + ID_CODE_LENGTH) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x34 - (ID_CODE_START + ID_CODE_LENGTH) ) + { + + } + +#endif + + SAS OPTION_SETTING_START + 0x34 FIXED + { + *(.option_setting_sas) + } + + UNUSED_3 (ImageBase(SAS)+ImageLength(SAS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS0) + 0x80 - (ImageBase(SAS)+ImageLength(SAS))) + { + + } + + __tz_OPTION_SETTING_N OPTION_SETTING_START_NS EMPTY 0 + { + } + +#else + + __tz_OPTION_SETTING_N OPTION_SETTING_START EMPTY 0 + { + } + + OFS1 OPTION_SETTING_START FIXED + { + *(.option_setting_ofs1) + } + + UNUSED_4 (ImageBase(OFS1)+ImageLength(OFS1)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x04 - (ImageBase(OFS1)+ImageLength(OFS1))) + { + + } + + OFS3 OPTION_SETTING_START + 0x04 FIXED + { + *(.option_setting_ofs3) + } + + UNUSED_5 (ImageBase(OFS3)+ImageLength(OFS3)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x10 - (ImageBase(OFS3)+ImageLength(OFS3))) + { + + } + + BANKSEL OPTION_SETTING_START + 0x10 FIXED + { + *(.option_setting_banksel) + } + + UNUSED_6 (ImageBase(BANKSEL)+ImageLength(BANKSEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x40 - (ImageBase(BANKSEL)+ImageLength(BANKSEL))) + { + + } + + BPS OPTION_SETTING_START + 0x40 FIXED + { + *(.option_setting_bps0) + *(.option_setting_bps1) + *(.option_setting_bps2) + *(.option_setting_bps3) + } + + UNUSED_7 (ImageBase(BPS)+ImageLength(BPS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x60 - (ImageBase(BPS)+ImageLength(BPS))) + { + + } + + PBPS OPTION_SETTING_START + 0x60 FIXED + { + *(.option_setting_pbps0) + *(.option_setting_pbps1) + *(.option_setting_pbps2) + *(.option_setting_pbps3) + } + + UNUSED_8 (ImageBase(PBPS)+ImageLength(PBPS)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1) + 0x80 - (ImageBase(PBPS)+ImageLength(PBPS))) + { + + } +#endif + +} + +#if OPTION_SETTING_S_LENGTH != 0 +LOAD_REGION_OPTION_SETTING_S OPTION_SETTING_S_START OPTION_SETTING_S_LENGTH +{ + __tz_OPTION_SETTING_S_S OPTION_SETTING_S_START EMPTY 0 + { + } + +#ifndef PROJECT_NONSECURE + + OFS1_SEC OPTION_SETTING_S_START + 0 FIXED + { + *(.option_setting_ofs1_sec) + } + + UNUSED_7 (ImageBase(OFS1_SEC)+ImageLength(OFS1_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x04 - (ImageBase(OFS1_SEC)+ImageLength(OFS1_SEC))) + { + + } + + OFS3_SEC OPTION_SETTING_S_START + 0x04 FIXED + { + *(.option_setting_ofs3_sec) + } + + UNUSED_8 (ImageBase(OFS3_SEC)+ImageLength(OFS3_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x10 - (ImageBase(OFS3_SEC)+ImageLength(OFS3_SEC))) + { + + } + + BANKSEL_SEC OPTION_SETTING_S_START + 0x10 FIXED + { + *(.option_setting_banksel_sec) + } + + UNUSED_9 (ImageBase(BANKSEL_SEC)+ImageLength(BANKSEL_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x40 - (ImageBase(BANKSEL_SEC)+ImageLength(BANKSEL_SEC))) + { + + } + + BPS_SEC OPTION_SETTING_S_START + 0x40 FIXED + { + *(.option_setting_bps_sec0) + *(.option_setting_bps_sec1) + *(.option_setting_bps_sec2) + *(.option_setting_bps_sec3) + } + + UNUSED_10 (ImageBase(BPS_SEC)+ImageLength(BPS_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x60 - (ImageBase(BPS_SEC)+ImageLength(BPS_SEC))) + { + + } + + PBPS_SEC OPTION_SETTING_S_START + 0x60 FIXED + { + *(.option_setting_pbps_sec0) + *(.option_setting_pbps_sec1) + *(.option_setting_pbps_sec2) + *(.option_setting_pbps_sec3) + } + + UNUSED_11 (ImageBase(PBPS_SEC)+ImageLength(PBPS_SEC)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x80 - (ImageBase(PBPS_SEC)+ImageLength(PBPS_SEC))) + { + + } + + OFS1_SEL OPTION_SETTING_S_START + 0x80 FIXED + { + *(.option_setting_ofs1_sel) + } + + UNUSED_12 (ImageBase(OFS1_SEL)+ImageLength(OFS1_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x84 - (ImageBase(OFS1_SEL)+ImageLength(OFS1_SEL))) + { + + } + + OFS3_SEL OPTION_SETTING_S_START + 0x84 FIXED + { + *(.option_setting_ofs3_sel) + } + + UNUSED_13 (ImageBase(OFS3_SEL)+ImageLength(OFS3_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x90 - (ImageBase(OFS3_SEL)+ImageLength(OFS3_SEL))) + { + + } + + BANKSEL_SEL OPTION_SETTING_S_START + 0x90 FIXED + { + *(.option_setting_banksel_sel) + } + + UNUSED_14 (ImageBase(BANKSEL_SEL)+ImageLength(BANKSEL_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0xC0 - (ImageBase(BANKSEL_SEL)+ImageLength(BANKSEL_SEL))) + { + + } + + BPS_SEL OPTION_SETTING_S_START + 0xC0 FIXED + { + *(.option_setting_bps_sel0) + *(.option_setting_bps_sel1) + *(.option_setting_bps_sel2) + *(.option_setting_bps_sel3) + } + + UNUSED_15 (ImageBase(BPS_SEL)+ImageLength(BPS_SEL)) FIXED FILL 0xFFFFFFFF (ImageBase(OFS1_SEC) + 0x100 - (ImageBase(BPS_SEL)+ImageLength(BPS_SEL))) + { + + } + +#endif + + __tz_OPTION_SETTING_S_N +0 EMPTY 0 + { + } +} +#endif +#endif +#if OPTION_SETTING_DATA_FLASH_S_LENGTH != 0 +LOAD_REGION_OPTION_SETTING_DATA_FLASH_S OPTION_SETTING_DATA_FLASH_S_START OPTION_SETTING_DATA_FLASH_S_LENGTH +{ + __tz_OPTION_SETTING_DATA_FLASH_S_S OPTION_SETTING_DATA_FLASH_S_START EMPTY 0 + { + } + +#ifndef PROJECT_NONSECURE + FSBLCTRL0 OPTION_SETTING_DATA_FLASH_S_START + 0x0 FIXED + { + *(.option_setting_data_flash_fsblctrl0) + } + + UNUSED_16 (ImageBase(FSBLCTRL0)+ImageLength(FSBLCTRL0)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x04 - (ImageBase(FSBLCTRL0)+ImageLength(FSBLCTRL0))) + { + } + + FSBLCTRL1 OPTION_SETTING_DATA_FLASH_S_START + 0x04 FIXED + { + *(.option_setting_data_flash_fsblctrl1) + } + + UNUSED_17 (ImageBase(FSBLCTRL1)+ImageLength(FSBLCTRL1)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x08 - (ImageBase(FSBLCTRL1)+ImageLength(FSBLCTRL1))) + { + } + + FSBLCTRL2 OPTION_SETTING_DATA_FLASH_S_START + 0x08 FIXED + { + *(.option_setting_data_flash_fsblctrl2) + } + + UNUSED_18 (ImageBase(FSBLCTRL2)+ImageLength(FSBLCTRL2)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x0C - (ImageBase(FSBLCTRL2)+ImageLength(FSBLCTRL2))) + { + } + + SACC0 OPTION_SETTING_DATA_FLASH_S_START + 0x0C FIXED + { + *(.option_setting_data_flash_sacc0) + } + + UNUSED_19 (ImageBase(SACC0)+ImageLength(SACC0)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x010 - (ImageBase(SACC0)+ImageLength(SACC0))) + { + } + + SACC1 OPTION_SETTING_DATA_FLASH_S_START + 0x10 FIXED + { + *(.option_setting_data_flash_sacc1) + } + + UNUSED_20 (ImageBase(SACC1)+ImageLength(SACC1)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x14 - (ImageBase(SACC1)+ImageLength(SACC1))) + { + } + + SAMR OPTION_SETTING_DATA_FLASH_S_START + 0x14 FIXED + { + *(.option_setting_data_flash_samr) + } + + UNUSED_21 (ImageBase(SAMR)+ImageLength(SAMR)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x2E0 - (ImageBase(SAMR)+ImageLength(SAMR))) + { + } + + HOEMRTPK OPTION_SETTING_DATA_FLASH_S_START + 0x2E0 FIXED + { + *(.option_setting_data_flash_hoemrtpk) + } + + UNUSED_22 (ImageBase(HOEMRTPK)+ImageLength(HOEMRTPK)) FIXED FILL 0xFFFFFFFF (ImageBase(FSBLCTRL0) + 0x300 - (ImageBase(HOEMRTPK)+ImageLength(HOEMRTPK))) + { + } + +#endif + + __tz_OPTION_SETTING_DATA_FLASH_S_N +0 EMPTY 0 + { + } + +} +#endif + +LOAD_REGION_DATA_FLASH DATA_FLASH_START DATA_FLASH_LENGTH +{ + __tz_DATA_FLASH_S DATA_FLASH_S_START EMPTY 0 + { + } + DATA_FLASH +0 + { + *(.data_flash*) + } + __tz_DATA_FLASH_N DATA_FLASH_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_QSPI_FLASH QSPI_FLASH_START QSPI_FLASH_PRV_LENGTH +{ + __tz_QSPI_FLASH_S QSPI_FLASH_S_START EMPTY 0 + { + } + QSPI_FLASH +0 FIXED + { + *(.qspi_flash*) + *(.code_in_qspi*) + } + __tz_QSPI_FLASH_N QSPI_FLASH_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_OSPI_DEVICE_0 OSPI_DEVICE_0_START OSPI_DEVICE_0_PRV_LENGTH +{ + __tz_OSPI_DEVICE_0_S OSPI_DEVICE_0_S_START EMPTY 0 + { + } + OSPI_DEVICE_0 +0 FIXED + { + *(.ospi_device_0*) + *(.code_in_ospi_device_0*) + } + __tz_OSPI_DEVICE_0_N OSPI_DEVICE_0_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_OSPI_DEVICE_1 OSPI_DEVICE_1_START OSPI_DEVICE_1_PRV_LENGTH +{ + __tz_OSPI_DEVICE_1_S OSPI_DEVICE_1_S_START EMPTY 0 + { + } + OSPI_DEVICE_1 +0 FIXED + { + *(.ospi_device_1*) + *(.code_in_ospi_device_1*) + } + __tz_OSPI_DEVICE_1_N OSPI_DEVICE_1_NS_START EMPTY 0 + { + } +} + +LOAD_REGION_SDRAM SDRAM_START SDRAM_LENGTH +{ + __tz_SDRAM_S SDRAM_S_START EMPTY 0 + { + } + + SDRAM +0 FIXED + { + *(.sdram*) + *(.frame*) + } + + NOCACHE_SDRAM +0 UNINIT NOCOMPRESS ALIGN 32 + { + *(.bss.nocache_sdram) + } + + ; The required minimum ending alignment is a 32 byte boundary for Armv8-M MPU requirements. + ; There is no way to control the ending alignment of NOCACHE_SDRAM, so this dedicated section acts as padding and as the true execution section limit of NOCACHE_SDRAM. + NOCACHE_SDRAM_PAD (ImageLimit(NOCACHE_SDRAM)) EMPTY NOCOMPRESS (AlignExpr(ImageLength(NOCACHE_SDRAM), 32) - ImageLength(NOCACHE_SDRAM)) + { + } + + __tz_SDRAM_N SDRAM_NS_START EMPTY 0 + { + } +} \ No newline at end of file diff --git a/bsp/renesas/ra8d1-ek/script/memory_regions.ld b/bsp/renesas/ra8d1-ek/script/memory_regions.ld new file mode 100644 index 0000000000..268ba3f0fd --- /dev/null +++ b/bsp/renesas/ra8d1-ek/script/memory_regions.ld @@ -0,0 +1,28 @@ +/* generated memory regions file - do not edit */ +RAM_START = 0x22000000; +RAM_LENGTH = 0xE0000; +FLASH_START = 0x02000000; +FLASH_LENGTH = 0x1F8000; +DATA_FLASH_START = 0x27000000; +DATA_FLASH_LENGTH = 0x3000; +OPTION_SETTING_START = 0x0300A100; +OPTION_SETTING_LENGTH = 0x100; +OPTION_SETTING_S_START = 0x0300A200; +OPTION_SETTING_S_LENGTH = 0x100; +ID_CODE_START = 0x00000000; +ID_CODE_LENGTH = 0x0; +SDRAM_START = 0x68000000; +SDRAM_LENGTH = 0x8000000; +QSPI_FLASH_START = 0x60000000; +QSPI_FLASH_LENGTH = 0x0; +OSPI_DEVICE_0_START = 0x80000000; +OSPI_DEVICE_0_LENGTH = 0x10000000; +OSPI_DEVICE_1_START = 0x90000000; +OSPI_DEVICE_1_LENGTH = 0x10000000; +ITCM_START = 0x00000000; +ITCM_LENGTH = 0x10000; +DTCM_START = 0x20000000; +DTCM_LENGTH = 0x10000; +NS_OFFSET_START = 0x10000000; +NS_OFFSET_LENGTH = 0x0; +RAM_NS_BUFFER_LENGTH = 0x3080; diff --git a/bsp/renesas/ra8d1-ek/src/hal_entry.c b/bsp/renesas/ra8d1-ek/src/hal_entry.c new file mode 100644 index 0000000000..be357c984e --- /dev/null +++ b/bsp/renesas/ra8d1-ek/src/hal_entry.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-12-17 Rbb666 first version + */ + +#include +#include "hal_data.h" +#include + +#define DRV_DEBUG +#define LOG_TAG "main" +#include + +#define LED_PIN BSP_IO_PORT_06_PIN_00 /* Onboard LED pins */ + +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED_PIN, PIN_HIGH); + rt_thread_mdelay(500); + rt_pin_write(LED_PIN, PIN_LOW); + rt_thread_mdelay(500); + } +} + +#ifdef BSP_USING_SDRAM + +#ifdef RT_USING_MEMHEAP_AS_HEAP + struct rt_memheap system_heap; +#endif + +#include "ra/board/ra8d1_ek/board_sdram.h" +static int SDRAM_Init(void) +{ + bsp_sdram_init(); + + LOG_D("sdram init success, mapped at 0x%X, size is %d bytes, data width is %d", 0x68000000, BSP_USING_SDRAM_SIZE, 16); +#ifdef RT_USING_MEMHEAP_AS_HEAP + /* If RT_USING_MEMHEAP_AS_HEAP is enabled, SDRAM is initialized to the heap */ + rt_memheap_init(&system_heap, "sdram", (void *)0x68000000, BSP_USING_SDRAM_SIZE); +#endif + return RT_EOK; +} +INIT_BOARD_EXPORT(SDRAM_Init); +#endif diff --git a/bsp/renesas/ra8d1-ek/template.uvoptx b/bsp/renesas/ra8d1-ek/template.uvoptx new file mode 100644 index 0000000000..64ca7dbfe8 --- /dev/null +++ b/bsp/renesas/ra8d1-ek/template.uvoptx @@ -0,0 +1,213 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + Target 1 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 1 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\Listings\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 4 + + + + + + + + + + + Segger\JL2CM3.dll + + + + 0 + JL2CM3 + -U -O14 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M.FLM -FS02000000 -FL01F8000 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FF1RA8D1_DATA_C2M.FLM -FS127000000 -FL13000 -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FF2RA8D1_CCONF.FLM -FS2300A100 -FL2200 -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + 0 + UL2V8M + UL2V8M(-S0 -C0 -P0 ) -FN3 -FC2000 -FD22000000 -FF0RA8D1_2M -FF1RA8D1_DATA_C2M -FF2RA8D1_CCONF -FL01F8000 -FL13000 -FL2200 -FS02000000 -FS127000000 -FS2300A100 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM) + + + + + 0 + + + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Source Group 1 + 0 + 0 + 0 + 0 + + + + :Renesas RA Smart Configurator:Common Sources + 0 + 0 + 0 + 0 + + 2 + 1 + 1 + 0 + 0 + 0 + .\src\hal_entry.c + hal_entry.c + 0 + 0 + + + + + ::Flex Software + 0 + 0 + 0 + 1 + + +
diff --git a/bsp/renesas/ra8d1-ek/template.uvprojx b/bsp/renesas/ra8d1-ek/template.uvprojx new file mode 100644 index 0000000000..cd4b6b73fa --- /dev/null +++ b/bsp/renesas/ra8d1-ek/template.uvprojx @@ -0,0 +1,424 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x4 + ARM-ADS + 6190000::V6.19::ARMCLANG + 1 + + + R7FA8D1BH + Renesas + Renesas.RA_DFP.5.1.0 + https://www2.renesas.eu/Keil_MDK_Packs/ + IRAM(0x22000000,0xE0000) IRAM2(0x0,0x10000) IROM(0x02000000,0x001F8000) XRAM(0x20000000,0x10000) CPUTYPE("Cortex-M85") FPU3(DFPU) DSP TZ MVE(FP) PACBTI CLOCK(12000000) ELITTLE + + + UL2V8M(-S0 -C0 -P0 -FD22000000 -FC2000 -FN3 -FF0RA8D1_2M -FS02000000 -FL01F8000 -FF1RA8D1_DATA_C2M -FS127000000 -FL13000 -FF2RA8D1_CCONF -FS2300A100 -FL2200 -FP0($$Device:R7FA8D1BH$Flash\RA8D1_2M.FLM) -FP1($$Device:R7FA8D1BH$Flash\RA8D1_DATA_C2M.FLM) -FP2($$Device:R7FA8D1BH$Flash\RA8D1_CCONF.FLM)) + 0 + + + + + + + + + + + $$Device:R7FA8D1BH$SVD\R7FA8D1BH.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\Objects\ + rtthread + 1 + 0 + 1 + 1 + 1 + .\Listings\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + cmd /c "start "Renesas" /w cmd /c ""$Slauncher\rasc_launcher.bat" "$Prasc_version.txt" -nosplash --launcher.suppressErrors --gensmartbundle --compiler ARMv6 "$Pconfiguration.xml" "$L%L" 2> "%%TEMP%%\rasc_stderr.out""" + + 0 + 0 + 2 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + + + + + SARMV8M.DLL + -MPU -MVE -PACBTI + TCM.DLL + -pCM85 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 0 + 1 + 4102 + + 1 + BIN\UL2V8M.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M85" + + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 3 + 2 + 0 + 0 + 1 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x20000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x2000000 + 0x1f8000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x22000000 + 0xe0000 + + + 0 + 0x0 + 0x10000 + + + + + + 1 + 6 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + + -Wno-license-management -Wuninitialized -Wall -Wmissing-declarations -Wpointer-arith -Waggregate-return -Wfloat-equal + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + + + + .\script\fsp.scat + + + --entry=Reset_Handler --no_startup --via=".\script\ac6\fsp_keep.via" + + 6319,6314 + + + + + + Source Group 1 + + + :Renesas RA Smart Configurator:Common Sources + + + hal_entry.c + 1 + .\src\hal_entry.c + + + + + ::Flex Software + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/bsp/renesas/ra8m1-ek/README.md b/bsp/renesas/ra8m1-ek/README.md index fbe7c583ce..d65b45e491 100644 --- a/bsp/renesas/ra8m1-ek/README.md +++ b/bsp/renesas/ra8m1-ek/README.md @@ -151,7 +151,7 @@ void hal_entry(void) **资料及文档** -- [开发板官网主页]([EK-RA8M1 - RA8M1 MCU 群组评估套件 | Renesas](https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8m1-evaluation-kit-ra8m1-mcu-group)) +- [开发板官网主页](https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8m1-evaluation-kit-ra8m1-mcu-group) - [开发板用户手册](https://www.renesas.cn/cn/zh/document/mat/ek-ra8m1-users-manual?r=25448206) - [瑞萨RA MCU 基础知识](https://www2.renesas.cn/cn/zh/document/gde/1520091)